summaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/atspi2/atspi/atspi-constants.h118
-rw-r--r--src/3rdparty/dbus-ifaces/org.freedesktop.Notifications.xml37
-rw-r--r--src/3rdparty/dbus-ifaces/org.kde.StatusNotifierItem.xml96
-rw-r--r--src/3rdparty/des/des.cpp602
-rw-r--r--src/3rdparty/forkfd/forkfd.c655
-rw-r--r--src/3rdparty/forkfd/forkfd.h71
-rw-r--r--src/3rdparty/forkfd/forkfd_gcc.h76
-rw-r--r--src/3rdparty/harfbuzz-ng/NEWS135
-rw-r--r--src/3rdparty/harfbuzz-ng/README3
-rw-r--r--src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro1
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-atomic-private.hh1
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-blob.cc9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer-private.hh7
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-buffer.cc6
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-common.cc12
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-common.h24
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-face-private.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-face.cc8
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-font.cc4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-mutex-private.hh9
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-object-private.hh107
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-open-file-private.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-open-type-private.hh122
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc205
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-hhea-table.hh65
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-hmtx-table.hh37
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh63
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh18
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh91
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout-private.hh18
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-fallback.hh148
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic.cc44
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hangul.cc11
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh2570
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc36
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic.cc29
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc18
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-private.hh7
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-fallback.cc2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape-normalize.cc2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc8
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-private.hh139
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-set-private.hh2
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc53
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shape.cc108
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-shaper.cc6
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-unicode.cc4
-rw-r--r--src/3rdparty/harfbuzz-ng/src/hb-version.h4
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/Accessible2.h585
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/Accessible2_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/Accessible2_p.c1196
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleAction.h220
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_p.c557
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication.h188
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_p.c420
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent.h185
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_p.c360
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText.h235
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_p.c579
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleEventID.h105
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink.h252
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_p.c1113
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext.h349
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_p.c454
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleImage.h185
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_p.c414
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation.h244
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_p.c520
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleRole.h118
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleStates.h95
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable.h497
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2.h367
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_p.c1099
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell.h246
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_p.c634
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_p.c1543
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleText.h435
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleText_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleText_p.c1203
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleValue.h188
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_p.c1029
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/IA2CommonTypes.h102
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.h103
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.tlbbin1236 -> 0 bytes
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/dlldata.c64
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/ia2_api_all.h4667
-rw-r--r--src/3rdparty/iaccessible2/generated/amd64/ia2_api_all_i.c133
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/Accessible2.h585
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/Accessible2_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/Accessible2_p.c1190
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleAction.h220
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleAction_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleAction_p.c563
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleApplication.h188
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_p.c428
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleComponent.h185
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_p.c369
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText.h235
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_p.c584
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleEventID.h105
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink.h252
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_p.c1191
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext.h349
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_p.c463
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleImage.h185
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleImage_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleImage_p.c423
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleRelation.h244
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_p.c527
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleRole.h118
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleStates.h95
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable.h497
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable2.h367
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_p.c1091
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell.h246
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_p.c637
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleTable_p.c1526
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleText.h435
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleText_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleText_p.c1196
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleValue.h188
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleValue_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/AccessibleValue_p.c1105
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/IA2CommonTypes.h102
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.h103
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.tlbbin1236 -> 0 bytes
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary_i.c79
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/dlldata.c64
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/ia2_api_all.h4667
-rw-r--r--src/3rdparty/iaccessible2/generated/x86/ia2_api_all_i.c133
-rw-r--r--src/3rdparty/iaccessible2/iaccessible2.pri78
-rw-r--r--src/3rdparty/iaccessible2/idl/Accessible2.idl679
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleAction.idl194
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleApplication.idl121
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleComponent.idl124
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl259
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleEventID.idl230
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl187
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl123
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleImage.idl111
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleRelation.idl197
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleRole.idl293
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleStates.idl209
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleTable.idl551
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleTable2.idl375
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl194
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleText.idl674
-rw-r--r--src/3rdparty/iaccessible2/idl/AccessibleValue.idl136
-rw-r--r--src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl191
-rw-r--r--src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl94
-rw-r--r--src/3rdparty/iaccessible2/idl/Makefile47
-rw-r--r--src/3rdparty/iaccessible2/idl/README3
-rw-r--r--src/3rdparty/iaccessible2/idl/ia2_api_all.idl5473
-rw-r--r--src/3rdparty/sqlite/shell.c918
-rw-r--r--src/3rdparty/sqlite/sqlite3.c14536
-rw-r--r--src/3rdparty/sqlite/sqlite3.h935
182 files changed, 29208 insertions, 47441 deletions
diff --git a/src/3rdparty/atspi2/atspi/atspi-constants.h b/src/3rdparty/atspi2/atspi/atspi-constants.h
index 7a55169f1f..3675bcca1f 100644
--- a/src/3rdparty/atspi2/atspi/atspi-constants.h
+++ b/src/3rdparty/atspi2/atspi/atspi-constants.h
@@ -190,7 +190,7 @@ typedef enum {
* enumeration.
*
* Enumeration used by #AtspiMatchRule to specify
- * how to interpret #AtspiAccesible objects.
+ * how to interpret #AtspiAccessible objects.
*
**/
typedef enum {
@@ -331,6 +331,8 @@ typedef enum {
* #atspi_text_get_text_at_offset, #atspi_text_get_text_after_offset, and
* #atspi_text_get_text_before_offset.
*
+ * This enumerationis deprecated since 2.9.90 and should not be used. Use
+ * AtspiTextGranularity with #atspi_text_get_string_at_offset instead.
**/
typedef enum {
ATSPI_TEXT_BOUNDARY_CHAR,
@@ -343,6 +345,34 @@ typedef enum {
} AtspiTextBoundaryType;
/**
+ *AtspiTextGranularity:
+ *@ATSPI_TEXT_GRANULARITY_CHAR: Granularity is defined by the boundaries between characters
+ * (including non-printing characters)
+ *@ATSPI_TEXT_GRANULARITY_WORD: Granularity is defined by the boundaries of a word,
+ * starting at the beginning of the current word and finishing at the beginning of
+ * the following one, if present.
+ *@ATSPI_TEXT_GRANULARITY_SENTENCE: Granularity is defined by the boundaries of a sentence,
+ * starting at the beginning of the current sentence and finishing at the beginning of
+ * the following one, if present.
+ *@ATSPI_TEXT_GRANULARITY_LINE: Granularity is defined by the boundaries of a line,
+ * starting at the beginning of the current line and finishing at the beginning of
+ * the following one, if present.
+ *@ATSPI_TEXT_GRANULARITY_PARAGRAPH: Granularity is defined by the boundaries of a paragraph,
+ * starting at the beginning of the current paragraph and finishing at the beginning of
+ * the following one, if present.
+ *
+ * Text granularity types used for specifying the granularity of the region of
+ * text we are interested in.
+ **/
+typedef enum {
+ ATSPI_TEXT_GRANULARITY_CHAR,
+ ATSPI_TEXT_GRANULARITY_WORD,
+ ATSPI_TEXT_GRANULARITY_SENTENCE,
+ ATSPI_TEXT_GRANULARITY_LINE,
+ ATSPI_TEXT_GRANULARITY_PARAGRAPH
+} AtspiTextGranularity;
+
+/**
* ATSPI_TEXT_BOUNDARY_TYPE_COUNT:
*
* One higher than the highest valid value of #AtspiTextBoundaryType.
@@ -523,6 +553,14 @@ typedef enum {
* @ATSPI_STATE_VISITED: This state indicates that the object (typically a
* hyperlink) has already been activated or invoked, with the result that
* some backing data has been downloaded or rendered.
+ *@ATSPI_STATE_CHECKABLE: Indicates this object has the potential to
+ * be checked, such as a checkbox or toggle-able table cell. @Since:
+ * 2.12
+ *@ATSPI_STATE_HAS_POPUP: Indicates that the object has a popup
+ * context menu or sub-level menu which may or may not be
+ * showing. This means that activation renders conditional content.
+ * Note that ordinary tooltips are not considered popups in this
+ * context. @Since: 2.12
* @ATSPI_STATE_LAST_DEFINED: This value of the enumeration should not be used
* as a parameter, it indicates the number of items in the #AtspiStateType
* enumeration.
@@ -574,6 +612,8 @@ typedef enum {
ATSPI_STATE_SELECTABLE_TEXT,
ATSPI_STATE_IS_DEFAULT,
ATSPI_STATE_VISITED,
+ ATSPI_STATE_CHECKABLE,
+ ATSPI_STATE_HAS_POPUP,
ATSPI_STATE_LAST_DEFINED,
} AtspiStateType;
@@ -639,19 +679,20 @@ typedef enum {
* @ATSPI_KEY_PRESS: Emulates the pressing of a hardware keyboard key.
* @ATSPI_KEY_RELEASE: Emulates the release of a hardware keyboard key.
* @ATSPI_KEY_PRESSRELEASE: Emulates the pressing and immediate releasing
- * ofa hardware keyboard key.
+ * of a hardware keyboard key.
* @ATSPI_KEY_SYM: A symbolic key event is generated, without specifying a
* hardware key. Note: if the keysym is not present in the current keyboard
* map, the #AtspiDeviceEventController instance has a limited ability to
* generate such keysyms on-the-fly. Reliability of GenerateKeyboardEvent
* calls using out-of-keymap keysyms will vary from system to system, and on
- * the number of different out-of-keymap being generated in quick succession.
+ * the number of different out-of-keymap keysyms being generated in quick
+ * succession.
* In practice this is rarely significant, since the keysyms of interest to
* AT clients and keyboard emulators are usually part of the current keymap,
- * i.e. present on the system keyboard for the current locale (even if a
- * physical hardware keyboard is not connected.
+ * i.e., present on the system keyboard for the current locale (even if a
+ * physical hardware keyboard is not connected).
* @ATSPI_KEY_STRING: A string is converted to its equivalent keyboard events
- * and emitted. If the string consists of complex character or composed
+ * and emitted. If the string consists of complex characters or composed
* characters which are not in the current keymap, string emission is
* subject to the out-of-keymap limitations described for
* @ATSPI_KEY_SYM. In practice this limitation primarily effects
@@ -1000,7 +1041,7 @@ typedef enum {
* contains a view of document content. #AtspiDocument frames may occur within
* another #AtspiDocument instance, in which case the second document may be
* said to be embedded in the containing instance. HTML frames are often
- * @ATSPI_ROLE_DOCUMENT_FRAME: Either this object, or a singleton descendant,
+ * ATSPI_ROLE_DOCUMENT_FRAME: Either this object, or a singleton descendant,
* should implement the #AtspiDocument interface.
* @ATSPI_ROLE_HEADING: The object serves as a heading for content which
* follows it in a document. The 'heading level' of the heading, if
@@ -1064,6 +1105,46 @@ typedef enum {
* particular application.
* @ATSPI_ROLE_INFO_BAR: An object designed to present a message to the user
* within an existing window.
+ *@ATSPI_ROLE_LEVEL_BAR: A bar that serves as a level indicator to, for
+ * instance, show the strength of a password or the state of a battery.
+ * Since: 2.8
+ *@ATSPI_ROLE_TITLE_BAR: A bar that serves as the title of a window or a
+ * dialog. @Since: 2.12
+ *@ATSPI_ROLE_BLOCK_QUOTE: An object which contains a text section
+ * that is quoted from another source. @Since: 2.12
+ *@ATSPI_ROLE_AUDIO: An object which represents an audio
+ * element. @Since: 2.12
+ *@ATSPI_ROLE_VIDEO: An object which represents a video
+ * element. @Since: 2.12
+ *@ATSPI_ROLE_DEFINITION: A definition of a term or concept. @Since: 2.12
+ *@ATSPI_ROLE_ARTICLE: A section of a page that consists of a
+ * composition that forms an independent part of a document, page, or
+ * site. Examples: A blog entry, a news story, a forum post. @Since:
+ * 2.12
+ *@ATSPI_ROLE_LANDMARK: A region of a web page intended as a
+ * navigational landmark. This is designed to allow Assistive
+ * Technologies to provide quick navigation among key regions within a
+ * document. @Since: 2.12
+ *@ATSPI_ROLE_LOG: A text widget or container holding log content, such
+ * as chat history and error logs. In this role there is a
+ * relationship between the arrival of new items in the log and the
+ * reading order. The log contains a meaningful sequence and new
+ * information is added only to the end of the log, not at arbitrary
+ * points. @Since: 2.12
+ *@ATSPI_ROLE_MARQUEE: A container where non-essential information
+ * changes frequently. Common usages of marquee include stock tickers
+ * and ad banners. The primary difference between a marquee and a log
+ * is that logs usually have a meaningful order or sequence of
+ * important content changes. @Since: 2.12
+ *@ATSPI_ROLE_MATH: A text widget or container that holds a mathematical
+ * expression. @Since: 2.12
+ *@ATSPI_ROLE_RATING: A widget whose purpose is to display a rating,
+ * such as the number of stars associated with a song in a media
+ * player. Objects of this role should also implement
+ * AtspiValue. @Since: 2.12
+ *@ATSPI_ROLE_TIMER: An object containing a numerical counter which
+ * indicates an amount of elapsed time from a start point, or the time
+ * remaining until an end point. @Since: 2.12
* @ATSPI_ROLE_LAST_DEFINED: Not a valid role, used for finding end of
* enumeration.
*
@@ -1175,6 +1256,19 @@ typedef enum {
ATSPI_ROLE_IMAGE_MAP,
ATSPI_ROLE_NOTIFICATION,
ATSPI_ROLE_INFO_BAR,
+ ATSPI_ROLE_LEVEL_BAR,
+ ATSPI_ROLE_TITLE_BAR,
+ ATSPI_ROLE_BLOCK_QUOTE,
+ ATSPI_ROLE_AUDIO,
+ ATSPI_ROLE_VIDEO,
+ ATSPI_ROLE_DEFINITION,
+ ATSPI_ROLE_ARTICLE,
+ ATSPI_ROLE_LANDMARK,
+ ATSPI_ROLE_LOG,
+ ATSPI_ROLE_MARQUEE,
+ ATSPI_ROLE_MATH,
+ ATSPI_ROLE_RATING,
+ ATSPI_ROLE_TIMER,
ATSPI_ROLE_LAST_DEFINED,
} AtspiRole;
@@ -1187,8 +1281,8 @@ typedef enum {
typedef enum
{
- ATSPI_CACHE_NONE = 0,
- ATSPI_CACHE_PARENT = 1 << 0,
+ ATSPI_CACHE_NONE = 0,
+ ATSPI_CACHE_PARENT = 1 << 0,
ATSPI_CACHE_CHILDREN = 1 << 1,
ATSPI_CACHE_NAME = 1 << 2,
ATSPI_CACHE_DESCRIPTION = 1 << 3,
@@ -1197,10 +1291,7 @@ typedef enum
ATSPI_CACHE_INTERFACES = 1 << 6,
ATSPI_CACHE_ATTRIBUTES = 1 << 7,
ATSPI_CACHE_ALL = 0x3fffffff,
- ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN |
- ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION |
- ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE |
- ATSPI_CACHE_INTERFACES,
+ ATSPI_CACHE_DEFAULT = ATSPI_CACHE_PARENT | ATSPI_CACHE_CHILDREN | ATSPI_CACHE_NAME | ATSPI_CACHE_DESCRIPTION | ATSPI_CACHE_STATES | ATSPI_CACHE_ROLE | ATSPI_CACHE_INTERFACES,
ATSPI_CACHE_UNDEFINED = 0x40000000,
} AtspiCache;
@@ -1231,6 +1322,7 @@ typedef enum
#define ATSPI_DBUS_INTERFACE_IMAGE "org.a11y.atspi.Image"
#define ATSPI_DBUS_INTERFACE_SELECTION "org.a11y.atspi.Selection"
#define ATSPI_DBUS_INTERFACE_TABLE "org.a11y.atspi.Table"
+#define ATSPI_DBUS_INTERFACE_TABLE_CELL "org.a11y.atspi.TableCell"
#define ATSPI_DBUS_INTERFACE_TEXT "org.a11y.atspi.Text"
#define ATSPI_DBUS_INTERFACE_VALUE "org.a11y.atspi.Value"
#define ATSPI_DBUS_INTERFACE_SOCKET "org.a11y.atspi.Socket"
diff --git a/src/3rdparty/dbus-ifaces/org.freedesktop.Notifications.xml b/src/3rdparty/dbus-ifaces/org.freedesktop.Notifications.xml
new file mode 100644
index 0000000000..62345f2bb3
--- /dev/null
+++ b/src/3rdparty/dbus-ifaces/org.freedesktop.Notifications.xml
@@ -0,0 +1,37 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+ <interface name="org.freedesktop.Notifications">
+ <signal name="NotificationClosed">
+ <arg name="id" type="u" direction="out"/>
+ <arg name="reason" type="u" direction="out"/>
+ </signal>
+ <signal name="ActionInvoked">
+ <arg name="id" type="u" direction="out"/>
+ <arg name="action_key" type="s" direction="out"/>
+ </signal>
+ <method name="Notify">
+ <annotation name="org.qtproject.QtDBus.QtTypeName.In6" value="QVariantMap"/>
+ <arg type="u" direction="out"/>
+ <arg name="app_name" type="s" direction="in"/>
+ <arg name="replaces_id" type="u" direction="in"/>
+ <arg name="app_icon" type="s" direction="in"/>
+ <arg name="summary" type="s" direction="in"/>
+ <arg name="body" type="s" direction="in"/>
+ <arg name="actions" type="as" direction="in"/>
+ <arg name="hints" type="a{sv}" direction="in"/>
+ <arg name="timeout" type="i" direction="in"/>
+ </method>
+ <method name="CloseNotification">
+ <arg name="id" type="u" direction="in"/>
+ </method>
+ <method name="GetCapabilities">
+ <arg type="as" name="caps" direction="out"/>
+ </method>
+ <method name="GetServerInformation">
+ <arg type="s" name="name" direction="out"/>
+ <arg type="s" name="vendor" direction="out"/>
+ <arg type="s" name="version" direction="out"/>
+ <arg type="s" name="spec_version" direction="out"/>
+ </method>
+ </interface>
+</node>
diff --git a/src/3rdparty/dbus-ifaces/org.kde.StatusNotifierItem.xml b/src/3rdparty/dbus-ifaces/org.kde.StatusNotifierItem.xml
new file mode 100644
index 0000000000..aeeb42fa87
--- /dev/null
+++ b/src/3rdparty/dbus-ifaces/org.kde.StatusNotifierItem.xml
@@ -0,0 +1,96 @@
+<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node>
+ <interface name="org.kde.StatusNotifierItem">
+
+ <property name="Category" type="s" access="read"/>
+ <property name="Id" type="s" access="read"/>
+ <property name="Title" type="s" access="read"/>
+ <property name="Status" type="s" access="read"/>
+ <property name="WindowId" type="i" access="read"/>
+
+ <!-- An additional path to add to the theme search path to find the icons specified above. -->
+ <property name="IconThemePath" type="s" access="read"/>
+ <property name="Menu" type="o" access="read"/>
+ <property name="ItemIsMenu" type="b" access="read"/>
+
+
+ <!-- main icon -->
+ <!-- names are preferred over pixmaps -->
+ <property name="IconName" type="s" access="read"/>
+
+ <!--struct containing width, height and image data-->
+ <property name="IconPixmap" type="(iiay)" access="read">
+ <annotation name="org.qtproject.QtDBus.QtTypeName" value="QXdgDBusImageVector"/>
+ </property>
+
+ <property name="OverlayIconName" type="s" access="read"/>
+
+ <property name="OverlayIconPixmap" type="(iiay)" access="read">
+ <annotation name="org.qtproject.QtDBus.QtTypeName" value="QXdgDBusImageVector"/>
+ </property>
+
+
+ <!-- Requesting attention icon -->
+ <property name="AttentionIconName" type="s" access="read"/>
+
+ <!--same definition as image-->
+ <property name="AttentionIconPixmap" type="(iiay)" access="read">
+ <annotation name="org.qtproject.QtDBus.QtTypeName" value="QXdgDBusImageVector"/>
+ </property>
+
+ <property name="AttentionMovieName" type="s" access="read"/>
+
+
+
+ <!-- tooltip data -->
+
+ <!--(iiay) is an image-->
+ <property name="ToolTip" type="(s(iiay)ss)" access="read">
+ <annotation name="org.qtproject.QtDBus.QtTypeName" value="QXdgDBusToolTipStruct"/>
+ </property>
+
+
+ <!-- interaction: the systemtray wants the application to do something -->
+ <method name="ContextMenu">
+ <!-- we're passing the coordinates of the icon, so the app knows where to put the popup window -->
+ <arg name="x" type="i" direction="in"/>
+ <arg name="y" type="i" direction="in"/>
+ </method>
+
+ <method name="Activate">
+ <arg name="x" type="i" direction="in"/>
+ <arg name="y" type="i" direction="in"/>
+ </method>
+
+ <method name="SecondaryActivate">
+ <arg name="x" type="i" direction="in"/>
+ <arg name="y" type="i" direction="in"/>
+ </method>
+
+ <method name="Scroll">
+ <arg name="delta" type="i" direction="in"/>
+ <arg name="orientation" type="s" direction="in"/>
+ </method>
+
+ <!-- Signals: the client wants to change something in the status-->
+ <signal name="NewTitle">
+ </signal>
+
+ <signal name="NewIcon">
+ </signal>
+
+ <signal name="NewAttentionIcon">
+ </signal>
+
+ <signal name="NewOverlayIcon">
+ </signal>
+
+ <signal name="NewToolTip">
+ </signal>
+
+ <signal name="NewStatus">
+ <arg name="status" type="s"/>
+ </signal>
+
+ </interface>
+</node>
diff --git a/src/3rdparty/des/des.cpp b/src/3rdparty/des/des.cpp
deleted file mode 100644
index c1a260bbac..0000000000
--- a/src/3rdparty/des/des.cpp
+++ /dev/null
@@ -1,602 +0,0 @@
-/*
- * Implementation of DES encryption for NTLM
- *
- * Copyright 1997-2005 Simon Tatham.
- *
- * This software is released under the MIT license.
- */
-
-/*
- * Description of DES
- * ------------------
- *
- * Unlike the description in FIPS 46, I'm going to use _sensible_ indices:
- * bits in an n-bit word are numbered from 0 at the LSB to n-1 at the MSB.
- * And S-boxes are indexed by six consecutive bits, not by the outer two
- * followed by the middle four.
- *
- * The DES encryption routine requires a 64-bit input, and a key schedule K
- * containing 16 48-bit elements.
- *
- * First the input is permuted by the initial permutation IP.
- * Then the input is split into 32-bit words L and R. (L is the MSW.)
- * Next, 16 rounds. In each round:
- * (L, R) <- (R, L xor f(R, K[i]))
- * Then the pre-output words L and R are swapped.
- * Then L and R are glued back together into a 64-bit word. (L is the MSW,
- * again, but since we just swapped them, the MSW is the R that came out
- * of the last round.)
- * The 64-bit output block is permuted by the inverse of IP and returned.
- *
- * Decryption is identical except that the elements of K are used in the
- * opposite order. (This wouldn't work if that word swap didn't happen.)
- *
- * The function f, used in each round, accepts a 32-bit word R and a
- * 48-bit key block K. It produces a 32-bit output.
- *
- * First R is expanded to 48 bits using the bit-selection function E.
- * The resulting 48-bit block is XORed with the key block K to produce
- * a 48-bit block X.
- * This block X is split into eight groups of 6 bits. Each group of 6
- * bits is then looked up in one of the eight S-boxes to convert
- * it to 4 bits. These eight groups of 4 bits are glued back
- * together to produce a 32-bit preoutput block.
- * The preoutput block is permuted using the permutation P and returned.
- *
- * Key setup maps a 64-bit key word into a 16x48-bit key schedule. Although
- * the approved input format for the key is a 64-bit word, eight of the
- * bits are discarded, so the actual quantity of key used is 56 bits.
- *
- * First the input key is converted to two 28-bit words C and D using
- * the bit-selection function PC1.
- * Then 16 rounds of key setup occur. In each round, C and D are each
- * rotated left by either 1 or 2 bits (depending on which round), and
- * then converted into a key schedule element using the bit-selection
- * function PC2.
- *
- * That's the actual algorithm. Now for the tedious details: all those
- * painful permutations and lookup tables.
- *
- * IP is a 64-to-64 bit permutation. Its output contains the following
- * bits of its input (listed in order MSB to LSB of output).
- *
- * 6 14 22 30 38 46 54 62 4 12 20 28 36 44 52 60
- * 2 10 18 26 34 42 50 58 0 8 16 24 32 40 48 56
- * 7 15 23 31 39 47 55 63 5 13 21 29 37 45 53 61
- * 3 11 19 27 35 43 51 59 1 9 17 25 33 41 49 57
- *
- * E is a 32-to-48 bit selection function. Its output contains the following
- * bits of its input (listed in order MSB to LSB of output).
- *
- * 0 31 30 29 28 27 28 27 26 25 24 23 24 23 22 21 20 19 20 19 18 17 16 15
- * 16 15 14 13 12 11 12 11 10 9 8 7 8 7 6 5 4 3 4 3 2 1 0 31
- *
- * The S-boxes are arbitrary table-lookups each mapping a 6-bit input to a
- * 4-bit output. In other words, each S-box is an array[64] of 4-bit numbers.
- * The S-boxes are listed below. The first S-box listed is applied to the
- * most significant six bits of the block X; the last one is applied to the
- * least significant.
- *
- * 14 0 4 15 13 7 1 4 2 14 15 2 11 13 8 1
- * 3 10 10 6 6 12 12 11 5 9 9 5 0 3 7 8
- * 4 15 1 12 14 8 8 2 13 4 6 9 2 1 11 7
- * 15 5 12 11 9 3 7 14 3 10 10 0 5 6 0 13
- *
- * 15 3 1 13 8 4 14 7 6 15 11 2 3 8 4 14
- * 9 12 7 0 2 1 13 10 12 6 0 9 5 11 10 5
- * 0 13 14 8 7 10 11 1 10 3 4 15 13 4 1 2
- * 5 11 8 6 12 7 6 12 9 0 3 5 2 14 15 9
- *
- * 10 13 0 7 9 0 14 9 6 3 3 4 15 6 5 10
- * 1 2 13 8 12 5 7 14 11 12 4 11 2 15 8 1
- * 13 1 6 10 4 13 9 0 8 6 15 9 3 8 0 7
- * 11 4 1 15 2 14 12 3 5 11 10 5 14 2 7 12
- *
- * 7 13 13 8 14 11 3 5 0 6 6 15 9 0 10 3
- * 1 4 2 7 8 2 5 12 11 1 12 10 4 14 15 9
- * 10 3 6 15 9 0 0 6 12 10 11 1 7 13 13 8
- * 15 9 1 4 3 5 14 11 5 12 2 7 8 2 4 14
- *
- * 2 14 12 11 4 2 1 12 7 4 10 7 11 13 6 1
- * 8 5 5 0 3 15 15 10 13 3 0 9 14 8 9 6
- * 4 11 2 8 1 12 11 7 10 1 13 14 7 2 8 13
- * 15 6 9 15 12 0 5 9 6 10 3 4 0 5 14 3
- *
- * 12 10 1 15 10 4 15 2 9 7 2 12 6 9 8 5
- * 0 6 13 1 3 13 4 14 14 0 7 11 5 3 11 8
- * 9 4 14 3 15 2 5 12 2 9 8 5 12 15 3 10
- * 7 11 0 14 4 1 10 7 1 6 13 0 11 8 6 13
- *
- * 4 13 11 0 2 11 14 7 15 4 0 9 8 1 13 10
- * 3 14 12 3 9 5 7 12 5 2 10 15 6 8 1 6
- * 1 6 4 11 11 13 13 8 12 1 3 4 7 10 14 7
- * 10 9 15 5 6 0 8 15 0 14 5 2 9 3 2 12
- *
- * 13 1 2 15 8 13 4 8 6 10 15 3 11 7 1 4
- * 10 12 9 5 3 6 14 11 5 0 0 14 12 9 7 2
- * 7 2 11 1 4 14 1 7 9 4 12 10 14 8 2 13
- * 0 15 6 12 10 9 13 0 15 3 3 5 5 6 8 11
- *
- * P is a 32-to-32 bit permutation. Its output contains the following
- * bits of its input (listed in order MSB to LSB of output).
- *
- * 16 25 12 11 3 20 4 15 31 17 9 6 27 14 1 22
- * 30 24 8 18 0 5 29 23 13 19 2 26 10 21 28 7
- *
- * PC1 is a 64-to-56 bit selection function. Its output is in two words,
- * C and D. The word C contains the following bits of its input (listed
- * in order MSB to LSB of output).
- *
- * 7 15 23 31 39 47 55 63 6 14 22 30 38 46
- * 54 62 5 13 21 29 37 45 53 61 4 12 20 28
- *
- * And the word D contains these bits.
- *
- * 1 9 17 25 33 41 49 57 2 10 18 26 34 42
- * 50 58 3 11 19 27 35 43 51 59 36 44 52 60
- *
- * PC2 is a 56-to-48 bit selection function. Its input is in two words,
- * C and D. These are treated as one 56-bit word (with C more significant,
- * so that bits 55 to 28 of the word are bits 27 to 0 of C, and bits 27 to
- * 0 of the word are bits 27 to 0 of D). The output contains the following
- * bits of this 56-bit input word (listed in order MSB to LSB of output).
- *
- * 42 39 45 32 55 51 53 28 41 50 35 46 33 37 44 52 30 48 40 49 29 36 43 54
- * 15 4 25 19 9 1 26 16 5 11 23 8 12 7 17 0 22 3 10 14 6 20 27 24
- */
-
-/*
- * Implementation details
- * ----------------------
- *
- * If you look at the code in this module, you'll find it looks
- * nothing _like_ the above algorithm. Here I explain the
- * differences...
- *
- * Key setup has not been heavily optimised here. We are not
- * concerned with key agility: we aren't codebreakers. We don't
- * mind a little delay (and it really is a little one; it may be a
- * factor of five or so slower than it could be but it's still not
- * an appreciable length of time) while setting up. The only tweaks
- * in the key setup are ones which change the format of the key
- * schedule to speed up the actual encryption. I'll describe those
- * below.
- *
- * The first and most obvious optimisation is the S-boxes. Since
- * each S-box always targets the same four bits in the final 32-bit
- * word, so the output from (for example) S-box 0 must always be
- * shifted left 28 bits, we can store the already-shifted outputs
- * in the lookup tables. This reduces lookup-and-shift to lookup,
- * so the S-box step is now just a question of ORing together eight
- * table lookups.
- *
- * The permutation P is just a bit order change; it's invariant
- * with respect to OR, in that P(x)|P(y) = P(x|y). Therefore, we
- * can apply P to every entry of the S-box tables and then we don't
- * have to do it in the code of f(). This yields a set of tables
- * which might be called SP-boxes.
- *
- * The bit-selection function E is our next target. Note that E is
- * immediately followed by the operation of splitting into 6-bit
- * chunks. Examining the 6-bit chunks coming out of E we notice
- * they're all contiguous within the word (speaking cyclically -
- * the end two wrap round); so we can extract those bit strings
- * individually rather than explicitly running E. This would yield
- * code such as
- *
- * y |= SPboxes[0][ (rotl(R, 5) ^ top6bitsofK) & 0x3F ];
- * t |= SPboxes[1][ (rotl(R,11) ^ next6bitsofK) & 0x3F ];
- *
- * and so on; and the key schedule preparation would have to
- * provide each 6-bit chunk separately.
- *
- * Really we'd like to XOR in the key schedule element before
- * looking up bit strings in R. This we can't do, naively, because
- * the 6-bit strings we want overlap. But look at the strings:
- *
- * 3322222222221111111111
- * bit 10987654321098765432109876543210
- *
- * box0 XXXXX X
- * box1 XXXXXX
- * box2 XXXXXX
- * box3 XXXXXX
- * box4 XXXXXX
- * box5 XXXXXX
- * box6 XXXXXX
- * box7 X XXXXX
- *
- * The bit strings we need to XOR in for boxes 0, 2, 4 and 6 don't
- * overlap with each other. Neither do the ones for boxes 1, 3, 5
- * and 7. So we could provide the key schedule in the form of two
- * words that we can separately XOR into R, and then every S-box
- * index is available as a (cyclically) contiguous 6-bit substring
- * of one or the other of the results.
- *
- * The comments in Eric Young's libdes implementation point out
- * that two of these bit strings require a rotation (rather than a
- * simple shift) to extract. It's unavoidable that at least _one_
- * must do; but we can actually run the whole inner algorithm (all
- * 16 rounds) rotated one bit to the left, so that what the `real'
- * DES description sees as L=0x80000001 we see as L=0x00000003.
- * This requires rotating all our SP-box entries one bit to the
- * left, and rotating each word of the key schedule elements one to
- * the left, and rotating L and R one bit left just after IP and
- * one bit right again just before FP. And in each round we convert
- * a rotate into a shift, so we've saved a few per cent.
- *
- * That's about it for the inner loop; the SP-box tables as listed
- * below are what I've described here (the original S value,
- * shifted to its final place in the input to P, run through P, and
- * then rotated one bit left). All that remains is to optimise the
- * initial permutation IP.
- *
- * IP is not an arbitrary permutation. It has the nice property
- * that if you take any bit number, write it in binary (6 bits),
- * permute those 6 bits and invert some of them, you get the final
- * position of that bit. Specifically, the bit whose initial
- * position is given (in binary) as fedcba ends up in position
- * AcbFED (where a capital letter denotes the inverse of a bit).
- *
- * We have the 64-bit data in two 32-bit words L and R, where bits
- * in L are those with f=1 and bits in R are those with f=0. We
- * note that we can do a simple transformation: suppose we exchange
- * the bits with f=1,c=0 and the bits with f=0,c=1. This will cause
- * the bit fedcba to be in position cedfba - we've `swapped' bits c
- * and f in the position of each bit!
- *
- * Better still, this transformation is easy. In the example above,
- * bits in L with c=0 are bits 0x0F0F0F0F, and those in R with c=1
- * are 0xF0F0F0F0. So we can do
- *
- * difference = ((R >> 4) ^ L) & 0x0F0F0F0F
- * R ^= (difference << 4)
- * L ^= difference
- *
- * to perform the swap. Let's denote this by bitswap(4,0x0F0F0F0F).
- * Also, we can invert the bit at the top just by exchanging L and
- * R. So in a few swaps and a few of these bit operations we can
- * do:
- *
- * Initially the position of bit fedcba is fedcba
- * Swap L with R to make it Fedcba
- * Perform bitswap( 4,0x0F0F0F0F) to make it cedFba
- * Perform bitswap(16,0x0000FFFF) to make it ecdFba
- * Swap L with R to make it EcdFba
- * Perform bitswap( 2,0x33333333) to make it bcdFEa
- * Perform bitswap( 8,0x00FF00FF) to make it dcbFEa
- * Swap L with R to make it DcbFEa
- * Perform bitswap( 1,0x55555555) to make it acbFED
- * Swap L with R to make it AcbFED
- *
- * (In the actual code the four swaps are implicit: R and L are
- * simply used the other way round in the first, second and last
- * bitswap operations.)
- *
- * The final permutation is just the inverse of IP, so it can be
- * performed by a similar set of operations.
- */
-
-struct des_context {
- quint32 k0246[16], k1357[16];
-};
-
-#define rotl(x, c) ( (x << c) | (x >> (32-c)) )
-#define rotl28(x, c) ( ( (x << c) | (x >> (28-c)) ) & 0x0FFFFFFF)
-
-static quint32 bitsel(quint32 * input, const int *bitnums, int size)
-{
- quint32 ret = 0;
- while (size--) {
- int bitpos = *bitnums++;
- ret <<= 1;
- if (bitpos >= 0)
- ret |= 1 & (input[bitpos / 32] >> (bitpos % 32));
- }
- return ret;
-}
-
-static inline void des_key_setup(quint32 key_msw, quint32 key_lsw,
- struct des_context *sched)
-{
- /* Tables are modified to work with 56-bit key */
- static const int PC1_Cbits[] = {
- 6, 13, 20, 27, 34, 41, 48, 55, 5, 12, 19, 26, 33, 40,
- 47, 54, 4, 11, 18, 25, 32, 39, 46, 53, 3, 10, 17, 24
- };
- static const int PC1_Dbits[] = {
- 0, 7, 14, 21, 28, 35, 42, 49, 1, 8, 15, 22, 29, 36,
- 43, 50, 2, 9, 16, 23, 30, 37, 44, 51, 31, 38, 45, 52
- };
- /*
- * The bit numbers in the two lists below don't correspond to
- * the ones in the above description of PC2, because in the
- * above description C and D are concatenated so `bit 28' means
- * bit 0 of C. In this implementation we're using the standard
- * `bitsel' function above and C is in the second word, so bit
- * 0 of C is addressed by writing `32' here.
- */
- static const int PC2_0246[] = {
- 49, 36, 59, 55, -1, -1, 37, 41, 48, 56, 34, 52, -1, -1, 15, 4,
- 25, 19, 9, 1, -1, -1, 12, 7, 17, 0, 22, 3, -1, -1, 46, 43
- };
- static const int PC2_1357[] = {
- -1, -1, 57, 32, 45, 54, 39, 50, -1, -1, 44, 53, 33, 40, 47, 58,
- -1, -1, 26, 16, 5, 11, 23, 8, -1, -1, 10, 14, 6, 20, 27, 24
- };
- static const int leftshifts[] = {
- 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
- };
-
- quint32 C, D;
- quint32 buf[2];
- int i;
-
- buf[0] = key_lsw;
- buf[1] = key_msw;
-
- C = bitsel(buf, PC1_Cbits, 28);
- D = bitsel(buf, PC1_Dbits, 28);
-
- for (i = 0; i < 16; i++) {
- C = rotl28(C, leftshifts[i]);
- D = rotl28(D, leftshifts[i]);
- buf[0] = D;
- buf[1] = C;
- sched->k0246[i] = bitsel(buf, PC2_0246, 32);
- sched->k1357[i] = bitsel(buf, PC2_1357, 32);
- }
-}
-
-static const quint32 SPboxes[8][64] = {
- {0x01010400, 0x00000000, 0x00010000, 0x01010404,
- 0x01010004, 0x00010404, 0x00000004, 0x00010000,
- 0x00000400, 0x01010400, 0x01010404, 0x00000400,
- 0x01000404, 0x01010004, 0x01000000, 0x00000004,
- 0x00000404, 0x01000400, 0x01000400, 0x00010400,
- 0x00010400, 0x01010000, 0x01010000, 0x01000404,
- 0x00010004, 0x01000004, 0x01000004, 0x00010004,
- 0x00000000, 0x00000404, 0x00010404, 0x01000000,
- 0x00010000, 0x01010404, 0x00000004, 0x01010000,
- 0x01010400, 0x01000000, 0x01000000, 0x00000400,
- 0x01010004, 0x00010000, 0x00010400, 0x01000004,
- 0x00000400, 0x00000004, 0x01000404, 0x00010404,
- 0x01010404, 0x00010004, 0x01010000, 0x01000404,
- 0x01000004, 0x00000404, 0x00010404, 0x01010400,
- 0x00000404, 0x01000400, 0x01000400, 0x00000000,
- 0x00010004, 0x00010400, 0x00000000, 0x01010004},
-
- {0x80108020, 0x80008000, 0x00008000, 0x00108020,
- 0x00100000, 0x00000020, 0x80100020, 0x80008020,
- 0x80000020, 0x80108020, 0x80108000, 0x80000000,
- 0x80008000, 0x00100000, 0x00000020, 0x80100020,
- 0x00108000, 0x00100020, 0x80008020, 0x00000000,
- 0x80000000, 0x00008000, 0x00108020, 0x80100000,
- 0x00100020, 0x80000020, 0x00000000, 0x00108000,
- 0x00008020, 0x80108000, 0x80100000, 0x00008020,
- 0x00000000, 0x00108020, 0x80100020, 0x00100000,
- 0x80008020, 0x80100000, 0x80108000, 0x00008000,
- 0x80100000, 0x80008000, 0x00000020, 0x80108020,
- 0x00108020, 0x00000020, 0x00008000, 0x80000000,
- 0x00008020, 0x80108000, 0x00100000, 0x80000020,
- 0x00100020, 0x80008020, 0x80000020, 0x00100020,
- 0x00108000, 0x00000000, 0x80008000, 0x00008020,
- 0x80000000, 0x80100020, 0x80108020, 0x00108000},
-
- {0x00000208, 0x08020200, 0x00000000, 0x08020008,
- 0x08000200, 0x00000000, 0x00020208, 0x08000200,
- 0x00020008, 0x08000008, 0x08000008, 0x00020000,
- 0x08020208, 0x00020008, 0x08020000, 0x00000208,
- 0x08000000, 0x00000008, 0x08020200, 0x00000200,
- 0x00020200, 0x08020000, 0x08020008, 0x00020208,
- 0x08000208, 0x00020200, 0x00020000, 0x08000208,
- 0x00000008, 0x08020208, 0x00000200, 0x08000000,
- 0x08020200, 0x08000000, 0x00020008, 0x00000208,
- 0x00020000, 0x08020200, 0x08000200, 0x00000000,
- 0x00000200, 0x00020008, 0x08020208, 0x08000200,
- 0x08000008, 0x00000200, 0x00000000, 0x08020008,
- 0x08000208, 0x00020000, 0x08000000, 0x08020208,
- 0x00000008, 0x00020208, 0x00020200, 0x08000008,
- 0x08020000, 0x08000208, 0x00000208, 0x08020000,
- 0x00020208, 0x00000008, 0x08020008, 0x00020200},
-
- {0x00802001, 0x00002081, 0x00002081, 0x00000080,
- 0x00802080, 0x00800081, 0x00800001, 0x00002001,
- 0x00000000, 0x00802000, 0x00802000, 0x00802081,
- 0x00000081, 0x00000000, 0x00800080, 0x00800001,
- 0x00000001, 0x00002000, 0x00800000, 0x00802001,
- 0x00000080, 0x00800000, 0x00002001, 0x00002080,
- 0x00800081, 0x00000001, 0x00002080, 0x00800080,
- 0x00002000, 0x00802080, 0x00802081, 0x00000081,
- 0x00800080, 0x00800001, 0x00802000, 0x00802081,
- 0x00000081, 0x00000000, 0x00000000, 0x00802000,
- 0x00002080, 0x00800080, 0x00800081, 0x00000001,
- 0x00802001, 0x00002081, 0x00002081, 0x00000080,
- 0x00802081, 0x00000081, 0x00000001, 0x00002000,
- 0x00800001, 0x00002001, 0x00802080, 0x00800081,
- 0x00002001, 0x00002080, 0x00800000, 0x00802001,
- 0x00000080, 0x00800000, 0x00002000, 0x00802080},
-
- {0x00000100, 0x02080100, 0x02080000, 0x42000100,
- 0x00080000, 0x00000100, 0x40000000, 0x02080000,
- 0x40080100, 0x00080000, 0x02000100, 0x40080100,
- 0x42000100, 0x42080000, 0x00080100, 0x40000000,
- 0x02000000, 0x40080000, 0x40080000, 0x00000000,
- 0x40000100, 0x42080100, 0x42080100, 0x02000100,
- 0x42080000, 0x40000100, 0x00000000, 0x42000000,
- 0x02080100, 0x02000000, 0x42000000, 0x00080100,
- 0x00080000, 0x42000100, 0x00000100, 0x02000000,
- 0x40000000, 0x02080000, 0x42000100, 0x40080100,
- 0x02000100, 0x40000000, 0x42080000, 0x02080100,
- 0x40080100, 0x00000100, 0x02000000, 0x42080000,
- 0x42080100, 0x00080100, 0x42000000, 0x42080100,
- 0x02080000, 0x00000000, 0x40080000, 0x42000000,
- 0x00080100, 0x02000100, 0x40000100, 0x00080000,
- 0x00000000, 0x40080000, 0x02080100, 0x40000100},
-
- {0x20000010, 0x20400000, 0x00004000, 0x20404010,
- 0x20400000, 0x00000010, 0x20404010, 0x00400000,
- 0x20004000, 0x00404010, 0x00400000, 0x20000010,
- 0x00400010, 0x20004000, 0x20000000, 0x00004010,
- 0x00000000, 0x00400010, 0x20004010, 0x00004000,
- 0x00404000, 0x20004010, 0x00000010, 0x20400010,
- 0x20400010, 0x00000000, 0x00404010, 0x20404000,
- 0x00004010, 0x00404000, 0x20404000, 0x20000000,
- 0x20004000, 0x00000010, 0x20400010, 0x00404000,
- 0x20404010, 0x00400000, 0x00004010, 0x20000010,
- 0x00400000, 0x20004000, 0x20000000, 0x00004010,
- 0x20000010, 0x20404010, 0x00404000, 0x20400000,
- 0x00404010, 0x20404000, 0x00000000, 0x20400010,
- 0x00000010, 0x00004000, 0x20400000, 0x00404010,
- 0x00004000, 0x00400010, 0x20004010, 0x00000000,
- 0x20404000, 0x20000000, 0x00400010, 0x20004010},
-
- {0x00200000, 0x04200002, 0x04000802, 0x00000000,
- 0x00000800, 0x04000802, 0x00200802, 0x04200800,
- 0x04200802, 0x00200000, 0x00000000, 0x04000002,
- 0x00000002, 0x04000000, 0x04200002, 0x00000802,
- 0x04000800, 0x00200802, 0x00200002, 0x04000800,
- 0x04000002, 0x04200000, 0x04200800, 0x00200002,
- 0x04200000, 0x00000800, 0x00000802, 0x04200802,
- 0x00200800, 0x00000002, 0x04000000, 0x00200800,
- 0x04000000, 0x00200800, 0x00200000, 0x04000802,
- 0x04000802, 0x04200002, 0x04200002, 0x00000002,
- 0x00200002, 0x04000000, 0x04000800, 0x00200000,
- 0x04200800, 0x00000802, 0x00200802, 0x04200800,
- 0x00000802, 0x04000002, 0x04200802, 0x04200000,
- 0x00200800, 0x00000000, 0x00000002, 0x04200802,
- 0x00000000, 0x00200802, 0x04200000, 0x00000800,
- 0x04000002, 0x04000800, 0x00000800, 0x00200002},
-
- {0x10001040, 0x00001000, 0x00040000, 0x10041040,
- 0x10000000, 0x10001040, 0x00000040, 0x10000000,
- 0x00040040, 0x10040000, 0x10041040, 0x00041000,
- 0x10041000, 0x00041040, 0x00001000, 0x00000040,
- 0x10040000, 0x10000040, 0x10001000, 0x00001040,
- 0x00041000, 0x00040040, 0x10040040, 0x10041000,
- 0x00001040, 0x00000000, 0x00000000, 0x10040040,
- 0x10000040, 0x10001000, 0x00041040, 0x00040000,
- 0x00041040, 0x00040000, 0x10041000, 0x00001000,
- 0x00000040, 0x10040040, 0x00001000, 0x00041040,
- 0x10001000, 0x00000040, 0x10000040, 0x10040000,
- 0x10040040, 0x10000000, 0x00040000, 0x10001040,
- 0x00000000, 0x10041040, 0x00040040, 0x10000040,
- 0x10040000, 0x10001000, 0x10001040, 0x00000000,
- 0x10041040, 0x00041000, 0x00041000, 0x00001040,
- 0x00001040, 0x00040040, 0x10000000, 0x10041000}
-};
-
-#define f(R, K0246, K1357) (\
- s0246 = R ^ K0246, \
- s1357 = R ^ K1357, \
- s0246 = rotl(s0246, 28), \
- SPboxes[0] [(s0246 >> 24) & 0x3F] | \
- SPboxes[1] [(s1357 >> 24) & 0x3F] | \
- SPboxes[2] [(s0246 >> 16) & 0x3F] | \
- SPboxes[3] [(s1357 >> 16) & 0x3F] | \
- SPboxes[4] [(s0246 >> 8) & 0x3F] | \
- SPboxes[5] [(s1357 >> 8) & 0x3F] | \
- SPboxes[6] [(s0246 ) & 0x3F] | \
- SPboxes[7] [(s1357 ) & 0x3F])
-
-#define bitswap(L, R, n, mask) (\
- swap = mask & ( (R >> n) ^ L ), \
- R ^= swap << n, \
- L ^= swap)
-
-/* Initial permutation */
-#define IP(L, R) (\
- bitswap(R, L, 4, 0x0F0F0F0F), \
- bitswap(R, L, 16, 0x0000FFFF), \
- bitswap(L, R, 2, 0x33333333), \
- bitswap(L, R, 8, 0x00FF00FF), \
- bitswap(R, L, 1, 0x55555555))
-
-/* Final permutation */
-#define FP(L, R) (\
- bitswap(R, L, 1, 0x55555555), \
- bitswap(L, R, 8, 0x00FF00FF), \
- bitswap(L, R, 2, 0x33333333), \
- bitswap(R, L, 16, 0x0000FFFF), \
- bitswap(R, L, 4, 0x0F0F0F0F))
-
-static void
-des_encipher(quint32 *output, quint32 L, quint32 R,
- struct des_context *sched)
-{
- quint32 swap, s0246, s1357;
-
- IP(L, R);
-
- L = rotl(L, 1);
- R = rotl(R, 1);
-
- L ^= f(R, sched->k0246[0], sched->k1357[0]);
- R ^= f(L, sched->k0246[1], sched->k1357[1]);
- L ^= f(R, sched->k0246[2], sched->k1357[2]);
- R ^= f(L, sched->k0246[3], sched->k1357[3]);
- L ^= f(R, sched->k0246[4], sched->k1357[4]);
- R ^= f(L, sched->k0246[5], sched->k1357[5]);
- L ^= f(R, sched->k0246[6], sched->k1357[6]);
- R ^= f(L, sched->k0246[7], sched->k1357[7]);
- L ^= f(R, sched->k0246[8], sched->k1357[8]);
- R ^= f(L, sched->k0246[9], sched->k1357[9]);
- L ^= f(R, sched->k0246[10], sched->k1357[10]);
- R ^= f(L, sched->k0246[11], sched->k1357[11]);
- L ^= f(R, sched->k0246[12], sched->k1357[12]);
- R ^= f(L, sched->k0246[13], sched->k1357[13]);
- L ^= f(R, sched->k0246[14], sched->k1357[14]);
- R ^= f(L, sched->k0246[15], sched->k1357[15]);
-
- L = rotl(L, 31);
- R = rotl(R, 31);
-
- swap = L;
- L = R;
- R = swap;
-
- FP(L, R);
-
- output[0] = L;
- output[1] = R;
-}
-
-#define GET_32BIT_MSB_FIRST(cp) \
- (((unsigned long)(unsigned char)(cp)[3]) | \
- ((unsigned long)(unsigned char)(cp)[2] << 8) | \
- ((unsigned long)(unsigned char)(cp)[1] << 16) | \
- ((unsigned long)(unsigned char)(cp)[0] << 24))
-
-#define PUT_32BIT_MSB_FIRST(cp, value) do { \
- (cp)[3] = (value); \
- (cp)[2] = (value) >> 8; \
- (cp)[1] = (value) >> 16; \
- (cp)[0] = (value) >> 24; } while (0)
-
-static inline void
-des_cbc_encrypt(unsigned char *dest, const unsigned char *src,
- struct des_context *sched)
-{
- quint32 out[2], L, R;
-
- L = GET_32BIT_MSB_FIRST(src);
- R = GET_32BIT_MSB_FIRST(src + 4);
- des_encipher(out, L, R, sched);
- PUT_32BIT_MSB_FIRST(dest, out[0]);
- PUT_32BIT_MSB_FIRST(dest + 4, out[1]);
-}
-
-
-static unsigned char *
-deshash(unsigned char *dst, const unsigned char *key,
- const unsigned char *src)
-{
- struct des_context ctx;
-
- des_key_setup(GET_32BIT_MSB_FIRST(key) >> 8,
- GET_32BIT_MSB_FIRST(key + 3), &ctx);
-
- des_cbc_encrypt(dst, src, &ctx);
-
- return dst;
-}
diff --git a/src/3rdparty/forkfd/forkfd.c b/src/3rdparty/forkfd/forkfd.c
new file mode 100644
index 0000000000..1b3e162a7e
--- /dev/null
+++ b/src/3rdparty/forkfd/forkfd.c
@@ -0,0 +1,655 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Intel Corporation
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+# define _POSIX_C_SOURCE 200809L
+# define _XOPEN_SOURCE 500
+#endif
+#include "forkfd.h"
+
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <assert.h>
+#include <errno.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef __linux__
+# define HAVE_PIPE2 1
+# define HAVE_EVENTFD 1
+# include <sys/eventfd.h>
+#endif
+
+#if defined(__APPLE__)
+/* Up until OS X 10.7, waitid(P_ALL, ...) will return success, but will not
+ * fill in the details of the dead child. That means waitid is not useful to us.
+ * Therefore, we only enable waitid() support if we're targetting OS X 10.8 or
+ * later.
+ */
+# include <Availability.h>
+# include <AvailabilityMacros.h>
+# if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
+# define HAVE_WAITID 1
+# endif
+#elif _POSIX_VERSION-0 >= 200809L || _XOPEN_VERSION-0 >= 500
+# define HAVE_WAITID 1
+#endif
+
+#ifndef FFD_ATOMIC_RELAXED
+# include "forkfd_gcc.h"
+#endif
+
+#define CHILDREN_IN_SMALL_ARRAY 16
+#define CHILDREN_IN_BIG_ARRAY 256
+#define sizeofarray(array) (sizeof(array)/sizeof(array[0]))
+#define EINTR_LOOP(ret, call) \
+ do { \
+ ret = call; \
+ } while (ret == -1 && errno == EINTR)
+
+typedef struct process_info
+{
+ ffd_atomic_int pid;
+ int deathPipe;
+} ProcessInfo;
+
+struct BigArray;
+typedef struct Header
+{
+ ffd_atomic_pointer(struct BigArray) nextArray;
+ ffd_atomic_int busyCount;
+} Header;
+
+typedef struct BigArray
+{
+ Header header;
+ ProcessInfo entries[CHILDREN_IN_BIG_ARRAY];
+} BigArray;
+
+typedef struct SmallArray
+{
+ Header header;
+ ProcessInfo entries[CHILDREN_IN_SMALL_ARRAY];
+} SmallArray;
+static SmallArray children;
+
+static struct sigaction old_sigaction;
+static pthread_once_t forkfd_initialization = PTHREAD_ONCE_INIT;
+static ffd_atomic_int forkfd_status = FFD_ATOMIC_INIT(0);
+
+static ProcessInfo *tryAllocateInSection(Header *header, ProcessInfo entries[], int maxCount)
+{
+ /* we use ACQUIRE here because the signal handler might have released the PID */
+ int busyCount = ffd_atomic_add_fetch(&header->busyCount, 1, FFD_ATOMIC_ACQUIRE);
+ if (busyCount <= maxCount) {
+ /* there's an available entry in this section, find it and take it */
+ int i;
+ for (i = 0; i < maxCount; ++i) {
+ /* if the PID is 0, it's free; mark it as used by swapping it with -1 */
+ int expected_pid = 0;
+ if (ffd_atomic_compare_exchange(&entries[i].pid, &expected_pid,
+ -1, FFD_ATOMIC_RELAXED, FFD_ATOMIC_RELAXED))
+ return &entries[i];
+ }
+ }
+
+ /* there isn't an available entry, undo our increment */
+ ffd_atomic_add_fetch(&header->busyCount, -1, FFD_ATOMIC_RELAXED);
+ return NULL;
+}
+
+static ProcessInfo *allocateInfo(Header **header)
+{
+ Header *currentHeader = &children.header;
+
+ /* try to find an available entry in the small array first */
+ ProcessInfo *info =
+ tryAllocateInSection(currentHeader, children.entries, sizeofarray(children.entries));
+
+ /* go on to the next arrays */
+ while (info == NULL) {
+ BigArray *array = ffd_atomic_load(&currentHeader->nextArray, FFD_ATOMIC_ACQUIRE);
+ if (array == NULL) {
+ /* allocate an array and try to use it */
+ BigArray *allocatedArray = (BigArray *)calloc(1, sizeof(BigArray));
+ if (allocatedArray == NULL)
+ return NULL;
+
+ if (ffd_atomic_compare_exchange(&currentHeader->nextArray, &array, allocatedArray,
+ FFD_ATOMIC_RELEASE, FFD_ATOMIC_ACQUIRE)) {
+ /* success */
+ array = allocatedArray;
+ } else {
+ /* failed, the atomic updated 'array' */
+ free(allocatedArray);
+ }
+ }
+
+ currentHeader = &array->header;
+ info = tryAllocateInSection(currentHeader, array->entries, sizeofarray(array->entries));
+ }
+
+ *header = currentHeader;
+ return info;
+}
+
+#ifdef HAVE_WAITID
+static int isChildReady(pid_t pid, siginfo_t *info)
+{
+ info->si_pid = 0;
+ return waitid(P_PID, pid, info, WEXITED | WNOHANG | WNOWAIT) == 0 && info->si_pid == pid;
+}
+#endif
+
+static int tryReaping(pid_t pid, siginfo_t *info)
+{
+ /* reap the child */
+#ifdef HAVE_WAITID
+ // we have waitid(2), which fills in siginfo_t for us
+ info->si_pid = 0;
+ return waitid(P_PID, pid, info, WEXITED | WNOHANG) == 0 && info->si_pid == pid;
+#else
+ int status;
+ if (waitpid(pid, &status, WNOHANG) <= 0)
+ return 0; // child did not change state
+
+ info->si_signo = SIGCHLD;
+ info->si_pid = pid;
+ if (WIFEXITED(status)) {
+ info->si_code = CLD_EXITED;
+ info->si_status = WEXITSTATUS(status);
+ } else if (WIFSIGNALED(status)) {
+ info->si_code = CLD_KILLED;
+# ifdef WCOREDUMP
+ if (WCOREDUMP(status))
+ info->si_code = CLD_DUMPED;
+# endif
+ info->si_status = WTERMSIG(status);
+ }
+
+ return 1;
+#endif
+}
+
+static void freeInfo(Header *header, ProcessInfo *entry)
+{
+ entry->deathPipe = -1;
+ entry->pid = 0;
+
+ ffd_atomic_add_fetch(&header->busyCount, -1, FFD_ATOMIC_RELEASE);
+ assert(header->busyCount >= 0);
+}
+
+static void notifyAndFreeInfo(Header *header, ProcessInfo *entry, siginfo_t *info)
+{
+ ssize_t ret;
+ EINTR_LOOP(ret, write(entry->deathPipe, info, sizeof(*info)));
+ EINTR_LOOP(ret, close(entry->deathPipe));
+
+ freeInfo(header, entry);
+}
+
+static void sigchld_handler(int signum)
+{
+ /*
+ * This is a signal handler, so we need to be careful about which functions
+ * we can call. See the full, official listing in the POSIX.1-2008
+ * specification at:
+ * http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04_03
+ *
+ */
+
+ if (ffd_atomic_load(&forkfd_status, FFD_ATOMIC_RELAXED) == 1) {
+ /* is this one of our children? */
+ BigArray *array;
+ siginfo_t info;
+ int i;
+
+ memset(&info, 0, sizeof info);
+
+#ifdef HAVE_WAITID
+ /* be optimistic: try to see if we can get the child that exited */
+search_next_child:
+ /* waitid returns -1 ECHILD if there are no further children at all;
+ * it returns 0 and sets si_pid to 0 if there are children but they are not ready
+ * to be waited (we're passing WNOHANG). We should not get EINTR because
+ * we're passing WNOHANG and we should definitely not get EINVAL or anything else.
+ * That means we can actually ignore the return code and only inspect si_pid.
+ */
+ info.si_pid = 0;
+ waitid(P_ALL, 0, &info, WNOHANG | WNOWAIT | WEXITED);
+ if (info.si_pid == 0) {
+ /* there are no further un-waited-for children, so we can just exit.
+ * But before, transfer control to the chained SIGCHLD handler.
+ */
+ goto chain_handler;
+ }
+
+ for (i = 0; i < (int)sizeofarray(children.entries); ++i) {
+ /* acquire the child first: swap the PID with -1 to indicate it's busy */
+ int pid = info.si_pid;
+ if (ffd_atomic_compare_exchange(&children.entries[i].pid, &pid, -1,
+ FFD_ATOMIC_ACQUIRE, FFD_ATOMIC_RELAXED)) {
+ /* this is our child, send notification and free up this entry */
+ /* ### FIXME: what if tryReaping returns false? */
+ if (tryReaping(pid, &info))
+ notifyAndFreeInfo(&children.header, &children.entries[i], &info);
+ goto search_next_child;
+ }
+ }
+
+ /* try the arrays */
+ array = ffd_atomic_load(&children.header.nextArray, FFD_ATOMIC_ACQUIRE);
+ while (array != NULL) {
+ for (i = 0; i < (int)sizeofarray(array->entries); ++i) {
+ int pid = info.si_pid;
+ if (ffd_atomic_compare_exchange(&array->entries[i].pid, &pid, -1,
+ FFD_ATOMIC_ACQUIRE, FFD_ATOMIC_RELAXED)) {
+ /* this is our child, send notification and free up this entry */
+ /* ### FIXME: what if tryReaping returns false? */
+ if (tryReaping(pid, &info))
+ notifyAndFreeInfo(&array->header, &array->entries[i], &info);
+ goto search_next_child;
+ }
+ }
+
+ array = ffd_atomic_load(&array->header.nextArray, FFD_ATOMIC_ACQUIRE);
+ }
+
+ /* if we got here, we couldn't find this child in our list. That means this child
+ * belongs to one of the chained SIGCHLD handlers. However, there might be another
+ * child that exited and does belong to us, so we need to check each one individually.
+ */
+#endif
+
+ for (i = 0; i < (int)sizeofarray(children.entries); ++i) {
+ int pid = ffd_atomic_load(&children.entries[i].pid, FFD_ATOMIC_ACQUIRE);
+ if (pid <= 0)
+ continue;
+#ifdef HAVE_WAITID
+ /* The child might have been reaped by the block above in another thread,
+ * so first check if it's ready and, if it is, lock it */
+ if (!isChildReady(pid, &info) ||
+ !ffd_atomic_compare_exchange(&children.entries[i].pid, &pid, -1,
+ FFD_ATOMIC_RELAXED, FFD_ATOMIC_RELAXED))
+ continue;
+#endif
+ if (tryReaping(pid, &info)) {
+ /* this is our child, send notification and free up this entry */
+ notifyAndFreeInfo(&children.header, &children.entries[i], &info);
+ }
+ }
+
+ /* try the arrays */
+ array = ffd_atomic_load(&children.header.nextArray, FFD_ATOMIC_ACQUIRE);
+ while (array != NULL) {
+ for (i = 0; i < (int)sizeofarray(array->entries); ++i) {
+ int pid = ffd_atomic_load(&array->entries[i].pid, FFD_ATOMIC_ACQUIRE);
+ if (pid <= 0)
+ continue;
+#ifdef HAVE_WAITID
+ /* The child might have been reaped by the block above in another thread,
+ * so first check if it's ready and, if it is, lock it */
+ if (!isChildReady(pid, &info) ||
+ !ffd_atomic_compare_exchange(&array->entries[i].pid, &pid, -1,
+ FFD_ATOMIC_RELAXED, FFD_ATOMIC_RELAXED))
+ continue;
+#endif
+ if (tryReaping(pid, &info)) {
+ /* this is our child, send notification and free up this entry */
+ notifyAndFreeInfo(&array->header, &array->entries[i], &info);
+ }
+ }
+
+ array = ffd_atomic_load(&array->header.nextArray, FFD_ATOMIC_ACQUIRE);
+ }
+ }
+
+#ifdef HAVE_WAITID
+chain_handler:
+#endif
+ if (old_sigaction.sa_handler != SIG_IGN && old_sigaction.sa_handler != SIG_DFL)
+ old_sigaction.sa_handler(signum);
+}
+
+static void forkfd_initialize()
+{
+ /* install our signal handler */
+ struct sigaction action;
+ memset(&action, 0, sizeof action);
+ sigemptyset(&action.sa_mask);
+ action.sa_flags = SA_NOCLDSTOP;
+ action.sa_handler = sigchld_handler;
+
+ /* ### RACE CONDITION
+ * The sigaction function does a memcpy from an internal buffer
+ * to old_sigaction, which we use in the SIGCHLD handler. If a
+ * SIGCHLD is delivered before or during that memcpy, the handler will
+ * see an inconsistent state.
+ *
+ * There is no solution. pthread_sigmask doesn't work here because the
+ * signal could be delivered to another thread.
+ */
+ sigaction(SIGCHLD, &action, &old_sigaction);
+
+#ifndef __GNUC__
+ atexit(cleanup);
+#endif
+
+ ffd_atomic_store(&forkfd_status, 1, FFD_ATOMIC_RELAXED);
+}
+
+#ifdef __GNUC__
+__attribute((destructor, unused)) static void cleanup();
+#endif
+
+static void cleanup()
+{
+ BigArray *array;
+ /* This function is not thread-safe!
+ * It must only be called when the process is shutting down.
+ * At shutdown, we expect no one to be calling forkfd(), so we don't
+ * need to be thread-safe with what is done there.
+ *
+ * But SIGCHLD might be delivered to any thread, including this one.
+ * There's no way to prevent that. The correct solution would be to
+ * cooperatively delete. We don't do that.
+ */
+ if (ffd_atomic_load(&forkfd_status, FFD_ATOMIC_RELAXED) == 0)
+ return;
+
+ /* notify the handler that we're no longer in operation */
+ ffd_atomic_store(&forkfd_status, 0, FFD_ATOMIC_RELAXED);
+
+ /* free any arrays we might have */
+ array = children.header.nextArray;
+ while (array != NULL) {
+ BigArray *next = array->header.nextArray;
+ free(array);
+ array = next;
+ }
+}
+
+static int create_pipe(int filedes[], int flags)
+{
+ int ret;
+#ifdef HAVE_PIPE2
+ /* use pipe2(2) whenever possible, since it can thread-safely create a
+ * cloexec pair of pipes. Without it, we have a race condition setting
+ * FD_CLOEXEC
+ */
+ ret = pipe2(filedes, O_CLOEXEC);
+ if (ret == -1)
+ return ret;
+
+ if ((flags & FFD_CLOEXEC) == 0)
+ fcntl(filedes[0], F_SETFD, 0);
+#else
+ ret = pipe(filedes);
+ if (ret == -1)
+ return ret;
+
+ fcntl(filedes[1], F_SETFD, FD_CLOEXEC);
+ if (flags & FFD_CLOEXEC)
+ fcntl(filedes[0], F_SETFD, FD_CLOEXEC);
+#endif
+ if (flags & FFD_NONBLOCK)
+ fcntl(filedes[0], F_SETFL, fcntl(filedes[0], F_GETFL) | O_NONBLOCK);
+ return ret;
+}
+
+/**
+ * @brief forkfd returns a file descriptor representing a child process
+ * @return a file descriptor, or -1 in case of failure
+ *
+ * forkfd() creates a file descriptor that can be used to be notified of when a
+ * child process exits. This file descriptor can be monitored using select(2),
+ * poll(2) or similar mechanisms.
+ *
+ * The @a flags parameter can contain the following values ORed to change the
+ * behaviour of forkfd():
+ *
+ * @li @c FFD_NONBLOCK Set the O_NONBLOCK file status flag on the new open file
+ * descriptor. Using this flag saves extra calls to fnctl(2) to achieve the same
+ * result.
+ *
+ * @li @c FFD_CLOEXEC Set the close-on-exec (FD_CLOEXEC) flag on the new file
+ * descriptor. You probably want to set this flag, since forkfd() does not work
+ * if the original parent process dies.
+ *
+ * The file descriptor returned by forkfd() supports the following operations:
+ *
+ * @li read(2) When the child process exits, then the buffer supplied to
+ * read(2) is used to return information about the status of the child in the
+ * form of one @c siginfo_t structure. The buffer must be at least
+ * sizeof(siginfo_t) bytes. The return value of read(2) is the total number of
+ * bytes read.
+ *
+ * @li poll(2), select(2) (and similar) The file descriptor is readable (the
+ * select(2) readfds argument; the poll(2) POLLIN flag) if the child has exited
+ * or signalled via SIGCHLD.
+ *
+ * @li close(2) When the file descriptor is no longer required it should be closed.
+ */
+int forkfd(int flags, pid_t *ppid)
+{
+ Header *header;
+ ProcessInfo *info;
+ pid_t pid;
+ int fd = -1;
+ int death_pipe[2];
+ int sync_pipe[2];
+ int ret;
+#ifdef __linux__
+ int efd;
+#endif
+
+ (void) pthread_once(&forkfd_initialization, forkfd_initialize);
+
+ info = allocateInfo(&header);
+ if (info == NULL) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ /* create the pipes before we fork */
+ if (create_pipe(death_pipe, flags) == -1)
+ goto err_free; /* failed to create the pipes, pass errno */
+
+#ifdef HAVE_EVENTFD
+ /* try using an eventfd, which consumes less resources */
+ efd = eventfd(0, EFD_CLOEXEC);
+ if (efd == -1)
+#endif
+ {
+ /* try a pipe */
+ if (create_pipe(sync_pipe, FFD_CLOEXEC) == -1) {
+ /* failed both at eventfd and pipe; fail and pass errno */
+ goto err_close;
+ }
+ }
+
+ /* now fork */
+ pid = fork();
+ if (pid == -1)
+ goto err_close2; /* failed to fork, pass errno */
+ if (ppid)
+ *ppid = pid;
+
+ /*
+ * We need to store the child's PID in the info structure, so
+ * the SIGCHLD handler knows that this child is present and it
+ * knows the writing end of the pipe to pass information on.
+ * However, the child process could exit before we stored the
+ * information (or the handler could run for other children exiting).
+ * We prevent that from happening by blocking the child process in
+ * a read(2) until we're finished storing the information.
+ */
+ if (pid == 0) {
+ /* this is the child process */
+ /* first, wait for the all clear */
+#ifdef HAVE_EVENTFD
+ if (efd != -1) {
+ eventfd_t val64;
+ EINTR_LOOP(ret, eventfd_read(efd, &val64));
+ EINTR_LOOP(ret, close(efd));
+ } else
+#endif
+ {
+ char c;
+ EINTR_LOOP(ret, close(sync_pipe[1]));
+ EINTR_LOOP(ret, read(sync_pipe[0], &c, sizeof c));
+ EINTR_LOOP(ret, close(sync_pipe[0]));
+ }
+
+ /* now close the pipes and return to the caller */
+ EINTR_LOOP(ret, close(death_pipe[0]));
+ EINTR_LOOP(ret, close(death_pipe[1]));
+ fd = FFD_CHILD_PROCESS;
+ } else {
+ /* parent process */
+ info->deathPipe = death_pipe[1];
+ fd = death_pipe[0];
+ ffd_atomic_store(&info->pid, pid, FFD_ATOMIC_RELEASE);
+
+ /* release the child */
+#ifdef HAVE_EVENTFD
+ if (efd != -1) {
+ eventfd_t val64 = 42;
+ EINTR_LOOP(ret, eventfd_write(efd, val64));
+ EINTR_LOOP(ret, close(efd));
+ } else
+#endif
+ {
+ /*
+ * Usually, closing would be enough to make read(2) return and the child process
+ * continue. We need to write here: another thread could be calling forkfd at the
+ * same time, which means auxpipe[1] might be open in another child process.
+ */
+ EINTR_LOOP(ret, close(sync_pipe[0]));
+ EINTR_LOOP(ret, write(sync_pipe[1], "", 1));
+ EINTR_LOOP(ret, close(sync_pipe[1]));
+ }
+ }
+
+ return fd;
+
+err_close2:
+#ifdef HAVE_EVENTFD
+ if (efd != -1) {
+ EINTR_LOOP(ret, close(efd));
+ } else
+#endif
+ {
+ EINTR_LOOP(ret, close(sync_pipe[0]));
+ EINTR_LOOP(ret, close(sync_pipe[1]));
+ }
+err_close:
+ EINTR_LOOP(ret, close(death_pipe[0]));
+ EINTR_LOOP(ret, close(death_pipe[1]));
+err_free:
+ /* free the info pointer */
+ freeInfo(header, info);
+ return -1;
+}
+
+#ifdef _POSIX_SPAWN
+int spawnfd(int flags, pid_t *ppid, const char *path, const posix_spawn_file_actions_t *file_actions,
+ posix_spawnattr_t *attrp, char *const argv[], char *const envp[])
+{
+ Header *header;
+ ProcessInfo *info;
+ siginfo_t si;
+ pid_t pid;
+ int death_pipe[2];
+ int ret = -1;
+ /* we can only do work if we have a way to start the child in stopped mode;
+ * otherwise, we have a major race condition. */
+
+ (void) pthread_once(&forkfd_initialization, forkfd_initialize);
+
+ info = allocateInfo(&header);
+ if (info == NULL) {
+ errno = ENOMEM;
+ goto out;
+ }
+
+ /* create the pipe before we spawn */
+ if (create_pipe(death_pipe, flags) == -1)
+ goto err_free; /* failed to create the pipes, pass errno */
+
+ /* start the process */
+ if (flags & FFD_SPAWN_SEARCH_PATH) {
+ /* use posix_spawnp */
+ if (posix_spawnp(&pid, path, file_actions, attrp, argv, envp) != 0)
+ goto err_close;
+ } else {
+ if (posix_spawn(&pid, path, file_actions, attrp, argv, envp) != 0)
+ goto err_close;
+ }
+
+ if (ppid)
+ *ppid = pid;
+
+ /* Store the child's PID in the info structure.
+ */
+ info->deathPipe = death_pipe[1];
+ ffd_atomic_store(&info->pid, pid, FFD_ATOMIC_RELEASE);
+
+ /* check if the child has already exited */
+ if (tryReaping(pid, &si))
+ notifyAndFreeInfo(header, info, &si);
+
+ ret = death_pipe[0];
+ return ret;
+
+err_close:
+ EINTR_LOOP(ret, close(death_pipe[0]));
+ EINTR_LOOP(ret, close(death_pipe[1]));
+
+err_free:
+ /* free the info pointer */
+ freeInfo(header, info);
+
+out:
+ return -1;
+}
+#endif // _POSIX_SPAWN
diff --git a/src/3rdparty/forkfd/forkfd.h b/src/3rdparty/forkfd/forkfd.h
new file mode 100644
index 0000000000..c987f8a7a9
--- /dev/null
+++ b/src/3rdparty/forkfd/forkfd.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Intel Corporation
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FORKFD_H
+#define FORKFD_H
+
+#include <fcntl.h>
+#include <unistd.h> // to get the POSIX flags
+
+#ifdef _POSIX_SPAWN
+# include <spawn.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define FFD_CLOEXEC 1
+#define FFD_NONBLOCK 2
+
+#define FFD_CHILD_PROCESS (-2)
+
+int forkfd(int flags, pid_t *ppid);
+
+#ifdef _POSIX_SPAWN
+/* only for spawnfd: */
+# define FFD_SPAWN_SEARCH_PATH O_RDWR
+
+int spawnfd(int flags, pid_t *ppid, const char *path, const posix_spawn_file_actions_t *file_actions,
+ posix_spawnattr_t *attrp, char *const argv[], char *const envp[]);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // FORKFD_H
diff --git a/src/3rdparty/forkfd/forkfd_gcc.h b/src/3rdparty/forkfd/forkfd_gcc.h
new file mode 100644
index 0000000000..e5cbbe60e0
--- /dev/null
+++ b/src/3rdparty/forkfd/forkfd_gcc.h
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Intel Corporation
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FFD_ATOMIC_GCC_H
+#define FFD_ATOMIC_GCC_H
+
+/* atomics */
+/* we'll use the GCC 4.7 atomic builtins
+ * See http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html#_005f_005fatomic-Builtins
+ * Or in texinfo: C Extensions > __atomic Builtins
+ */
+typedef int ffd_atomic_int;
+#define ffd_atomic_pointer(type) type*
+
+#define FFD_ATOMIC_INIT(val) (val)
+
+#define FFD_ATOMIC_RELAXED __ATOMIC_RELAXED
+#define FFD_ATOMIC_ACQUIRE __ATOMIC_ACQUIRE
+#define FFD_ATOMIC_RELEASE __ATOMIC_RELEASE
+// acq_rel & cst not necessary
+
+#if !defined(__GNUC__) || \
+ ((__GNUC__ - 0) * 100 + (__GNUC_MINOR__ - 0)) < 407 || \
+ (defined(__INTEL_COMPILER) && __INTEL_COMPILER-0 < 1310) || \
+ (defined(__clang__) && ((__clang_major__-0) * 100 + (__clang_minor-0)) < 303)
+#define ffd_atomic_load_n(ptr,order) *(ptr)
+#define ffd_atomic_store_n(ptr,val,order) (*(ptr) = (val), (void)0)
+#define ffd_atomic_exchange_n(ptr,val,order) __sync_lock_test_and_set(ptr, val)
+#define ffd_atomic_compare_exchange_n(ptr,expected,desired,weak,order1,order2) \
+ __sync_bool_compare_and_swap(ptr, *(expected), desired) ? 1 : \
+ (*(expected) = *(ptr), 0)
+#define ffd_atomic_add_fetch(ptr,val,order) __sync_add_and_fetch(ptr, val)
+#else
+#define ffd_atomic_load(ptr,order) __atomic_load_n(ptr, order)
+#define ffd_atomic_store(ptr,val,order) __atomic_store_n(ptr, val, order)
+#define ffd_atomic_exchange(ptr,val,order) __atomic_exchange_n(ptr, val, order)
+#define ffd_atomic_compare_exchange(ptr,expected,desired,order1,order2) \
+ __atomic_compare_exchange_n(ptr, expected, desired, 1, order1, order2)
+#define ffd_atomic_add_fetch(ptr,val,order) __atomic_add_fetch(ptr, val, order)
+#endif
+
+#endif
diff --git a/src/3rdparty/harfbuzz-ng/NEWS b/src/3rdparty/harfbuzz-ng/NEWS
index f4fabc7cd9..3a33bdf5cb 100644
--- a/src/3rdparty/harfbuzz-ng/NEWS
+++ b/src/3rdparty/harfbuzz-ng/NEWS
@@ -1,3 +1,138 @@
+Overview of changes leading to 0.9.38
+Friday, January 23, 2015
+=====================================
+
+- Fix minor out-of-bounds access in Indic shaper.
+- Change New Tai Lue shaping engine from South-East Asian to default,
+ reflecting change in Unicode encoding model.
+- Add hb-shape --font-size. Can take up to two numbers for separate
+ x / y size.
+- Fix CoreText and FreeType scale issues with negative scales.
+- Reject blobs larger than 2GB. This might break some icu-le-hb clients
+ that need security fixes. See:
+ http://www.icu-project.org/trac/ticket/11450
+- Avoid accessing font tables during face destruction, in casce rogue
+ clients released face data already.
+- Fix up gobject-introspection a bit. Python bindings kinda working.
+ See README.python.
+- Misc fixes.
+- API additions:
+ hb_ft_face_create_referenced()
+ hb_ft_font_create_referenced()
+
+
+Overview of changes leading to 0.9.37
+Wednesday, December 17, 2014
+=====================================
+
+- Fix out-of-bounds access in Context lookup format 3.
+- Indic: Allow ZWJ/ZWNJ before syllable modifiers.
+
+
+Overview of changes leading to 0.9.36
+Thursday, November 20, 2014
+=====================================
+
+- First time that three months went by without a release since
+ 0.9.2 was released on August 10, 2012!
+- Fix performance bug in hb_ot_collect_glyphs():
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1090869
+- Add basic vertical-text support to hb-ot-font.
+- Misc build fixes.
+
+
+Overview of changes leading to 0.9.35
+Saturday, August 13, 2014
+=====================================
+
+- Fix major shape-plan caching bug when more than one shaper were
+ provided to hb_shape_full() (as exercised by XeTeX).
+ http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1246370.html
+- Fix Arabic fallback shaping regression. This was broken in 0.9.32.
+- Major hb-coretext fixes. That backend is complete now, including
+ respecing buffer direction and language, down to vertical writing.
+- Build fixes for Windows CE. Should build fine now.
+- Misc fixes:
+ Use atexit() only if it's safe to call from shared library
+ https://bugs.freedesktop.org/show_bug.cgi?id=82246
+ Mandaic had errors in its Unicode Joining_Type
+ https://bugs.freedesktop.org/show_bug.cgi?id=82306
+- API changes:
+
+ * hb_buffer_clear_contents() does not reset buffer flags now.
+
+ After 763e5466c0a03a7c27020e1e2598e488612529a7, one doesn't
+ need to set flags for different pieces of text. The flags now
+ are something the client sets up once, depending on how it
+ actually uses the buffer. As such, don't clear it in
+ clear_contents().
+
+ I don't expect any changes to be needed to any existing client.
+
+
+Overview of changes leading to 0.9.34
+Saturday, August 2, 2014
+=====================================
+
+- hb_feature_from_string() now accepts CSS font-feature-settings format.
+- As a result, hb-shape / hb-view --features also accept CSS-style strings.
+ Eg, "'liga' off" is accepted now.
+- Add old-spec Myanmar shaper:
+ https://bugs.freedesktop.org/show_bug.cgi?id=81775
+- Don't apply 'calt' in Hangul shaper.
+- Fix mark advance zeroing for Hebrew shaper:
+ https://bugs.freedesktop.org/show_bug.cgi?id=76767
+- Implement Windows-1256 custom Arabic shaping. Only built on Windows,
+ and requires help from get_glyph(). Used by Firefox.
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1045139
+- Disable 'liga' in vertical text.
+- Build fixes.
+- API changes:
+
+ * Make HB_BUFFER_FLAG_BOT/EOT easier to use.
+
+ Previously, we expected users to provide BOT/EOT flags when the
+ text *segment* was at paragraph boundaries. This meant that for
+ clients that provide full paragraph to HarfBuzz (eg. Pango), they
+ had code like this:
+
+ hb_buffer_set_flags (hb_buffer,
+ (item_offset == 0 ? HB_BUFFER_FLAG_BOT : 0) |
+ (item_offset + item_length == paragraph_length ?
+ HB_BUFFER_FLAG_EOT : 0));
+
+ hb_buffer_add_utf8 (hb_buffer,
+ paragraph_text, paragraph_length,
+ item_offset, item_length);
+
+ After this change such clients can simply say:
+
+ hb_buffer_set_flags (hb_buffer,
+ HB_BUFFER_FLAG_BOT | HB_BUFFER_FLAG_EOT);
+
+ hb_buffer_add_utf8 (hb_buffer,
+ paragraph_text, paragraph_length,
+ item_offset, item_length);
+
+ Ie, HarfBuzz itself checks whether the segment is at the beginning/end
+ of the paragraph. Clients that only pass item-at-a-time to HarfBuzz
+ continue not setting any flags whatsoever.
+
+ Another way to put it is: if there's pre-context text in the buffer,
+ HarfBuzz ignores the BOT flag. If there's post-context, it ignores
+ EOT flag.
+
+
+Overview of changes leading to 0.9.33
+Tuesday, July 22, 2014
+=====================================
+
+- Turn off ARabic 'cswh' feature that was accidentally turned on.
+- Add HB_TAG_MAX_SIGNED.
+- Make hb_face_make_immutable() really make face immutable!
+- Windows build fixes.
+
+
Overview of changes leading to 0.9.32
Thursday, July 17, 2014
=====================================
diff --git a/src/3rdparty/harfbuzz-ng/README b/src/3rdparty/harfbuzz-ng/README
index 74e739da52..d34bc74f99 100644
--- a/src/3rdparty/harfbuzz-ng/README
+++ b/src/3rdparty/harfbuzz-ng/README
@@ -1,3 +1,6 @@
+[![Build Status](https://travis-ci.org/behdad/harfbuzz.svg)](https://travis-ci.org/behdad/harfbuzz)
+[![Coverage Status](https://img.shields.io/coveralls/behdad/harfbuzz.svg)](https://coveralls.io/r/behdad/harfbuzz)
+
This is HarfBuzz, a text shaping library.
For bug reports, mailing list, and other information please visit:
diff --git a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
index 6b51d9679a..c142c5a973 100644
--- a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
+++ b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro
@@ -13,6 +13,7 @@ DEFINES += HAVE_OT HB_NO_UNICODE_FUNCS HB_DISABLE_DEPRECATED
DEFINES += HAVE_ATEXIT
gcc: DEFINES += HAVE_INTEL_ATOMIC_PRIMITIVES
unix: DEFINES += HAVE_PTHREAD HAVE_SCHED_H HAVE_SCHED_YIELD
+win32: DEFINES += HB_NO_WIN1256
INCLUDEPATH += $$PWD/include
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-atomic-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-atomic-private.hh
index 60cbcf91be..e6738b7d9f 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-atomic-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-atomic-private.hh
@@ -44,7 +44,6 @@
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
-#define WIN32_LEAN_AND_MEAN
#include <windows.h>
/* MinGW has a convoluted history of supporting MemoryBarrier
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-blob.cc b/src/3rdparty/harfbuzz-ng/src/hb-blob.cc
index b82b4b2a3a..8759a252a5 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-blob.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-blob.cc
@@ -78,8 +78,8 @@ _hb_blob_destroy_user_data (hb_blob_t *blob)
}
/**
- * hb_blob_create: (Xconstructor)
- * @data: (array length=length) (closure user_data) (destroy destroy) (scope notified) (transfer none): Pointer to blob data.
+ * hb_blob_create: (skip)
+ * @data: Pointer to blob data.
* @length: Length of @data in bytes.
* @mode: Memory mode for @data.
* @user_data: Data parameter to pass to @destroy.
@@ -102,7 +102,10 @@ hb_blob_create (const char *data,
{
hb_blob_t *blob;
- if (!length || !(blob = hb_object_create<hb_blob_t> ())) {
+ if (!length ||
+ length >= 1u << 31 ||
+ data + length < data /* overflows */ ||
+ !(blob = hb_object_create<hb_blob_t> ())) {
if (destroy)
destroy (user_data);
return hb_blob_get_empty ();
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh b/src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh
index a49dc2ac50..3f626bda40 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-buffer-deserialize-json.hh
@@ -459,8 +459,8 @@ _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer,
const char *tok = NULL;
int cs;
- hb_glyph_info_t info;
- hb_glyph_position_t pos;
+ hb_glyph_info_t info = {0};
+ hb_glyph_position_t pos = {0};
#line 466 "hb-buffer-deserialize-json.hh"
{
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-buffer-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-buffer-private.hh
index 5eccd3c31f..069f925581 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-buffer-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-buffer-private.hh
@@ -48,15 +48,13 @@ struct hb_buffer_t {
ASSERT_POD ();
/* Information about how the text in the buffer should be treated */
-
hb_unicode_funcs_t *unicode; /* Unicode functions */
- hb_segment_properties_t props; /* Script, language, direction */
hb_buffer_flags_t flags; /* BOT / EOT / etc. */
hb_codepoint_t replacement; /* U+FFFD or something else. */
/* Buffer contents */
-
hb_buffer_content_type_t content_type;
+ hb_segment_properties_t props; /* Script, language, direction */
bool in_error; /* Allocation failed */
bool have_output; /* Whether we have an output buffer going on */
@@ -183,6 +181,9 @@ struct hb_buffer_t {
inline bool ensure (unsigned int size)
{ return likely (!size || size < allocated) ? true : enlarge (size); }
+ inline bool ensure_inplace (unsigned int size)
+ { return likely (!size || size < allocated); }
+
HB_INTERNAL bool make_room_for (unsigned int num_in, unsigned int num_out);
HB_INTERNAL bool shift_forward (unsigned int count);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-buffer.cc b/src/3rdparty/harfbuzz-ng/src/hb-buffer.cc
index 2377ba40da..7bf232d760 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-buffer.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-buffer.cc
@@ -178,6 +178,7 @@ hb_buffer_t::reset (void)
hb_unicode_funcs_destroy (unicode);
unicode = hb_unicode_funcs_get_default ();
+ flags = HB_BUFFER_FLAG_DEFAULT;
replacement = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT;
clear ();
@@ -191,7 +192,6 @@ hb_buffer_t::clear (void)
hb_segment_properties_t default_props = HB_SEGMENT_PROPERTIES_DEFAULT;
props = default_props;
- flags = HB_BUFFER_FLAG_DEFAULT;
content_type = HB_BUFFER_CONTENT_TYPE_INVALID;
in_error = false;
@@ -702,11 +702,11 @@ hb_buffer_get_empty (void)
HB_OBJECT_HEADER_STATIC,
const_cast<hb_unicode_funcs_t *> (&_hb_unicode_funcs_nil),
- HB_SEGMENT_PROPERTIES_DEFAULT,
HB_BUFFER_FLAG_DEFAULT,
HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT,
HB_BUFFER_CONTENT_TYPE_INVALID,
+ HB_SEGMENT_PROPERTIES_DEFAULT,
true, /* in_error */
true, /* have_output */
true /* have_positions */
@@ -1400,7 +1400,7 @@ hb_buffer_add_utf (hb_buffer_t *buffer,
/**
* hb_buffer_add_utf8:
* @buffer: a buffer.
- * @text: (array length=text_length):
+ * @text: (array length=text_length) (element-type uint8_t):
* @text_length:
* @item_offset:
* @item_length:
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-common.cc b/src/3rdparty/harfbuzz-ng/src/hb-common.cc
index 416d082a6b..8837cefbf7 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-common.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-common.cc
@@ -33,10 +33,6 @@
#include <locale.h>
-#ifdef _WIN32_WCE
-#define strdup(x) _strdup(x)
-#endif
-
/* hb_options_t */
@@ -238,8 +234,8 @@ struct hb_language_item_t {
static hb_language_item_t *langs;
-#ifdef HAVE_ATEXIT
-static inline
+#ifdef HB_USE_ATEXIT
+static
void free_langs (void)
{
while (langs) {
@@ -273,7 +269,7 @@ retry:
goto retry;
}
-#ifdef HAVE_ATEXIT
+#ifdef HB_USE_ATEXIT
if (!first_lang)
atexit (free_langs); /* First person registers atexit() callback. */
#endif
@@ -349,7 +345,7 @@ hb_language_get_default (void)
hb_language_t language = (hb_language_t) hb_atomic_ptr_get (&default_language);
if (unlikely (language == HB_LANGUAGE_INVALID)) {
language = hb_language_from_string (setlocale (LC_CTYPE, NULL), -1);
- hb_atomic_ptr_cmpexch (&default_language, HB_LANGUAGE_INVALID, language);
+ (void) hb_atomic_ptr_cmpexch (&default_language, HB_LANGUAGE_INVALID, language);
}
return default_language;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-common.h b/src/3rdparty/harfbuzz-ng/src/hb-common.h
index b24cbb33ba..b6ce3f724d 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-common.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-common.h
@@ -95,6 +95,7 @@ typedef uint32_t hb_tag_t;
#define HB_TAG_NONE HB_TAG(0,0,0,0)
#define HB_TAG_MAX HB_TAG(0xff,0xff,0xff,0xff)
+#define HB_TAG_MAX_SIGNED HB_TAG(0x7f,0xff,0xff,0xff)
/* len=-1 means str is NUL-terminated. */
hb_tag_t
@@ -122,12 +123,13 @@ hb_direction_from_string (const char *str, int len);
const char *
hb_direction_to_string (hb_direction_t direction);
+#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
+/* Direction must be valid for the following */
#define HB_DIRECTION_IS_HORIZONTAL(dir) ((((unsigned int) (dir)) & ~1U) == 4)
#define HB_DIRECTION_IS_VERTICAL(dir) ((((unsigned int) (dir)) & ~1U) == 6)
#define HB_DIRECTION_IS_FORWARD(dir) ((((unsigned int) (dir)) & ~2U) == 4)
#define HB_DIRECTION_IS_BACKWARD(dir) ((((unsigned int) (dir)) & ~2U) == 5)
-#define HB_DIRECTION_IS_VALID(dir) ((((unsigned int) (dir)) & ~3U) == 4)
-#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1)) /* Direction must be valid */
+#define HB_DIRECTION_REVERSE(dir) ((hb_direction_t) (((unsigned int) (dir)) ^ 1))
/* hb_language_t */
@@ -295,11 +297,17 @@ typedef enum
/*7.0*/ HB_SCRIPT_WARANG_CITI = HB_TAG ('W','a','r','a'),
/* No script set. */
- /*---*/ HB_SCRIPT_INVALID = HB_TAG_NONE,
-
- /* Dummy value to ensure any hb_tag_t value can be passed/stored as hb_script_t
- * without risking undefined behavior. */
- /*---*/ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX
+ HB_SCRIPT_INVALID = HB_TAG_NONE,
+
+ /* Dummy values to ensure any hb_tag_t value can be passed/stored as hb_script_t
+ * without risking undefined behavior. Include both a signed and unsigned max,
+ * since technically enums are int, and indeed, hb_script_t ends up being signed.
+ * See this thread for technicalities:
+ *
+ * http://lists.freedesktop.org/archives/harfbuzz/2014-March/004150.html
+ */
+ _HB_SCRIPT_MAX_VALUE = HB_TAG_MAX, /*< skip >*/
+ _HB_SCRIPT_MAX_VALUE_SIGNED = HB_TAG_MAX_SIGNED /*< skip >*/
} hb_script_t;
@@ -309,7 +317,7 @@ typedef enum
hb_script_t
hb_script_from_iso15924_tag (hb_tag_t tag);
-/* suger for tag_from_string() then script_from_iso15924_tag */
+/* sugar for tag_from_string() then script_from_iso15924_tag */
/* len=-1 means s is NUL-terminated */
hb_script_t
hb_script_from_string (const char *s, int len);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-face-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-face-private.hh
index 6520d3dbdf..c4266fff4f 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-face-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-face-private.hh
@@ -66,7 +66,7 @@ struct hb_face_t {
{
hb_blob_t *blob;
- if (unlikely (!this || !reference_table_func))
+ if (unlikely (!reference_table_func))
return hb_blob_get_empty ();
blob = reference_table_func (/*XXX*/const_cast<hb_face_t *> (this), tag, user_data);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-face.cc b/src/3rdparty/harfbuzz-ng/src/hb-face.cc
index 71cf49a5bc..9348af7bf8 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-face.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-face.cc
@@ -298,7 +298,7 @@ hb_face_get_user_data (hb_face_t *face,
void
hb_face_make_immutable (hb_face_t *face)
{
- if (hb_object_is_inert (face))
+ if (unlikely (hb_object_is_inert (face)))
return;
face->immutable = true;
@@ -368,7 +368,7 @@ void
hb_face_set_index (hb_face_t *face,
unsigned int index)
{
- if (hb_object_is_inert (face))
+ if (face->immutable)
return;
face->index = index;
@@ -403,7 +403,7 @@ void
hb_face_set_upem (hb_face_t *face,
unsigned int upem)
{
- if (hb_object_is_inert (face))
+ if (face->immutable)
return;
face->upem = upem;
@@ -447,7 +447,7 @@ void
hb_face_set_glyph_count (hb_face_t *face,
unsigned int glyph_count)
{
- if (hb_object_is_inert (face))
+ if (face->immutable)
return;
face->num_glyphs = glyph_count;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-font.cc b/src/3rdparty/harfbuzz-ng/src/hb-font.cc
index fc4c8ebf07..4364ca72fb 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-font.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-font.cc
@@ -357,7 +357,7 @@ hb_font_funcs_get_user_data (hb_font_funcs_t *ffuncs,
void
hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs)
{
- if (hb_object_is_inert (ffuncs))
+ if (unlikely (hb_object_is_inert (ffuncs)))
return;
ffuncs->immutable = true;
@@ -1034,7 +1034,7 @@ hb_font_get_user_data (hb_font_t *font,
void
hb_font_make_immutable (hb_font_t *font)
{
- if (hb_object_is_inert (font))
+ if (unlikely (hb_object_is_inert (font)))
return;
font->immutable = true;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-mutex-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-mutex-private.hh
index 40f2e3d152..a8ea39ccfd 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-mutex-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-mutex-private.hh
@@ -44,21 +44,14 @@
#elif !defined(HB_NO_MT) && (defined(_WIN32) || defined(__CYGWIN__))
-#define WIN32_LEAN_AND_MEAN
#include <windows.h>
typedef CRITICAL_SECTION hb_mutex_impl_t;
-#ifdef _WIN32_WCE
-#define HB_MUTEX_IMPL_INIT { 0, 0, NULL, NULL, 0 }
-#else
-#define HB_MUTEX_IMPL_INIT { NULL, 0, 0, NULL, NULL, 0 }
-#endif
-
+#define HB_MUTEX_IMPL_INIT {0}
#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
#define hb_mutex_impl_init(M) InitializeCriticalSectionEx (M, 0, 0)
#else
#define hb_mutex_impl_init(M) InitializeCriticalSection (M)
#endif
-
#define hb_mutex_impl_lock(M) EnterCriticalSection (M)
#define hb_mutex_impl_unlock(M) LeaveCriticalSection (M)
#define hb_mutex_impl_finish(M) DeleteCriticalSection (M)
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-object-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-object-private.hh
index 8a9ae34dbe..7bd0f1624b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-object-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-object-private.hh
@@ -68,8 +68,6 @@ struct hb_reference_count_t
#define HB_USER_DATA_ARRAY_INIT {HB_MUTEX_INIT, HB_LOCKABLE_SET_INIT}
struct hb_user_data_array_t
{
- /* TODO Add tracing. */
-
struct hb_user_data_item_t {
hb_user_data_key_t *key;
void *data;
@@ -106,69 +104,6 @@ struct hb_object_header_t
#define HB_OBJECT_HEADER_STATIC {HB_REFERENCE_COUNT_INVALID, HB_USER_DATA_ARRAY_INIT}
- static inline void *create (unsigned int size) {
- hb_object_header_t *obj = (hb_object_header_t *) calloc (1, size);
-
- if (likely (obj))
- obj->init ();
-
- return obj;
- }
-
- inline void init (void) {
- ref_count.init (1);
- user_data.init ();
- }
-
- inline bool is_inert (void) const {
- return unlikely (ref_count.is_invalid ());
- }
-
- inline void reference (void) {
- if (unlikely (!this || this->is_inert ()))
- return;
- ref_count.inc ();
- }
-
- inline bool destroy (void) {
- if (unlikely (!this || this->is_inert ()))
- return false;
- if (ref_count.dec () != 1)
- return false;
-
- ref_count.finish (); /* Do this before user_data */
- user_data.finish ();
-
- return true;
- }
-
- inline bool set_user_data (hb_user_data_key_t *key,
- void * data,
- hb_destroy_func_t destroy_func,
- hb_bool_t replace) {
- if (unlikely (!this || this->is_inert ()))
- return false;
-
- return user_data.set (key, data, destroy_func, replace);
- }
-
- inline void *get_user_data (hb_user_data_key_t *key) {
- if (unlikely (!this || this->is_inert ()))
- return NULL;
-
- return user_data.get (key);
- }
-
- inline void trace (const char *function) const {
- if (unlikely (!this)) return;
- /* TODO We cannot use DEBUG_MSG_FUNC here since that one currently only
- * prints the class name and throws away the template info. */
- DEBUG_MSG (OBJECT, (void *) this,
- "%s refcount=%d",
- function,
- this ? ref_count.ref_count : 0);
- }
-
private:
ASSERT_POD ();
};
@@ -179,32 +114,56 @@ struct hb_object_header_t
template <typename Type>
static inline void hb_object_trace (const Type *obj, const char *function)
{
- obj->header.trace (function);
+ DEBUG_MSG (OBJECT, (void *) obj,
+ "%s refcount=%d",
+ function,
+ obj ? obj->header.ref_count.ref_count : 0);
}
+
template <typename Type>
static inline Type *hb_object_create (void)
{
- Type *obj = (Type *) hb_object_header_t::create (sizeof (Type));
+ Type *obj = (Type *) calloc (1, sizeof (Type));
+
+ if (unlikely (!obj))
+ return obj;
+
+ hb_object_init (obj);
hb_object_trace (obj, HB_FUNC);
return obj;
}
template <typename Type>
+static inline void hb_object_init (Type *obj)
+{
+ obj->header.ref_count.init (1);
+ obj->header.user_data.init ();
+}
+template <typename Type>
static inline bool hb_object_is_inert (const Type *obj)
{
- return unlikely (obj->header.is_inert ());
+ return unlikely (obj->header.ref_count.is_invalid ());
}
template <typename Type>
static inline Type *hb_object_reference (Type *obj)
{
hb_object_trace (obj, HB_FUNC);
- obj->header.reference ();
+ if (unlikely (!obj || hb_object_is_inert (obj)))
+ return obj;
+ obj->header.ref_count.inc ();
return obj;
}
template <typename Type>
static inline bool hb_object_destroy (Type *obj)
{
hb_object_trace (obj, HB_FUNC);
- return obj->header.destroy ();
+ if (unlikely (!obj || hb_object_is_inert (obj)))
+ return false;
+ if (obj->header.ref_count.dec () != 1)
+ return false;
+
+ obj->header.ref_count.finish (); /* Do this before user_data */
+ obj->header.user_data.finish ();
+ return true;
}
template <typename Type>
static inline bool hb_object_set_user_data (Type *obj,
@@ -213,14 +172,18 @@ static inline bool hb_object_set_user_data (Type *obj,
hb_destroy_func_t destroy,
hb_bool_t replace)
{
- return obj->header.set_user_data (key, data, destroy, replace);
+ if (unlikely (!obj || hb_object_is_inert (obj)))
+ return false;
+ return obj->header.user_data.set (key, data, destroy, replace);
}
template <typename Type>
static inline void *hb_object_get_user_data (Type *obj,
hb_user_data_key_t *key)
{
- return obj->header.get_user_data (key);
+ if (unlikely (!obj || hb_object_is_inert (obj)))
+ return NULL;
+ return obj->header.user_data.get (key);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-open-file-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-open-file-private.hh
index 57db59db84..7500c32f15 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-open-file-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-open-file-private.hh
@@ -197,6 +197,8 @@ struct TTCHeader
struct OpenTypeFontFile
{
+ static const hb_tag_t tableTag = HB_TAG ('_','_','_','_'); /* Sanitizer needs this. */
+
static const hb_tag_t CFFTag = HB_TAG ('O','T','T','O'); /* OpenType with Postscript outlines */
static const hb_tag_t TrueTypeTag = HB_TAG ( 0 , 1 , 0 , 0 ); /* OpenType with TrueType outlines */
static const hb_tag_t TTCTag = HB_TAG ('t','t','c','f'); /* TrueType Collection */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-open-type-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-open-type-private.hh
index 046df97659..477d9e28b2 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-open-type-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-open-type-private.hh
@@ -194,10 +194,11 @@ struct hb_sanitize_context_t
{
this->start = hb_blob_get_data (this->blob, NULL);
this->end = this->start + hb_blob_get_length (this->blob);
+ assert (this->start <= this->end); /* Must not overflow. */
this->edit_count = 0;
this->debug_depth = 0;
- DEBUG_MSG_LEVEL (SANITIZE, this->blob, 0, +1,
+ DEBUG_MSG_LEVEL (SANITIZE, start, 0, +1,
"start [%p..%p] (%lu bytes)",
this->start, this->end,
(unsigned long) (this->end - this->start));
@@ -205,7 +206,7 @@ struct hb_sanitize_context_t
inline void end_processing (void)
{
- DEBUG_MSG_LEVEL (SANITIZE, this->blob, 0, -1,
+ DEBUG_MSG_LEVEL (SANITIZE, this->start, 0, -1,
"end [%p..%p] %u edit requests",
this->start, this->end, this->edit_count);
@@ -217,28 +218,31 @@ struct hb_sanitize_context_t
inline bool check_range (const void *base, unsigned int len) const
{
const char *p = (const char *) base;
+ bool ok = this->start <= p && p <= this->end && (unsigned int) (this->end - p) >= len;
- hb_auto_trace_t<HB_DEBUG_SANITIZE, bool> trace
- (&this->debug_depth, "SANITIZE", this->blob, NULL,
- "check_range [%p..%p] (%d bytes) in [%p..%p]",
+ DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
+ "check_range [%p..%p] (%d bytes) in [%p..%p] -> %s",
p, p + len, len,
- this->start, this->end);
+ this->start, this->end,
+ ok ? "OK" : "OUT-OF-RANGE");
- return TRACE_RETURN (likely (this->start <= p && p <= this->end && (unsigned int) (this->end - p) >= len));
+ return likely (ok);
}
inline bool check_array (const void *base, unsigned int record_size, unsigned int len) const
{
const char *p = (const char *) base;
bool overflows = _hb_unsigned_int_mul_overflows (len, record_size);
+ unsigned int array_size = record_size * len;
+ bool ok = !overflows && this->check_range (base, array_size);
- hb_auto_trace_t<HB_DEBUG_SANITIZE, bool> trace
- (&this->debug_depth, "SANITIZE", this->blob, NULL,
- "check_array [%p..%p] (%d*%d=%ld bytes) in [%p..%p]",
- p, p + (record_size * len), record_size, len, (unsigned long) record_size * len,
- this->start, this->end);
+ DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
+ "check_array [%p..%p] (%d*%d=%d bytes) in [%p..%p] -> %s",
+ p, p + (record_size * len), record_size, len, (unsigned int) array_size,
+ this->start, this->end,
+ overflows ? "OVERFLOWS" : ok ? "OK" : "OUT-OF-RANGE");
- return TRACE_RETURN (likely (!overflows && this->check_range (base, record_size * len)));
+ return likely (ok);
}
template <typename Type>
@@ -255,15 +259,14 @@ struct hb_sanitize_context_t
const char *p = (const char *) base;
this->edit_count++;
- hb_auto_trace_t<HB_DEBUG_SANITIZE, bool> trace
- (&this->debug_depth, "SANITIZE", this->blob, NULL,
+ DEBUG_MSG_LEVEL (SANITIZE, p, this->debug_depth+1, 0,
"may_edit(%u) [%p..%p] (%d bytes) in [%p..%p] -> %s",
this->edit_count,
p, p + len, len,
this->start, this->end,
this->writable ? "GRANTED" : "DENIED");
- return TRACE_RETURN (this->writable);
+ return this->writable;
}
template <typename Type, typename ValueType>
@@ -289,7 +292,7 @@ template <typename Type>
struct Sanitizer
{
static hb_blob_t *sanitize (hb_blob_t *blob) {
- hb_sanitize_context_t c[1] = {{0}};
+ hb_sanitize_context_t c[1] = {{0, NULL, NULL, false, 0, NULL}};
bool sane;
/* TODO is_sane() stuff */
@@ -297,7 +300,7 @@ struct Sanitizer
c->init (blob);
retry:
- DEBUG_MSG_FUNC (SANITIZE, blob, "start");
+ DEBUG_MSG_FUNC (SANITIZE, c->start, "start");
c->start_processing ();
@@ -311,13 +314,13 @@ struct Sanitizer
sane = t->sanitize (c);
if (sane) {
if (c->edit_count) {
- DEBUG_MSG_FUNC (SANITIZE, blob, "passed first round with %d edits; going for second round", c->edit_count);
+ DEBUG_MSG_FUNC (SANITIZE, c->start, "passed first round with %d edits; going for second round", c->edit_count);
/* sanitize again to ensure no toe-stepping */
c->edit_count = 0;
sane = t->sanitize (c);
if (c->edit_count) {
- DEBUG_MSG_FUNC (SANITIZE, blob, "requested %d edits in second round; FAILLING", c->edit_count);
+ DEBUG_MSG_FUNC (SANITIZE, c->start, "requested %d edits in second round; FAILLING", c->edit_count);
sane = false;
}
}
@@ -330,7 +333,7 @@ struct Sanitizer
if (c->start) {
c->writable = true;
/* ok, we made it writable by relocating. try again */
- DEBUG_MSG_FUNC (SANITIZE, blob, "retry");
+ DEBUG_MSG_FUNC (SANITIZE, c->start, "retry");
goto retry;
}
}
@@ -338,7 +341,7 @@ struct Sanitizer
c->end_processing ();
- DEBUG_MSG_FUNC (SANITIZE, blob, sane ? "PASSED" : "FAILED");
+ DEBUG_MSG_FUNC (SANITIZE, c->start, sane ? "PASSED" : "FAILED");
if (sane)
return blob;
else {
@@ -533,31 +536,76 @@ template <typename Type>
struct BEInt<Type, 2>
{
public:
- inline void set (Type i) { hb_be_uint16_put (v,i); }
- inline operator Type (void) const { return hb_be_uint16_get (v); }
- inline bool operator == (const BEInt<Type, 2>& o) const { return hb_be_uint16_eq (v, o.v); }
+ inline void set (Type V)
+ {
+ v[0] = (V >> 8) & 0xFF;
+ v[1] = (V ) & 0xFF;
+ }
+ inline operator Type (void) const
+ {
+ return (v[0] << 8)
+ + (v[1] );
+ }
+ inline bool operator == (const BEInt<Type, 2>& o) const
+ {
+ return v[0] == o.v[0]
+ && v[1] == o.v[1];
+ }
inline bool operator != (const BEInt<Type, 2>& o) const { return !(*this == o); }
private: uint8_t v[2];
};
template <typename Type>
-struct BEInt<Type, 4>
+struct BEInt<Type, 3>
{
public:
- inline void set (Type i) { hb_be_uint32_put (v,i); }
- inline operator Type (void) const { return hb_be_uint32_get (v); }
- inline bool operator == (const BEInt<Type, 4>& o) const { return hb_be_uint32_eq (v, o.v); }
- inline bool operator != (const BEInt<Type, 4>& o) const { return !(*this == o); }
- private: uint8_t v[4];
+ inline void set (Type V)
+ {
+ v[0] = (V >> 16) & 0xFF;
+ v[1] = (V >> 8) & 0xFF;
+ v[2] = (V ) & 0xFF;
+ }
+ inline operator Type (void) const
+ {
+ return (v[0] << 16)
+ + (v[1] << 8)
+ + (v[2] );
+ }
+ inline bool operator == (const BEInt<Type, 3>& o) const
+ {
+ return v[0] == o.v[0]
+ && v[1] == o.v[1]
+ && v[2] == o.v[2];
+ }
+ inline bool operator != (const BEInt<Type, 3>& o) const { return !(*this == o); }
+ private: uint8_t v[3];
};
template <typename Type>
-struct BEInt<Type, 3>
+struct BEInt<Type, 4>
{
public:
- inline void set (Type i) { hb_be_uint24_put (v,i); }
- inline operator Type (void) const { return hb_be_uint24_get (v); }
- inline bool operator == (const BEInt<Type, 3>& o) const { return hb_be_uint24_eq (v, o.v); }
- inline bool operator != (const BEInt<Type, 3>& o) const { return !(*this == o); }
- private: uint8_t v[3];
+ inline void set (Type V)
+ {
+ v[0] = (V >> 24) & 0xFF;
+ v[1] = (V >> 16) & 0xFF;
+ v[2] = (V >> 8) & 0xFF;
+ v[3] = (V ) & 0xFF;
+ }
+ inline operator Type (void) const
+ {
+ return (v[0] << 24)
+ + (v[1] << 16)
+ + (v[2] << 8)
+ + (v[3] );
+ }
+ inline bool operator == (const BEInt<Type, 4>& o) const
+ {
+ return v[0] == o.v[0]
+ && v[1] == o.v[1]
+ && v[2] == o.v[2]
+ && v[3] == o.v[3];
+ }
+ inline bool operator != (const BEInt<Type, 4>& o) const { return !(*this == o); }
+ private: uint8_t v[4];
};
/* Integer types in big-endian order and no alignment requirement */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc
index c9890c5922..2af2f54a75 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-font.cc
@@ -35,17 +35,128 @@
#include "hb-ot-hmtx-table.hh"
+struct hb_ot_face_metrics_accelerator_t
+{
+ unsigned int num_metrics;
+ unsigned int num_advances;
+ unsigned int default_advance;
+ const OT::_mtx *table;
+ hb_blob_t *blob;
+
+ inline void init (hb_face_t *face,
+ hb_tag_t _hea_tag, hb_tag_t _mtx_tag,
+ unsigned int default_advance)
+ {
+ this->default_advance = default_advance;
+ this->num_metrics = face->get_num_glyphs ();
+
+ hb_blob_t *_hea_blob = OT::Sanitizer<OT::_hea>::sanitize (face->reference_table (_hea_tag));
+ const OT::_hea *_hea = OT::Sanitizer<OT::_hea>::lock_instance (_hea_blob);
+ this->num_advances = _hea->numberOfLongMetrics;
+ hb_blob_destroy (_hea_blob);
+
+ this->blob = OT::Sanitizer<OT::_mtx>::sanitize (face->reference_table (_mtx_tag));
+ if (unlikely (!this->num_advances ||
+ 2 * (this->num_advances + this->num_metrics) < hb_blob_get_length (this->blob)))
+ {
+ this->num_metrics = this->num_advances = 0;
+ hb_blob_destroy (this->blob);
+ this->blob = hb_blob_get_empty ();
+ }
+ this->table = OT::Sanitizer<OT::_mtx>::lock_instance (this->blob);
+ }
+
+ inline void fini (void)
+ {
+ hb_blob_destroy (this->blob);
+ }
+
+ inline unsigned int get_advance (hb_codepoint_t glyph) const
+ {
+ if (unlikely (glyph >= this->num_metrics))
+ {
+ /* If this->num_metrics is zero, it means we don't have the metrics table
+ * for this direction: return one EM. Otherwise, it means that the glyph
+ * index is out of bound: return zero. */
+ if (this->num_metrics)
+ return 0;
+ else
+ return this->default_advance;
+ }
+
+ if (glyph >= this->num_advances)
+ glyph = this->num_advances - 1;
+
+ return this->table->longMetric[glyph].advance;
+ }
+};
+
+struct hb_ot_face_cmap_accelerator_t
+{
+ const OT::CmapSubtable *table;
+ const OT::CmapSubtable *uvs_table;
+ hb_blob_t *blob;
+
+ inline void init (hb_face_t *face)
+ {
+ this->blob = OT::Sanitizer<OT::cmap>::sanitize (face->reference_table (HB_OT_TAG_cmap));
+ const OT::cmap *cmap = OT::Sanitizer<OT::cmap>::lock_instance (this->blob);
+ const OT::CmapSubtable *subtable = NULL;
+ const OT::CmapSubtable *subtable_uvs = NULL;
+
+ /* 32-bit subtables. */
+ if (!subtable) subtable = cmap->find_subtable (3, 10);
+ if (!subtable) subtable = cmap->find_subtable (0, 6);
+ if (!subtable) subtable = cmap->find_subtable (0, 4);
+ /* 16-bit subtables. */
+ if (!subtable) subtable = cmap->find_subtable (3, 1);
+ if (!subtable) subtable = cmap->find_subtable (0, 3);
+ if (!subtable) subtable = cmap->find_subtable (0, 2);
+ if (!subtable) subtable = cmap->find_subtable (0, 1);
+ if (!subtable) subtable = cmap->find_subtable (0, 0);
+ /* Meh. */
+ if (!subtable) subtable = &OT::Null(OT::CmapSubtable);
+
+ /* UVS subtable. */
+ if (!subtable_uvs) subtable_uvs = cmap->find_subtable (0, 5);
+ /* Meh. */
+ if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtable);
+
+ this->table = subtable;
+ this->uvs_table = subtable_uvs;
+ }
+
+ inline void fini (void)
+ {
+ hb_blob_destroy (this->blob);
+ }
+
+ inline bool get_glyph (hb_codepoint_t unicode,
+ hb_codepoint_t variation_selector,
+ hb_codepoint_t *glyph) const
+ {
+ if (unlikely (variation_selector))
+ {
+ switch (this->uvs_table->get_glyph_variant (unicode,
+ variation_selector,
+ glyph))
+ {
+ case OT::GLYPH_VARIANT_NOT_FOUND: return false;
+ case OT::GLYPH_VARIANT_FOUND: return true;
+ case OT::GLYPH_VARIANT_USE_DEFAULT: break;
+ }
+ }
+
+ return this->table->get_glyph (unicode, glyph);
+ }
+};
+
struct hb_ot_font_t
{
- unsigned int num_glyphs;
- unsigned int num_hmetrics;
- const OT::hmtx *hmtx;
- hb_blob_t *hmtx_blob;
-
- const OT::CmapSubtable *cmap;
- const OT::CmapSubtable *cmap_uvs;
- hb_blob_t *cmap_blob;
+ hb_ot_face_cmap_accelerator_t cmap;
+ hb_ot_face_metrics_accelerator_t h_metrics;
+ hb_ot_face_metrics_accelerator_t v_metrics;
};
@@ -53,50 +164,16 @@ static hb_ot_font_t *
_hb_ot_font_create (hb_font_t *font)
{
hb_ot_font_t *ot_font = (hb_ot_font_t *) calloc (1, sizeof (hb_ot_font_t));
+ hb_face_t *face = font->face;
if (unlikely (!ot_font))
return NULL;
- ot_font->num_glyphs = font->face->get_num_glyphs ();
+ unsigned int upem = face->get_upem ();
- {
- hb_blob_t *hhea_blob = OT::Sanitizer<OT::hhea>::sanitize (font->face->reference_table (HB_OT_TAG_hhea));
- const OT::hhea *hhea = OT::Sanitizer<OT::hhea>::lock_instance (hhea_blob);
- ot_font->num_hmetrics = hhea->numberOfHMetrics;
- hb_blob_destroy (hhea_blob);
- }
- ot_font->hmtx_blob = OT::Sanitizer<OT::hmtx>::sanitize (font->face->reference_table (HB_OT_TAG_hmtx));
- if (unlikely (!ot_font->num_hmetrics ||
- 2 * (ot_font->num_hmetrics + ot_font->num_glyphs) < hb_blob_get_length (ot_font->hmtx_blob)))
- {
- hb_blob_destroy (ot_font->hmtx_blob);
- free (ot_font);
- return NULL;
- }
- ot_font->hmtx = OT::Sanitizer<OT::hmtx>::lock_instance (ot_font->hmtx_blob);
-
- ot_font->cmap_blob = OT::Sanitizer<OT::cmap>::sanitize (font->face->reference_table (HB_OT_TAG_cmap));
- const OT::cmap *cmap = OT::Sanitizer<OT::cmap>::lock_instance (ot_font->cmap_blob);
- const OT::CmapSubtable *subtable = NULL;
- const OT::CmapSubtable *subtable_uvs = NULL;
-
- /* 32-bit subtables. */
- if (!subtable) subtable = cmap->find_subtable (0, 6);
- if (!subtable) subtable = cmap->find_subtable (0, 4);
- if (!subtable) subtable = cmap->find_subtable (3, 10);
- /* 16-bit subtables. */
- if (!subtable) subtable = cmap->find_subtable (0, 3);
- if (!subtable) subtable = cmap->find_subtable (3, 1);
- /* Meh. */
- if (!subtable) subtable = &OT::Null(OT::CmapSubtable);
-
- /* UVS subtable. */
- if (!subtable_uvs) subtable_uvs = cmap->find_subtable (0, 5);
- /* Meh. */
- if (!subtable_uvs) subtable_uvs = &OT::Null(OT::CmapSubtable);
-
- ot_font->cmap = subtable;
- ot_font->cmap_uvs = subtable_uvs;
+ ot_font->cmap.init (face);
+ ot_font->h_metrics.init (face, HB_OT_TAG_hhea, HB_OT_TAG_hmtx, upem>>1);
+ ot_font->v_metrics.init (face, HB_OT_TAG_vhea, HB_OT_TAG_vmtx, upem); /* TODO Can we do this lazily? */
return ot_font;
}
@@ -104,8 +181,9 @@ _hb_ot_font_create (hb_font_t *font)
static void
_hb_ot_font_destroy (hb_ot_font_t *ot_font)
{
- hb_blob_destroy (ot_font->cmap_blob);
- hb_blob_destroy (ot_font->hmtx_blob);
+ ot_font->cmap.fini ();
+ ot_font->h_metrics.fini ();
+ ot_font->v_metrics.fini ();
free (ot_font);
}
@@ -121,20 +199,7 @@ hb_ot_get_glyph (hb_font_t *font HB_UNUSED,
{
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
-
- if (unlikely (variation_selector))
- {
- switch (ot_font->cmap_uvs->get_glyph_variant (unicode,
- variation_selector,
- glyph))
- {
- case OT::GLYPH_VARIANT_NOT_FOUND: return false;
- case OT::GLYPH_VARIANT_FOUND: return true;
- case OT::GLYPH_VARIANT_USE_DEFAULT: break;
- }
- }
-
- return ot_font->cmap->get_glyph (unicode, glyph);
+ return ot_font->cmap.get_glyph (unicode, variation_selector, glyph);
}
static hb_position_t
@@ -144,14 +209,7 @@ hb_ot_get_glyph_h_advance (hb_font_t *font HB_UNUSED,
void *user_data HB_UNUSED)
{
const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
-
- if (unlikely (glyph >= ot_font->num_glyphs))
- return 0; /* Maybe better to return notdef's advance instead? */
-
- if (glyph >= ot_font->num_hmetrics)
- glyph = ot_font->num_hmetrics - 1;
-
- return font->em_scale_x (ot_font->hmtx->longHorMetric[glyph].advanceWidth);
+ return font->em_scale_x (ot_font->h_metrics.get_advance (glyph));
}
static hb_position_t
@@ -160,8 +218,8 @@ hb_ot_get_glyph_v_advance (hb_font_t *font HB_UNUSED,
hb_codepoint_t glyph,
void *user_data HB_UNUSED)
{
- /* TODO */
- return 0;
+ const hb_ot_font_t *ot_font = (const hb_ot_font_t *) font_data;
+ return font->em_scale_y (-ot_font->v_metrics.get_advance (glyph));
}
static hb_bool_t
@@ -206,6 +264,7 @@ hb_ot_get_glyph_v_kerning (hb_font_t *font HB_UNUSED,
hb_codepoint_t bottom_glyph HB_UNUSED,
void *user_data HB_UNUSED)
{
+ /* OpenType doesn't have vertical-kerning other than GPOS. */
return 0;
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-hhea-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-hhea-table.hh
index d433200165..edc0e29cbf 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-hhea-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-hhea-table.hh
@@ -35,14 +35,19 @@ namespace OT {
/*
* hhea -- The Horizontal Header Table
+ * vhea -- The Vertical Header Table
*/
#define HB_OT_TAG_hhea HB_TAG('h','h','e','a')
+#define HB_OT_TAG_vhea HB_TAG('v','h','e','a')
-struct hhea
+struct _hea
{
- static const hb_tag_t tableTag = HB_OT_TAG_hhea;
+ static const hb_tag_t tableTag = HB_TAG('_','h','e','a');
+
+ static const hb_tag_t hheaTag = HB_OT_TAG_hhea;
+ static const hb_tag_t vheaTag = HB_OT_TAG_vhea;
inline bool sanitize (hb_sanitize_context_t *c) {
TRACE_SANITIZE (this);
@@ -51,45 +56,45 @@ struct hhea
public:
FixedVersion version; /* 0x00010000u for version 1.0. */
- FWORD ascender; /* Typographic ascent. <a
- * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
- * (Distance from baseline of highest
- * ascender)</a> */
- FWORD descender; /* Typographic descent. <a
- * href="http://developer.apple.com/fonts/TTRefMan/RM06/Chap6hhea.html">
- * (Distance from baseline of lowest
- * descender)</a> */
- FWORD lineGap; /* Typographic line gap. Negative
- * LineGap values are treated as zero
- * in Windows 3.1, System 6, and
- * System 7. */
- UFWORD advanceWidthMax; /* Maximum advance width value in
- * 'hmtx' table. */
- FWORD minLeftSideBearing; /* Minimum left sidebearing value in
- * 'hmtx' table. */
- FWORD minRightSideBearing; /* Minimum right sidebearing value;
+ FWORD ascender; /* Typographic ascent. */
+ FWORD descender; /* Typographic descent. */
+ FWORD lineGap; /* Typographic line gap. */
+ UFWORD advanceMax; /* Maximum advance width/height value in
+ * metrics table. */
+ FWORD minLeadingBearing; /* Minimum left/top sidebearing value in
+ * metrics table. */
+ FWORD minTrailingBearing; /* Minimum right/bottom sidebearing value;
* calculated as Min(aw - lsb -
- * (xMax - xMin)). */
- FWORD xMaxExtent; /* Max(lsb + (xMax - xMin)). */
+ * (xMax - xMin)) for horizontal. */
+ FWORD maxExtent; /* horizontal: Max(lsb + (xMax - xMin)),
+ * vertical: minLeadingBearing+(yMax-yMin). */
SHORT caretSlopeRise; /* Used to calculate the slope of the
- * cursor (rise/run); 1 for vertical. */
- SHORT caretSlopeRun; /* 0 for vertical. */
+ * cursor (rise/run); 1 for vertical caret,
+ * 0 for horizontal.*/
+ SHORT caretSlopeRun; /* 0 for vertical caret, 1 for horizontal. */
SHORT caretOffset; /* The amount by which a slanted
* highlight on a glyph needs
* to be shifted to produce the
* best appearance. Set to 0 for
- * non--slanted fonts */
- SHORT reserved1; /* set to 0 */
- SHORT reserved2; /* set to 0 */
- SHORT reserved3; /* set to 0 */
- SHORT reserved4; /* set to 0 */
+ * non-slanted fonts. */
+ SHORT reserved1; /* Set to 0. */
+ SHORT reserved2; /* Set to 0. */
+ SHORT reserved3; /* Set to 0. */
+ SHORT reserved4; /* Set to 0. */
SHORT metricDataFormat; /* 0 for current format. */
- USHORT numberOfHMetrics; /* Number of hMetric entries in 'hmtx'
- * table */
+ USHORT numberOfLongMetrics; /* Number of LongMetric entries in metric
+ * table. */
public:
DEFINE_SIZE_STATIC (36);
};
+struct hhea : _hea {
+ static const hb_tag_t tableTag = HB_OT_TAG_hhea;
+};
+struct vhea : _hea {
+ static const hb_tag_t tableTag = HB_OT_TAG_vhea;
+};
+
} /* namespace OT */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-hmtx-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-hmtx-table.hh
index e918e3b3f4..317854ce7f 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-hmtx-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-hmtx-table.hh
@@ -35,22 +35,27 @@ namespace OT {
/*
* hmtx -- The Horizontal Metrics Table
+ * vmtx -- The Vertical Metrics Table
*/
#define HB_OT_TAG_hmtx HB_TAG('h','m','t','x')
+#define HB_OT_TAG_vmtx HB_TAG('v','m','t','x')
-struct LongHorMetric
+struct LongMetric
{
- USHORT advanceWidth;
- SHORT lsb;
+ USHORT advance; /* Advance width/height. */
+ SHORT lsb; /* Leading (left/top) side bearing. */
public:
DEFINE_SIZE_STATIC (4);
};
-struct hmtx
+struct _mtx
{
- static const hb_tag_t tableTag = HB_OT_TAG_hmtx;
+ static const hb_tag_t tableTag = HB_TAG('_','m','t','x');
+
+ static const hb_tag_t hmtxTag = HB_OT_TAG_hmtx;
+ static const hb_tag_t vmtxTag = HB_OT_TAG_vmtx;
inline bool sanitize (hb_sanitize_context_t *c) {
TRACE_SANITIZE (this);
@@ -60,7 +65,7 @@ struct hmtx
}
public:
- LongHorMetric longHorMetric[VAR]; /* Paired advance width and left side
+ LongMetric longMetric[VAR]; /* Paired advance width and leading
* bearing values for each glyph. The
* value numOfHMetrics comes from
* the 'hhea' table. If the font is
@@ -68,23 +73,29 @@ struct hmtx
* be in the array, but that entry is
* required. The last entry applies to
* all subsequent glyphs. */
- SHORT leftSideBearingX[VAR]; /* Here the advanceWidth is assumed
- * to be the same as the advanceWidth
+ SHORT leadingBearingX[VAR]; /* Here the advance is assumed
+ * to be the same as the advance
* for the last entry above. The
* number of entries in this array is
* derived from numGlyphs (from 'maxp'
- * table) minus numberOfHMetrics. This
- * generally is used with a run of
- * monospaced glyphs (e.g., Kanji
+ * table) minus numberOfLongMetrics.
+ * This generally is used with a run
+ * of monospaced glyphs (e.g., Kanji
* fonts or Courier fonts). Only one
* run is allowed and it must be at
* the end. This allows a monospaced
- * font to vary the left side bearing
+ * font to vary the side bearing
* values for each glyph. */
public:
- DEFINE_SIZE_ARRAY2 (0, longHorMetric, leftSideBearingX);
+ DEFINE_SIZE_ARRAY2 (0, longMetric, leadingBearingX);
};
+struct hmtx : _mtx {
+ static const hb_tag_t tableTag = HB_OT_TAG_hmtx;
+};
+struct vmtx : _mtx {
+ static const hb_tag_t tableTag = HB_OT_TAG_vmtx;
+};
} /* namespace OT */
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh
index d8e3e6e11d..f7fef5273a 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gpos-table.hh
@@ -345,8 +345,8 @@ struct AnchorMatrix
inline const Anchor& get_anchor (unsigned int row, unsigned int col, unsigned int cols, bool *found) const {
*found = false;
if (unlikely (row >= rows || col >= cols)) return Null(Anchor);
- *found = !matrix[row * cols + col].is_null ();
- return this+matrix[row * cols + col];
+ *found = !matrixZ[row * cols + col].is_null ();
+ return this+matrixZ[row * cols + col];
}
inline bool sanitize (hb_sanitize_context_t *c, unsigned int cols) {
@@ -354,19 +354,19 @@ struct AnchorMatrix
if (!c->check_struct (this)) return TRACE_RETURN (false);
if (unlikely (rows > 0 && cols >= ((unsigned int) -1) / rows)) return TRACE_RETURN (false);
unsigned int count = rows * cols;
- if (!c->check_array (matrix, matrix[0].static_size, count)) return TRACE_RETURN (false);
+ if (!c->check_array (matrixZ, matrixZ[0].static_size, count)) return TRACE_RETURN (false);
for (unsigned int i = 0; i < count; i++)
- if (!matrix[i].sanitize (c, this)) return TRACE_RETURN (false);
+ if (!matrixZ[i].sanitize (c, this)) return TRACE_RETURN (false);
return TRACE_RETURN (true);
}
USHORT rows; /* Number of rows */
protected:
OffsetTo<Anchor>
- matrix[VAR]; /* Matrix of offsets to Anchor tables--
+ matrixZ[VAR]; /* Matrix of offsets to Anchor tables--
* from beginning of AnchorMatrix table */
public:
- DEFINE_SIZE_ARRAY (2, matrix);
+ DEFINE_SIZE_ARRAY (2, matrixZ);
};
@@ -530,7 +530,7 @@ struct SinglePos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
case 2: return TRACE_RETURN (c->dispatch (u.format2));
@@ -583,7 +583,7 @@ struct PairSet
unsigned int len2 = valueFormats[1].get_len ();
unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
- const PairValueRecord *record = CastP<PairValueRecord> (array);
+ const PairValueRecord *record = CastP<PairValueRecord> (arrayZ);
unsigned int count = len;
for (unsigned int i = 0; i < count; i++)
{
@@ -602,12 +602,24 @@ struct PairSet
unsigned int len2 = valueFormats[1].get_len ();
unsigned int record_size = USHORT::static_size * (1 + len1 + len2);
- const PairValueRecord *record = CastP<PairValueRecord> (array);
+ const PairValueRecord *record_array = CastP<PairValueRecord> (arrayZ);
unsigned int count = len;
- for (unsigned int i = 0; i < count; i++)
+
+ /* Hand-coded bsearch. */
+ if (unlikely (!count))
+ return TRACE_RETURN (false);
+ hb_codepoint_t x = buffer->info[pos].codepoint;
+ int min = 0, max = (int) count - 1;
+ while (min <= max)
{
- /* TODO bsearch */
- if (buffer->info[pos].codepoint == record->secondGlyph)
+ int mid = (min + max) / 2;
+ const PairValueRecord *record = &StructAtOffset<PairValueRecord> (record_array, record_size * mid);
+ hb_codepoint_t mid_x = record->secondGlyph;
+ if (x < mid_x)
+ max = mid - 1;
+ else if (x > mid_x)
+ min = mid + 1;
+ else
{
valueFormats[0].apply_value (c->font, c->direction, this,
&record->values[0], buffer->cur_pos());
@@ -618,7 +630,6 @@ struct PairSet
buffer->idx = pos;
return TRACE_RETURN (true);
}
- record = &StructAtOffset<PairValueRecord> (record, record_size);
}
return TRACE_RETURN (false);
@@ -634,20 +645,20 @@ struct PairSet
inline bool sanitize (hb_sanitize_context_t *c, const sanitize_closure_t *closure) {
TRACE_SANITIZE (this);
if (!(c->check_struct (this)
- && c->check_array (array, USHORT::static_size * closure->stride, len))) return TRACE_RETURN (false);
+ && c->check_array (arrayZ, USHORT::static_size * closure->stride, len))) return TRACE_RETURN (false);
unsigned int count = len;
- PairValueRecord *record = CastP<PairValueRecord> (array);
+ PairValueRecord *record = CastP<PairValueRecord> (arrayZ);
return TRACE_RETURN (closure->valueFormats[0].sanitize_values_stride_unsafe (c, closure->base, &record->values[0], count, closure->stride)
&& closure->valueFormats[1].sanitize_values_stride_unsafe (c, closure->base, &record->values[closure->len1], count, closure->stride));
}
protected:
USHORT len; /* Number of PairValueRecords */
- USHORT array[VAR]; /* Array of PairValueRecords--ordered
+ USHORT arrayZ[VAR]; /* Array of PairValueRecords--ordered
* by GlyphID of the second glyph */
public:
- DEFINE_SIZE_ARRAY (2, array);
+ DEFINE_SIZE_ARRAY (2, arrayZ);
};
struct PairPosFormat1
@@ -822,7 +833,7 @@ struct PairPos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
case 2: return TRACE_RETURN (c->dispatch (u.format2));
@@ -989,7 +1000,7 @@ struct CursivePos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1088,7 +1099,7 @@ struct MarkBasePos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1209,7 +1220,7 @@ struct MarkLigPos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1328,7 +1339,7 @@ struct MarkMarkPos
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1387,7 +1398,7 @@ struct PosLookupSubTable
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, lookup_type);
switch (lookup_type) {
case Single: return TRACE_RETURN (u.single.dispatch (c));
case Pair: return TRACE_RETURN (u.pair.dispatch (c));
@@ -1488,8 +1499,8 @@ struct PosLookup : Lookup
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
unsigned int lookup_type = get_type ();
+ TRACE_DISPATCH (this, lookup_type);
unsigned int count = get_subtable_count ();
for (unsigned int i = 0; i < count; i++) {
typename context_t::return_t r = get_subtable (i).dispatch (c, lookup_type);
@@ -1589,6 +1600,8 @@ GPOS::position_start (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
void
GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
{
+ _hb_buffer_assert_gsubgpos_vars (buffer);
+
unsigned int len;
hb_glyph_position_t *pos = hb_buffer_get_glyph_positions (buffer, &len);
hb_direction_t direction = buffer->props.direction;
@@ -1600,8 +1613,6 @@ GPOS::position_finish (hb_font_t *font HB_UNUSED, hb_buffer_t *buffer)
/* Handle attachments */
for (unsigned int i = 0; i < len; i++)
fix_mark_attachment (pos, i, direction);
-
- _hb_buffer_deallocate_gsubgpos_vars (buffer);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh
index e1939735de..5d67be0ec0 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsub-table.hh
@@ -200,7 +200,7 @@ struct SingleSubst
TRACE_SERIALIZE (this);
if (unlikely (!c->extend_min (u.format))) return TRACE_RETURN (false);
unsigned int format = 2;
- int delta;
+ int delta = 0;
if (num_glyphs) {
format = 1;
/* TODO(serialize) check for wrap-around */
@@ -222,7 +222,7 @@ struct SingleSubst
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
case 2: return TRACE_RETURN (c->dispatch (u.format2));
@@ -422,7 +422,7 @@ struct MultipleSubst
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -573,7 +573,7 @@ struct AlternateSubst
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -889,7 +889,7 @@ struct LigatureSubst
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1053,7 +1053,7 @@ struct ReverseChainSingleSubst
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
default:return TRACE_RETURN (c->default_return_value ());
@@ -1100,7 +1100,7 @@ struct SubstLookupSubTable
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c, unsigned int lookup_type) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, lookup_type);
switch (lookup_type) {
case Single: return TRACE_RETURN (u.single.dispatch (c));
case Multiple: return TRACE_RETURN (u.multiple.dispatch (c));
@@ -1275,8 +1275,8 @@ struct SubstLookup : Lookup
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
unsigned int lookup_type = get_type ();
+ TRACE_DISPATCH (this, lookup_type);
unsigned int count = get_subtable_count ();
for (unsigned int i = 0; i < count; i++) {
typename context_t::return_t r = get_subtable (i).dispatch (c, lookup_type);
@@ -1338,7 +1338,7 @@ struct GSUB : GSUBGPOS
void
GSUB::substitute_start (hb_font_t *font, hb_buffer_t *buffer)
{
- _hb_buffer_allocate_gsubgpos_vars (buffer);
+ _hb_buffer_assert_gsubgpos_vars (buffer);
const GDEF &gdef = *hb_ot_layout_from_face (font->face)->gdef;
unsigned int count = buffer->len;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh
index 546ff4b0fd..57fc1e05f7 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-gsubgpos-private.hh
@@ -38,10 +38,10 @@ namespace OT {
-#define TRACE_DISPATCH(this) \
+#define TRACE_DISPATCH(this, format) \
hb_auto_trace_t<context_t::max_debug_depth, typename context_t::return_t> trace \
(&c->debug_depth, c->get_name (), this, HB_FUNC, \
- "");
+ "format %d", (int) format);
#ifndef HB_DEBUG_CLOSURE
#define HB_DEBUG_CLOSURE (HB_DEBUG+0)
@@ -168,6 +168,10 @@ struct hb_collect_glyphs_context_t
if (output == hb_set_get_empty ())
return HB_VOID;
+ /* Return if new lookup was recursed to before. */
+ if (recursed_lookups.has (lookup_index))
+ return HB_VOID;
+
hb_set_t *old_before = before;
hb_set_t *old_input = input;
hb_set_t *old_after = after;
@@ -181,6 +185,8 @@ struct hb_collect_glyphs_context_t
input = old_input;
after = old_after;
+ recursed_lookups.add (lookup_index);
+
return HB_VOID;
}
@@ -190,6 +196,7 @@ struct hb_collect_glyphs_context_t
hb_set_t *after;
hb_set_t *output;
recurse_func_t recurse_func;
+ hb_set_t recursed_lookups;
unsigned int nesting_level_left;
unsigned int debug_depth;
@@ -205,18 +212,30 @@ struct hb_collect_glyphs_context_t
after (glyphs_after ? glyphs_after : hb_set_get_empty ()),
output (glyphs_output ? glyphs_output : hb_set_get_empty ()),
recurse_func (NULL),
+ recursed_lookups (),
nesting_level_left (nesting_level_left_),
- debug_depth (0) {}
+ debug_depth (0)
+ {
+ recursed_lookups.init ();
+ }
+ ~hb_collect_glyphs_context_t (void)
+ {
+ recursed_lookups.fini ();
+ }
void set_recurse_func (recurse_func_t func) { recurse_func = func; }
};
+#ifndef HB_DEBUG_GET_COVERAGE
+#define HB_DEBUG_GET_COVERAGE (HB_DEBUG+0)
+#endif
+
struct hb_get_coverage_context_t
{
inline const char *get_name (void) { return "GET_COVERAGE"; }
- static const unsigned int max_debug_depth = 0;
+ static const unsigned int max_debug_depth = HB_DEBUG_GET_COVERAGE;
typedef const Coverage &return_t;
template <typename T>
inline return_t dispatch (const T &obj) { return obj.get_coverage (); }
@@ -1117,9 +1136,9 @@ struct Rule
inline void closure (hb_closure_context_t *c, ContextClosureLookupContext &lookup_context) const
{
TRACE_CLOSURE (this);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].static_size * (inputCount ? inputCount - 1 : 0));
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
context_closure_lookup (c,
- inputCount, input,
+ inputCount, inputZ,
lookupCount, lookupRecord,
lookup_context);
}
@@ -1127,9 +1146,9 @@ struct Rule
inline void collect_glyphs (hb_collect_glyphs_context_t *c, ContextCollectGlyphsLookupContext &lookup_context) const
{
TRACE_COLLECT_GLYPHS (this);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].static_size * (inputCount ? inputCount - 1 : 0));
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
context_collect_glyphs_lookup (c,
- inputCount, input,
+ inputCount, inputZ,
lookupCount, lookupRecord,
lookup_context);
}
@@ -1137,15 +1156,15 @@ struct Rule
inline bool would_apply (hb_would_apply_context_t *c, ContextApplyLookupContext &lookup_context) const
{
TRACE_WOULD_APPLY (this);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].static_size * (inputCount ? inputCount - 1 : 0));
- return TRACE_RETURN (context_would_apply_lookup (c, inputCount, input, lookupCount, lookupRecord, lookup_context));
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
+ return TRACE_RETURN (context_would_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
}
inline bool apply (hb_apply_context_t *c, ContextApplyLookupContext &lookup_context) const
{
TRACE_APPLY (this);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (input, input[0].static_size * (inputCount ? inputCount - 1 : 0));
- return TRACE_RETURN (context_apply_lookup (c, inputCount, input, lookupCount, lookupRecord, lookup_context));
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (inputZ, inputZ[0].static_size * (inputCount ? inputCount - 1 : 0));
+ return TRACE_RETURN (context_apply_lookup (c, inputCount, inputZ, lookupCount, lookupRecord, lookup_context));
}
public:
@@ -1153,8 +1172,8 @@ struct Rule
TRACE_SANITIZE (this);
return inputCount.sanitize (c)
&& lookupCount.sanitize (c)
- && c->check_range (input,
- input[0].static_size * inputCount
+ && c->check_range (inputZ,
+ inputZ[0].static_size * inputCount
+ lookupRecordX[0].static_size * lookupCount);
}
@@ -1163,12 +1182,12 @@ struct Rule
* glyph sequence--includes the first
* glyph */
USHORT lookupCount; /* Number of LookupRecords */
- USHORT input[VAR]; /* Array of match inputs--start with
+ USHORT inputZ[VAR]; /* Array of match inputs--start with
* second glyph */
LookupRecord lookupRecordX[VAR]; /* Array of LookupRecords--in
* design order */
public:
- DEFINE_SIZE_ARRAY2 (4, input, lookupRecordX);
+ DEFINE_SIZE_ARRAY2 (4, inputZ, lookupRecordX);
};
struct RuleSet
@@ -1413,16 +1432,16 @@ struct ContextFormat3
inline void closure (hb_closure_context_t *c) const
{
TRACE_CLOSURE (this);
- if (!(this+coverage[0]).intersects (c->glyphs))
+ if (!(this+coverageZ[0]).intersects (c->glyphs))
return;
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * glyphCount);
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount);
struct ContextClosureLookupContext lookup_context = {
{intersects_coverage},
this
};
context_closure_lookup (c,
- glyphCount, (const USHORT *) (coverage + 1),
+ glyphCount, (const USHORT *) (coverageZ + 1),
lookupCount, lookupRecord,
lookup_context);
}
@@ -1430,16 +1449,16 @@ struct ContextFormat3
inline void collect_glyphs (hb_collect_glyphs_context_t *c) const
{
TRACE_COLLECT_GLYPHS (this);
- (this+coverage[0]).add_coverage (c->input);
+ (this+coverageZ[0]).add_coverage (c->input);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * glyphCount);
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount);
struct ContextCollectGlyphsLookupContext lookup_context = {
{collect_coverage},
this
};
context_collect_glyphs_lookup (c,
- glyphCount, (const USHORT *) (coverage + 1),
+ glyphCount, (const USHORT *) (coverageZ + 1),
lookupCount, lookupRecord,
lookup_context);
}
@@ -1448,41 +1467,42 @@ struct ContextFormat3
{
TRACE_WOULD_APPLY (this);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * glyphCount);
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount);
struct ContextApplyLookupContext lookup_context = {
{match_coverage},
this
};
- return TRACE_RETURN (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverage + 1), lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_would_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
}
inline const Coverage &get_coverage (void) const
{
- return this+coverage[0];
+ return this+coverageZ[0];
}
inline bool apply (hb_apply_context_t *c) const
{
TRACE_APPLY (this);
- unsigned int index = (this+coverage[0]).get_coverage (c->buffer->cur().codepoint);
+ unsigned int index = (this+coverageZ[0]).get_coverage (c->buffer->cur().codepoint);
if (likely (index == NOT_COVERED)) return TRACE_RETURN (false);
- const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * glyphCount);
+ const LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * glyphCount);
struct ContextApplyLookupContext lookup_context = {
{match_coverage},
this
};
- return TRACE_RETURN (context_apply_lookup (c, glyphCount, (const USHORT *) (coverage + 1), lookupCount, lookupRecord, lookup_context));
+ return TRACE_RETURN (context_apply_lookup (c, glyphCount, (const USHORT *) (coverageZ + 1), lookupCount, lookupRecord, lookup_context));
}
inline bool sanitize (hb_sanitize_context_t *c) {
TRACE_SANITIZE (this);
if (!c->check_struct (this)) return TRACE_RETURN (false);
unsigned int count = glyphCount;
- if (!c->check_array (coverage, coverage[0].static_size, count)) return TRACE_RETURN (false);
+ if (!count) return TRACE_RETURN (false); /* We want to access coverageZ[0] freely. */
+ if (!c->check_array (coverageZ, coverageZ[0].static_size, count)) return TRACE_RETURN (false);
for (unsigned int i = 0; i < count; i++)
- if (!coverage[i].sanitize (c, this)) return TRACE_RETURN (false);
- LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverage, coverage[0].static_size * count);
+ if (!coverageZ[i].sanitize (c, this)) return TRACE_RETURN (false);
+ LookupRecord *lookupRecord = &StructAtOffset<LookupRecord> (coverageZ, coverageZ[0].static_size * count);
return TRACE_RETURN (c->check_array (lookupRecord, lookupRecord[0].static_size, lookupCount));
}
@@ -1492,12 +1512,12 @@ struct ContextFormat3
* sequence */
USHORT lookupCount; /* Number of LookupRecords */
OffsetTo<Coverage>
- coverage[VAR]; /* Array of offsets to Coverage
+ coverageZ[VAR]; /* Array of offsets to Coverage
* table in glyph sequence order */
LookupRecord lookupRecordX[VAR]; /* Array of LookupRecords--in
* design order */
public:
- DEFINE_SIZE_ARRAY2 (6, coverage, lookupRecordX);
+ DEFINE_SIZE_ARRAY2 (6, coverageZ, lookupRecordX);
};
struct Context
@@ -1505,7 +1525,7 @@ struct Context
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
case 2: return TRACE_RETURN (c->dispatch (u.format2));
@@ -2090,6 +2110,7 @@ struct ChainContextFormat3
if (!backtrack.sanitize (c, this)) return TRACE_RETURN (false);
OffsetArrayOf<Coverage> &input = StructAfter<OffsetArrayOf<Coverage> > (backtrack);
if (!input.sanitize (c, this)) return TRACE_RETURN (false);
+ if (!input.len) return TRACE_RETURN (false); /* To be consistent with Context. */
OffsetArrayOf<Coverage> &lookahead = StructAfter<OffsetArrayOf<Coverage> > (input);
if (!lookahead.sanitize (c, this)) return TRACE_RETURN (false);
ArrayOf<LookupRecord> &lookup = StructAfter<ArrayOf<LookupRecord> > (lookahead);
@@ -2122,7 +2143,7 @@ struct ChainContext
template <typename context_t>
inline typename context_t::return_t dispatch (context_t *c) const
{
- TRACE_DISPATCH (this);
+ TRACE_DISPATCH (this, u.format);
switch (u.format) {
case 1: return TRACE_RETURN (c->dispatch (u.format1));
case 2: return TRACE_RETURN (c->dispatch (u.format2));
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-private.hh
index 9b06300800..3f7c858d1c 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout-private.hh
@@ -126,8 +126,7 @@ struct hb_ot_layout_lookup_accelerator_t
lookup.add_coverage (&digest);
}
- template <typename TLookup>
- inline void fini (const TLookup &lookup)
+ inline void fini (void)
{
}
@@ -420,6 +419,13 @@ _hb_buffer_deallocate_unicode_vars (hb_buffer_t *buffer)
}
static inline void
+_hb_buffer_assert_unicode_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_ASSERT_VAR (buffer, unicode_props0);
+ HB_BUFFER_ASSERT_VAR (buffer, unicode_props1);
+}
+
+static inline void
_hb_buffer_allocate_gsubgpos_vars (hb_buffer_t *buffer)
{
HB_BUFFER_ALLOCATE_VAR (buffer, glyph_props);
@@ -435,6 +441,14 @@ _hb_buffer_deallocate_gsubgpos_vars (hb_buffer_t *buffer)
HB_BUFFER_DEALLOCATE_VAR (buffer, glyph_props);
}
+static inline void
+_hb_buffer_assert_gsubgpos_vars (hb_buffer_t *buffer)
+{
+ HB_BUFFER_ASSERT_VAR (buffer, glyph_props);
+ HB_BUFFER_ASSERT_VAR (buffer, lig_props);
+ HB_BUFFER_ASSERT_VAR (buffer, syllable);
+}
+
/* Make sure no one directly touches our props... */
#undef unicode_props0
#undef unicode_props1
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
index 661d90ea0d..602b94ecd6 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-layout.cc
@@ -84,9 +84,9 @@ void
_hb_ot_layout_destroy (hb_ot_layout_t *layout)
{
for (unsigned int i = 0; i < layout->gsub_lookup_count; i++)
- layout->gsub_accels[i].fini (layout->gsub->get_lookup (i));
+ layout->gsub_accels[i].fini ();
for (unsigned int i = 0; i < layout->gpos_lookup_count; i++)
- layout->gpos_accels[i].fini (layout->gpos->get_lookup (i));
+ layout->gpos_accels[i].fini ();
free (layout->gsub_accels);
free (layout->gpos_accels);
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-fallback.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-fallback.hh
index 2d8488e151..a77f24ec84 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-fallback.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-fallback.hh
@@ -33,6 +33,8 @@
#include "hb-ot-layout-gsub-table.hh"
+/* Features ordered the same as the entries in shaping_table rows,
+ * followed by rlig. Don't change. */
static const hb_tag_t arabic_fallback_features[] =
{
HB_TAG('i','n','i','t'),
@@ -42,16 +44,6 @@ static const hb_tag_t arabic_fallback_features[] =
HB_TAG('r','l','i','g'),
};
-/* Same order as the fallback feature array */
-enum {
- FALLBACK_INIT,
- FALLBACK_MEDI,
- FALLBACK_FINA,
- FALLBACK_ISOL,
- FALLBACK_RLIG,
- ARABIC_NUM_FALLBACK_FEATURES
-};
-
static OT::SubstLookup *
arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan HB_UNUSED,
hb_font_t *font,
@@ -80,6 +72,9 @@ arabic_fallback_synthesize_lookup_single (const hb_ot_shape_plan_t *plan HB_UNUS
num_glyphs++;
}
+ if (!num_glyphs)
+ return NULL;
+
/* Bubble-sort!
* May not be good-enough for presidential candidate interviews, but good-enough for us... */
hb_bubble_sort (&glyphs[0], num_glyphs, OT::GlyphID::cmp, &substitutes[0]);
@@ -157,6 +152,9 @@ arabic_fallback_synthesize_lookup_ligature (const hb_ot_shape_plan_t *plan HB_UN
}
}
+ if (!num_ligatures)
+ return NULL;
+
OT::Supplier<OT::GlyphID> first_glyphs_supplier (first_glyphs, num_first_glyphs);
OT::Supplier<unsigned int > ligature_per_first_glyph_count_supplier (ligature_per_first_glyph_count_list, num_first_glyphs);
OT::Supplier<OT::GlyphID> ligatures_supplier (ligature_list, num_ligatures);
@@ -193,17 +191,108 @@ arabic_fallback_synthesize_lookup (const hb_ot_shape_plan_t *plan,
return arabic_fallback_synthesize_lookup_ligature (plan, font);
}
+#define ARABIC_FALLBACK_MAX_LOOKUPS 5
+
struct arabic_fallback_plan_t
{
ASSERT_POD ();
- hb_mask_t mask_array[ARABIC_NUM_FALLBACK_FEATURES];
- OT::SubstLookup *lookup_array[ARABIC_NUM_FALLBACK_FEATURES];
- hb_ot_layout_lookup_accelerator_t accel_array[ARABIC_NUM_FALLBACK_FEATURES];
+ unsigned int num_lookups;
+ bool free_lookups;
+
+ hb_mask_t mask_array[ARABIC_FALLBACK_MAX_LOOKUPS];
+ OT::SubstLookup *lookup_array[ARABIC_FALLBACK_MAX_LOOKUPS];
+ hb_ot_layout_lookup_accelerator_t accel_array[ARABIC_FALLBACK_MAX_LOOKUPS];
};
static const arabic_fallback_plan_t arabic_fallback_plan_nil = {};
+#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(HB_NO_WIN1256)
+#define HB_WITH_WIN1256
+#endif
+
+#ifdef HB_WITH_WIN1256
+#include "hb-ot-shape-complex-arabic-win1256.hh"
+#endif
+
+struct ManifestLookup {
+ OT::Tag tag;
+ OT::OffsetTo<OT::SubstLookup> lookupOffset;
+};
+typedef OT::ArrayOf<ManifestLookup> Manifest;
+
+static bool
+arabic_fallback_plan_init_win1256 (arabic_fallback_plan_t *fallback_plan,
+ const hb_ot_shape_plan_t *plan,
+ hb_font_t *font)
+{
+#ifdef HB_WITH_WIN1256
+ /* Does this font look like it's Windows-1256-encoded? */
+ hb_codepoint_t g;
+ if (!(hb_font_get_glyph (font, 0x0627u, 0, &g) && g == 199 /* ALEF */ &&
+ hb_font_get_glyph (font, 0x0644u, 0, &g) && g == 225 /* LAM */ &&
+ hb_font_get_glyph (font, 0x0649u, 0, &g) && g == 236 /* ALEF MAKSURA */ &&
+ hb_font_get_glyph (font, 0x064Au, 0, &g) && g == 237 /* YEH */ &&
+ hb_font_get_glyph (font, 0x0652u, 0, &g) && g == 250 /* SUKUN */))
+ return false;
+
+ const Manifest &manifest = reinterpret_cast<const Manifest&> (arabic_win1256_gsub_lookups.manifest);
+ ASSERT_STATIC (sizeof (arabic_win1256_gsub_lookups.manifestData) / sizeof (ManifestLookup)
+ <= ARABIC_FALLBACK_MAX_LOOKUPS);
+ /* TODO sanitize the table? */
+
+ unsigned j = 0;
+ unsigned int count = manifest.len;
+ for (unsigned int i = 0; i < count; i++)
+ {
+ fallback_plan->mask_array[j] = plan->map.get_1_mask (manifest[i].tag);
+ if (fallback_plan->mask_array[j])
+ {
+ fallback_plan->lookup_array[j] = const_cast<OT::SubstLookup*> (&(&manifest+manifest[i].lookupOffset));
+ if (fallback_plan->lookup_array[j])
+ {
+ fallback_plan->accel_array[j].init (*fallback_plan->lookup_array[j]);
+ j++;
+ }
+ }
+ }
+
+ fallback_plan->num_lookups = j;
+ fallback_plan->free_lookups = false;
+
+ return j > 0;
+#else
+ return false;
+#endif
+}
+
+static bool
+arabic_fallback_plan_init_unicode (arabic_fallback_plan_t *fallback_plan,
+ const hb_ot_shape_plan_t *plan,
+ hb_font_t *font)
+{
+ ASSERT_STATIC (ARRAY_LENGTH_CONST(arabic_fallback_features) <= ARABIC_FALLBACK_MAX_LOOKUPS);
+ unsigned int j = 0;
+ for (unsigned int i = 0; i < ARRAY_LENGTH(arabic_fallback_features) ; i++)
+ {
+ fallback_plan->mask_array[j] = plan->map.get_1_mask (arabic_fallback_features[i]);
+ if (fallback_plan->mask_array[j])
+ {
+ fallback_plan->lookup_array[j] = arabic_fallback_synthesize_lookup (plan, font, i);
+ if (fallback_plan->lookup_array[j])
+ {
+ fallback_plan->accel_array[j].init (*fallback_plan->lookup_array[j]);
+ j++;
+ }
+ }
+ }
+
+ fallback_plan->num_lookups = j;
+ fallback_plan->free_lookups = true;
+
+ return j > 0;
+}
+
static arabic_fallback_plan_t *
arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan,
hb_font_t *font)
@@ -212,17 +301,21 @@ arabic_fallback_plan_create (const hb_ot_shape_plan_t *plan,
if (unlikely (!fallback_plan))
return const_cast<arabic_fallback_plan_t *> (&arabic_fallback_plan_nil);
- for (unsigned int i = 0; i < ARABIC_NUM_FALLBACK_FEATURES; i++)
- {
- fallback_plan->mask_array[i] = plan->map.get_1_mask (arabic_fallback_features[i]);
- if (fallback_plan->mask_array[i]) {
- fallback_plan->lookup_array[i] = arabic_fallback_synthesize_lookup (plan, font, i);
- if (fallback_plan->lookup_array[i])
- fallback_plan->accel_array[i].init (*fallback_plan->lookup_array[i]);
- }
- }
+ fallback_plan->num_lookups = 0;
+ fallback_plan->free_lookups = false;
+
+ /* Try synthesizing GSUB table using Unicode Arabic Presentation Forms,
+ * in case the font has cmap entries for the presentation-forms characters. */
+ if (arabic_fallback_plan_init_unicode (fallback_plan, plan, font))
+ return fallback_plan;
- return fallback_plan;
+ /* See if this looks like a Windows-1256-encoded font. If it does, use a
+ * hand-coded GSUB table. */
+ if (arabic_fallback_plan_init_win1256 (fallback_plan, plan, font))
+ return fallback_plan;
+
+ free (fallback_plan);
+ return const_cast<arabic_fallback_plan_t *> (&arabic_fallback_plan_nil);
}
static void
@@ -231,11 +324,12 @@ arabic_fallback_plan_destroy (arabic_fallback_plan_t *fallback_plan)
if (!fallback_plan || fallback_plan == &arabic_fallback_plan_nil)
return;
- for (unsigned int i = 0; i < ARABIC_NUM_FALLBACK_FEATURES; i++)
+ for (unsigned int i = 0; i < fallback_plan->num_lookups; i++)
if (fallback_plan->lookup_array[i])
{
- fallback_plan->accel_array[i].fini (fallback_plan->lookup_array[i]);
- free (fallback_plan->lookup_array[i]);
+ fallback_plan->accel_array[i].fini ();
+ if (fallback_plan->free_lookups)
+ free (fallback_plan->lookup_array[i]);
}
free (fallback_plan);
@@ -247,7 +341,7 @@ arabic_fallback_plan_shape (arabic_fallback_plan_t *fallback_plan,
hb_buffer_t *buffer)
{
OT::hb_apply_context_t c (0, font, buffer);
- for (unsigned int i = 0; i < ARABIC_NUM_FALLBACK_FEATURES; i++)
+ for (unsigned int i = 0; i < fallback_plan->num_lookups; i++)
if (fallback_plan->lookup_array[i]) {
c.set_lookup_mask (fallback_plan->mask_array[i]);
hb_ot_layout_substitute_lookup (&c,
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh
index d41d6ce598..17100497ec 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic-table.hh
@@ -70,7 +70,7 @@ static const uint8_t joining_table[] =
/* Mandaic */
- /* 0840 */ R,D,D,D,D,D,R,D,D,R,D,D,D,D,D,R,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X,
+ /* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,U,U,U,X,X,X,X,X,X,X,
/* 0860 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
/* 0880 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic.cc
index 9870ba3da0..ae90864127 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-arabic.cc
@@ -223,8 +223,8 @@ data_create_arabic (const hb_ot_shape_plan_t *plan)
for (unsigned int i = 0; i < ARABIC_NUM_FEATURES; i++) {
arabic_plan->mask_array[i] = plan->map.get_1_mask (arabic_features[i]);
arabic_plan->do_fallback = arabic_plan->do_fallback &&
- !FEATURE_IS_SYRIAC (arabic_features[i]) &&
- plan->map.needs_fallback (arabic_features[i]);
+ (FEATURE_IS_SYRIAC (arabic_features[i]) ||
+ plan->map.needs_fallback (arabic_features[i]));
}
return arabic_plan;
@@ -248,18 +248,17 @@ arabic_joining (hb_buffer_t *buffer)
unsigned int prev = (unsigned int) -1, state = 0;
/* Check pre-context */
- if (!(buffer->flags & HB_BUFFER_FLAG_BOT))
- for (unsigned int i = 0; i < buffer->context_len[0]; i++)
- {
- unsigned int this_type = get_joining_type (buffer->context[0][i], buffer->unicode->general_category (buffer->context[0][i]));
+ for (unsigned int i = 0; i < buffer->context_len[0]; i++)
+ {
+ unsigned int this_type = get_joining_type (buffer->context[0][i], buffer->unicode->general_category (buffer->context[0][i]));
- if (unlikely (this_type == JOINING_TYPE_T))
- continue;
+ if (unlikely (this_type == JOINING_TYPE_T))
+ continue;
- const arabic_state_table_entry *entry = &arabic_state_table[state][this_type];
- state = entry->next_state;
- break;
- }
+ const arabic_state_table_entry *entry = &arabic_state_table[state][this_type];
+ state = entry->next_state;
+ break;
+ }
for (unsigned int i = 0; i < count; i++)
{
@@ -281,19 +280,18 @@ arabic_joining (hb_buffer_t *buffer)
state = entry->next_state;
}
- if (!(buffer->flags & HB_BUFFER_FLAG_EOT))
- for (unsigned int i = 0; i < buffer->context_len[1]; i++)
- {
- unsigned int this_type = get_joining_type (buffer->context[1][i], buffer->unicode->general_category (buffer->context[1][i]));
+ for (unsigned int i = 0; i < buffer->context_len[1]; i++)
+ {
+ unsigned int this_type = get_joining_type (buffer->context[1][i], buffer->unicode->general_category (buffer->context[1][i]));
- if (unlikely (this_type == JOINING_TYPE_T))
- continue;
+ if (unlikely (this_type == JOINING_TYPE_T))
+ continue;
- const arabic_state_table_entry *entry = &arabic_state_table[state][this_type];
- if (entry->prev_action != NONE && prev != (unsigned int) -1)
- info[prev].arabic_shaping_action() = entry->prev_action;
- break;
- }
+ const arabic_state_table_entry *entry = &arabic_state_table[state][this_type];
+ if (entry->prev_action != NONE && prev != (unsigned int) -1)
+ info[prev].arabic_shaping_action() = entry->prev_action;
+ break;
+ }
}
static void
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hangul.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hangul.cc
index 54c12ebca2..6ac18b08bf 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hangul.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hangul.cc
@@ -59,6 +59,15 @@ collect_features_hangul (hb_ot_shape_planner_t *plan)
map->add_feature (hangul_features[i], 1, F_NONE);
}
+static void
+override_features_hangul (hb_ot_shape_planner_t *plan)
+{
+ /* Uniscribe does not apply 'calt' for Hangul, and certain fonts
+ * (Noto Sans CJK, Source Sans Han, etc) apply all of jamo lookups
+ * in calt, which is not desirable. */
+ plan->map.add_feature (HB_TAG('c','a','l','t'), 0, F_GLOBAL);
+}
+
struct hangul_shape_plan_t
{
ASSERT_POD ();
@@ -404,7 +413,7 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hangul =
{
"hangul",
collect_features_hangul,
- NULL, /* override_features */
+ override_features_hangul,
data_create_hangul, /* data_create */
data_destroy_hangul, /* data_destroy */
preprocess_text_hangul,
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
index 2381a6e732..c7b7a5eba6 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-hebrew.cc
@@ -167,6 +167,6 @@ const hb_ot_complex_shaper_t _hb_ot_complex_shaper_hebrew =
NULL, /* decompose */
compose_hebrew,
NULL, /* setup_masks */
- HB_OT_SHAPE_ZERO_WIDTH_MARKS_DEFAULT,
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
true, /* fallback_position */
};
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh
index 522ccc67fe..f652d4fda7 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-machine.hh
@@ -34,1279 +34,1302 @@
#line 36 "hb-ot-shape-complex-indic-machine.hh"
static const unsigned char _indic_syllable_machine_trans_keys[] = {
- 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
- 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
- 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
- 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
- 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u,
- 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u,
- 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u,
- 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u,
+ 8u, 8u, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
+ 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u,
+ 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
+ 4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
+ 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u,
+ 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
+ 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
+ 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
- 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u,
- 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u,
- 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
- 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
- 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u,
- 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
- 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
- 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
- 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
- 4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u,
- 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u,
- 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u,
- 6u, 6u, 16u, 16u, 1u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
+ 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u, 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u,
+ 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
+ 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
+ 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u,
+ 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 8u, 8u, 1u, 16u,
+ 8u, 13u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
+ 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u,
+ 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
+ 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u,
+ 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 5u, 8u, 4u, 14u, 4u, 14u, 5u, 8u,
+ 5u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
+ 5u, 7u, 7u, 7u, 8u, 8u, 1u, 16u, 8u, 13u, 4u, 8u, 6u, 6u, 16u, 16u,
+ 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
+ 16u, 16u, 8u, 8u, 1u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 8u, 14u,
+ 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
- 3u, 10u, 8u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 6u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
+ 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 3u, 31u, 3u, 31u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 8u, 14u,
+ 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
- 3u, 10u, 8u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 6u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
+ 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
4u, 14u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u,
4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u,
- 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 8u, 14u, 5u, 10u,
+ 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u, 5u, 10u,
9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u, 3u, 10u,
- 8u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
- 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u,
+ 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
+ 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
4u, 14u, 3u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 8u, 14u,
+ 3u, 31u, 4u, 31u, 1u, 16u, 3u, 31u, 3u, 31u, 4u, 31u, 5u, 14u, 5u, 14u,
5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 3u, 13u,
- 3u, 10u, 8u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u,
- 6u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
+ 5u, 14u, 3u, 14u, 1u, 16u, 4u, 31u, 4u, 14u, 3u, 31u, 3u, 31u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u,
1u, 16u, 1u, 16u, 3u, 31u, 3u, 31u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u,
- 1u, 16u, 3u, 31u, 1u, 31u, 3u, 31u, 1u, 31u, 4u, 14u, 1u, 16u, 3u, 31u,
- 3u, 31u, 4u, 31u, 5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u,
- 5u, 10u, 3u, 31u, 3u, 31u, 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
- 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u,
- 3u, 13u, 3u, 10u, 8u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 3u, 10u, 8u, 10u,
+ 1u, 16u, 3u, 31u, 1u, 31u, 3u, 31u, 1u, 31u, 4u, 14u, 5u, 10u, 9u, 10u,
+ 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 1u, 16u, 3u, 31u, 3u, 31u,
+ 4u, 31u, 3u, 31u, 3u, 31u, 1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u,
+ 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u,
+ 3u, 13u, 3u, 10u, 5u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 3u, 10u, 5u, 10u,
5u, 10u, 9u, 10u, 9u, 9u, 9u, 10u, 9u, 10u, 9u, 9u, 5u, 10u, 0
};
static const char _indic_syllable_machine_key_spans[] = {
- 16, 1, 3, 3, 1, 3, 3, 1,
- 3, 3, 1, 3, 3, 1, 1, 1,
- 1, 4, 1, 1, 4, 1, 1, 4,
- 1, 1, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 11, 16, 1, 3, 3,
- 1, 3, 3, 1, 3, 3, 1, 3,
- 3, 1, 1, 1, 1, 4, 1, 1,
- 4, 1, 1, 4, 1, 1, 11, 11,
- 11, 11, 11, 11, 11, 11, 11, 11,
- 16, 1, 3, 3, 1, 3, 3, 1,
- 3, 3, 1, 3, 3, 1, 1, 1,
- 1, 4, 1, 1, 4, 1, 1, 4,
- 1, 1, 11, 11, 11, 11, 11, 11,
- 11, 11, 11, 16, 1, 3, 3, 1,
- 3, 3, 1, 3, 3, 1, 3, 3,
- 1, 1, 1, 1, 4, 1, 1, 4,
- 1, 1, 4, 1, 1, 11, 11, 11,
+ 1, 16, 6, 4, 3, 1, 4, 3,
+ 1, 4, 3, 1, 4, 3, 1, 5,
+ 1, 1, 5, 1, 1, 5, 1, 1,
+ 5, 1, 1, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 11, 1, 16, 6,
+ 4, 3, 1, 4, 3, 1, 4, 3,
+ 1, 4, 3, 1, 5, 1, 1, 5,
+ 1, 1, 5, 1, 1, 5, 1, 1,
11, 11, 11, 11, 11, 11, 11, 11,
- 11, 3, 3, 3, 3, 1, 3, 3,
- 1, 3, 3, 1, 16, 1, 1, 1,
- 1, 4, 1, 1, 4, 1, 1, 4,
+ 11, 11, 1, 16, 6, 4, 3, 1,
+ 4, 3, 1, 4, 3, 1, 4, 3,
+ 1, 5, 1, 1, 5, 1, 1, 5,
+ 1, 1, 5, 1, 1, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 1, 16,
+ 6, 4, 3, 1, 4, 3, 1, 4,
+ 3, 1, 4, 3, 1, 5, 1, 1,
+ 5, 1, 1, 5, 1, 1, 5, 1,
+ 1, 11, 11, 11, 11, 11, 11, 11,
+ 11, 11, 11, 11, 4, 11, 11, 4,
+ 3, 4, 3, 1, 4, 3, 1, 4,
+ 3, 1, 1, 16, 6, 5, 1, 1,
+ 5, 1, 1, 5, 1, 1, 5, 1,
1, 1, 31, 29, 29, 28, 16, 29,
29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 7,
+ 29, 28, 16, 29, 29, 28, 10, 10,
6, 2, 1, 2, 2, 1, 6, 11,
- 8, 3, 8, 11, 12, 12, 11, 10,
+ 8, 6, 8, 11, 12, 12, 11, 10,
12, 11, 10, 12, 11, 10, 12, 11,
- 9, 12, 16, 28, 11, 29, 29, 16,
+ 10, 12, 16, 28, 11, 29, 29, 16,
16, 16, 16, 16, 29, 29, 16, 16,
16, 16, 16, 29, 29, 16, 16, 16,
16, 16, 29, 29, 16, 16, 16, 16,
16, 29, 29, 29, 29, 28, 16, 29,
29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 7,
+ 29, 28, 16, 29, 29, 28, 10, 10,
6, 2, 1, 2, 2, 1, 6, 11,
- 8, 3, 8, 11, 12, 12, 11, 10,
+ 8, 6, 8, 11, 12, 12, 11, 10,
12, 11, 10, 12, 11, 10, 12, 11,
- 9, 12, 16, 28, 11, 29, 29, 16,
+ 10, 12, 16, 28, 11, 29, 29, 16,
16, 16, 16, 16, 29, 29, 16, 16,
16, 16, 16, 29, 29, 16, 16, 16,
16, 16, 29, 29, 16, 16, 16, 16,
11, 16, 29, 29, 28, 16, 29, 29,
28, 16, 29, 29, 28, 16, 29, 29,
- 28, 16, 29, 29, 28, 10, 7, 6,
+ 28, 16, 29, 29, 28, 10, 10, 6,
2, 1, 2, 2, 1, 6, 11, 8,
- 3, 8, 11, 12, 12, 11, 10, 12,
- 11, 10, 12, 11, 10, 12, 11, 9,
+ 6, 8, 11, 12, 12, 11, 10, 12,
+ 11, 10, 12, 11, 10, 12, 11, 10,
12, 16, 28, 11, 29, 29, 16, 16,
16, 16, 16, 29, 29, 16, 16, 16,
16, 16, 29, 29, 16, 16, 16, 16,
16, 29, 29, 16, 16, 16, 16, 16,
11, 29, 11, 29, 29, 28, 16, 29,
29, 28, 16, 29, 29, 28, 16, 29,
- 29, 28, 16, 29, 29, 28, 10, 7,
+ 29, 28, 16, 29, 29, 28, 10, 10,
6, 2, 1, 2, 2, 1, 6, 11,
- 8, 3, 8, 11, 12, 12, 11, 10,
+ 8, 6, 8, 11, 12, 12, 11, 10,
12, 11, 10, 12, 11, 10, 12, 11,
- 9, 12, 16, 28, 11, 29, 29, 16,
+ 10, 12, 16, 28, 11, 29, 29, 16,
16, 16, 16, 16, 29, 29, 16, 16,
16, 16, 16, 29, 29, 16, 16, 16,
16, 16, 29, 29, 16, 16, 16, 16,
- 16, 29, 31, 29, 31, 11, 16, 29,
- 29, 28, 6, 2, 1, 2, 2, 1,
- 6, 29, 29, 16, 12, 11, 10, 12,
- 11, 10, 12, 11, 10, 12, 11, 7,
- 11, 8, 3, 8, 11, 16, 8, 3,
+ 16, 29, 31, 29, 31, 11, 6, 2,
+ 1, 2, 2, 1, 6, 16, 29, 29,
+ 28, 29, 29, 16, 12, 11, 10, 12,
+ 11, 10, 12, 11, 10, 12, 11, 10,
+ 11, 8, 6, 8, 11, 16, 8, 6,
6, 2, 1, 2, 2, 1, 6
};
static const short _indic_syllable_machine_index_offsets[] = {
- 0, 17, 19, 23, 27, 29, 33, 37,
- 39, 43, 47, 49, 53, 57, 59, 61,
- 63, 65, 70, 72, 74, 79, 81, 83,
- 88, 90, 92, 104, 116, 128, 140, 152,
- 164, 176, 188, 200, 212, 229, 231, 235,
- 239, 241, 245, 249, 251, 255, 259, 261,
- 265, 269, 271, 273, 275, 277, 282, 284,
- 286, 291, 293, 295, 300, 302, 304, 316,
- 328, 340, 352, 364, 376, 388, 400, 412,
- 424, 441, 443, 447, 451, 453, 457, 461,
- 463, 467, 471, 473, 477, 481, 483, 485,
- 487, 489, 494, 496, 498, 503, 505, 507,
- 512, 514, 516, 528, 540, 552, 564, 576,
- 588, 600, 612, 624, 641, 643, 647, 651,
- 653, 657, 661, 663, 667, 671, 673, 677,
- 681, 683, 685, 687, 689, 694, 696, 698,
- 703, 705, 707, 712, 714, 716, 728, 740,
- 752, 764, 776, 788, 800, 812, 824, 836,
- 848, 860, 864, 868, 872, 876, 878, 882,
- 886, 888, 892, 896, 898, 915, 917, 919,
- 921, 923, 928, 930, 932, 937, 939, 941,
- 946, 948, 950, 982, 1012, 1042, 1071, 1088,
- 1118, 1148, 1177, 1194, 1224, 1254, 1283, 1300,
- 1330, 1360, 1389, 1406, 1436, 1466, 1495, 1506,
- 1514, 1521, 1524, 1526, 1529, 1532, 1534, 1541,
- 1553, 1562, 1566, 1575, 1587, 1600, 1613, 1625,
- 1636, 1649, 1661, 1672, 1685, 1697, 1708, 1721,
- 1733, 1743, 1756, 1773, 1802, 1814, 1844, 1874,
- 1891, 1908, 1925, 1942, 1959, 1989, 2019, 2036,
- 2053, 2070, 2087, 2104, 2134, 2164, 2181, 2198,
- 2215, 2232, 2249, 2279, 2309, 2326, 2343, 2360,
- 2377, 2394, 2424, 2454, 2484, 2514, 2543, 2560,
- 2590, 2620, 2649, 2666, 2696, 2726, 2755, 2772,
- 2802, 2832, 2861, 2878, 2908, 2938, 2967, 2978,
- 2986, 2993, 2996, 2998, 3001, 3004, 3006, 3013,
- 3025, 3034, 3038, 3047, 3059, 3072, 3085, 3097,
- 3108, 3121, 3133, 3144, 3157, 3169, 3180, 3193,
- 3205, 3215, 3228, 3245, 3274, 3286, 3316, 3346,
- 3363, 3380, 3397, 3414, 3431, 3461, 3491, 3508,
- 3525, 3542, 3559, 3576, 3606, 3636, 3653, 3670,
- 3687, 3704, 3721, 3751, 3781, 3798, 3815, 3832,
- 3849, 3861, 3878, 3908, 3938, 3967, 3984, 4014,
- 4044, 4073, 4090, 4120, 4150, 4179, 4196, 4226,
- 4256, 4285, 4302, 4332, 4362, 4391, 4402, 4410,
- 4417, 4420, 4422, 4425, 4428, 4430, 4437, 4449,
- 4458, 4462, 4471, 4483, 4496, 4509, 4521, 4532,
- 4545, 4557, 4568, 4581, 4593, 4604, 4617, 4629,
- 4639, 4652, 4669, 4698, 4710, 4740, 4770, 4787,
- 4804, 4821, 4838, 4855, 4885, 4915, 4932, 4949,
- 4966, 4983, 5000, 5030, 5060, 5077, 5094, 5111,
- 5128, 5145, 5175, 5205, 5222, 5239, 5256, 5273,
- 5290, 5302, 5332, 5344, 5374, 5404, 5433, 5450,
- 5480, 5510, 5539, 5556, 5586, 5616, 5645, 5662,
- 5692, 5722, 5751, 5768, 5798, 5828, 5857, 5868,
- 5876, 5883, 5886, 5888, 5891, 5894, 5896, 5903,
- 5915, 5924, 5928, 5937, 5949, 5962, 5975, 5987,
- 5998, 6011, 6023, 6034, 6047, 6059, 6070, 6083,
- 6095, 6105, 6118, 6135, 6164, 6176, 6206, 6236,
- 6253, 6270, 6287, 6304, 6321, 6351, 6381, 6398,
- 6415, 6432, 6449, 6466, 6496, 6526, 6543, 6560,
- 6577, 6594, 6611, 6641, 6671, 6688, 6705, 6722,
- 6739, 6756, 6786, 6818, 6848, 6880, 6892, 6909,
- 6939, 6969, 6998, 7005, 7008, 7010, 7013, 7016,
- 7018, 7025, 7055, 7085, 7102, 7115, 7127, 7138,
- 7151, 7163, 7174, 7187, 7199, 7210, 7223, 7235,
- 7243, 7255, 7264, 7268, 7277, 7289, 7306, 7315,
- 7319, 7326, 7329, 7331, 7334, 7337, 7339
+ 0, 2, 19, 26, 31, 35, 37, 42,
+ 46, 48, 53, 57, 59, 64, 68, 70,
+ 76, 78, 80, 86, 88, 90, 96, 98,
+ 100, 106, 108, 110, 122, 134, 146, 158,
+ 170, 182, 194, 206, 218, 230, 232, 249,
+ 256, 261, 265, 267, 272, 276, 278, 283,
+ 287, 289, 294, 298, 300, 306, 308, 310,
+ 316, 318, 320, 326, 328, 330, 336, 338,
+ 340, 352, 364, 376, 388, 400, 412, 424,
+ 436, 448, 460, 462, 479, 486, 491, 495,
+ 497, 502, 506, 508, 513, 517, 519, 524,
+ 528, 530, 536, 538, 540, 546, 548, 550,
+ 556, 558, 560, 566, 568, 570, 582, 594,
+ 606, 618, 630, 642, 654, 666, 678, 680,
+ 697, 704, 709, 713, 715, 720, 724, 726,
+ 731, 735, 737, 742, 746, 748, 754, 756,
+ 758, 764, 766, 768, 774, 776, 778, 784,
+ 786, 788, 800, 812, 824, 836, 848, 860,
+ 872, 884, 896, 908, 920, 925, 937, 949,
+ 954, 958, 963, 967, 969, 974, 978, 980,
+ 985, 989, 991, 993, 1010, 1017, 1023, 1025,
+ 1027, 1033, 1035, 1037, 1043, 1045, 1047, 1053,
+ 1055, 1057, 1059, 1091, 1121, 1151, 1180, 1197,
+ 1227, 1257, 1286, 1303, 1333, 1363, 1392, 1409,
+ 1439, 1469, 1498, 1515, 1545, 1575, 1604, 1615,
+ 1626, 1633, 1636, 1638, 1641, 1644, 1646, 1653,
+ 1665, 1674, 1681, 1690, 1702, 1715, 1728, 1740,
+ 1751, 1764, 1776, 1787, 1800, 1812, 1823, 1836,
+ 1848, 1859, 1872, 1889, 1918, 1930, 1960, 1990,
+ 2007, 2024, 2041, 2058, 2075, 2105, 2135, 2152,
+ 2169, 2186, 2203, 2220, 2250, 2280, 2297, 2314,
+ 2331, 2348, 2365, 2395, 2425, 2442, 2459, 2476,
+ 2493, 2510, 2540, 2570, 2600, 2630, 2659, 2676,
+ 2706, 2736, 2765, 2782, 2812, 2842, 2871, 2888,
+ 2918, 2948, 2977, 2994, 3024, 3054, 3083, 3094,
+ 3105, 3112, 3115, 3117, 3120, 3123, 3125, 3132,
+ 3144, 3153, 3160, 3169, 3181, 3194, 3207, 3219,
+ 3230, 3243, 3255, 3266, 3279, 3291, 3302, 3315,
+ 3327, 3338, 3351, 3368, 3397, 3409, 3439, 3469,
+ 3486, 3503, 3520, 3537, 3554, 3584, 3614, 3631,
+ 3648, 3665, 3682, 3699, 3729, 3759, 3776, 3793,
+ 3810, 3827, 3844, 3874, 3904, 3921, 3938, 3955,
+ 3972, 3984, 4001, 4031, 4061, 4090, 4107, 4137,
+ 4167, 4196, 4213, 4243, 4273, 4302, 4319, 4349,
+ 4379, 4408, 4425, 4455, 4485, 4514, 4525, 4536,
+ 4543, 4546, 4548, 4551, 4554, 4556, 4563, 4575,
+ 4584, 4591, 4600, 4612, 4625, 4638, 4650, 4661,
+ 4674, 4686, 4697, 4710, 4722, 4733, 4746, 4758,
+ 4769, 4782, 4799, 4828, 4840, 4870, 4900, 4917,
+ 4934, 4951, 4968, 4985, 5015, 5045, 5062, 5079,
+ 5096, 5113, 5130, 5160, 5190, 5207, 5224, 5241,
+ 5258, 5275, 5305, 5335, 5352, 5369, 5386, 5403,
+ 5420, 5432, 5462, 5474, 5504, 5534, 5563, 5580,
+ 5610, 5640, 5669, 5686, 5716, 5746, 5775, 5792,
+ 5822, 5852, 5881, 5898, 5928, 5958, 5987, 5998,
+ 6009, 6016, 6019, 6021, 6024, 6027, 6029, 6036,
+ 6048, 6057, 6064, 6073, 6085, 6098, 6111, 6123,
+ 6134, 6147, 6159, 6170, 6183, 6195, 6206, 6219,
+ 6231, 6242, 6255, 6272, 6301, 6313, 6343, 6373,
+ 6390, 6407, 6424, 6441, 6458, 6488, 6518, 6535,
+ 6552, 6569, 6586, 6603, 6633, 6663, 6680, 6697,
+ 6714, 6731, 6748, 6778, 6808, 6825, 6842, 6859,
+ 6876, 6893, 6923, 6955, 6985, 7017, 7029, 7036,
+ 7039, 7041, 7044, 7047, 7049, 7056, 7073, 7103,
+ 7133, 7162, 7192, 7222, 7239, 7252, 7264, 7275,
+ 7288, 7300, 7311, 7324, 7336, 7347, 7360, 7372,
+ 7383, 7395, 7404, 7411, 7420, 7432, 7449, 7458,
+ 7465, 7472, 7475, 7477, 7480, 7483, 7485
};
static const short _indic_syllable_machine_indicies[] = {
- 1, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 3, 0, 4, 4, 5, 0, 6,
- 6, 5, 0, 5, 0, 7, 7, 8,
- 0, 9, 9, 8, 0, 8, 0, 10,
- 10, 11, 0, 12, 12, 11, 0, 11,
- 0, 13, 13, 14, 0, 15, 15, 14,
- 0, 14, 0, 16, 0, 17, 0, 18,
- 0, 19, 13, 13, 14, 0, 20, 0,
- 21, 0, 22, 10, 10, 11, 0, 23,
- 0, 24, 0, 25, 7, 7, 8, 0,
- 26, 0, 27, 0, 28, 4, 4, 5,
- 0, 0, 0, 0, 0, 0, 28, 0,
- 28, 4, 4, 5, 0, 0, 0, 0,
- 0, 29, 28, 0, 30, 4, 4, 5,
- 0, 0, 0, 0, 0, 0, 30, 0,
- 30, 4, 4, 5, 0, 0, 0, 0,
- 0, 31, 30, 0, 32, 4, 4, 5,
- 0, 0, 0, 0, 0, 0, 32, 0,
- 32, 4, 4, 5, 0, 0, 0, 0,
- 0, 33, 32, 0, 34, 4, 4, 5,
- 0, 0, 0, 0, 0, 0, 34, 0,
- 34, 4, 4, 5, 0, 0, 0, 0,
- 0, 35, 34, 0, 36, 4, 4, 5,
- 0, 0, 0, 0, 0, 0, 36, 0,
- 36, 4, 4, 5, 0, 0, 0, 0,
- 0, 37, 36, 0, 39, 40, 38, 38,
- 38, 38, 38, 38, 38, 38, 38, 38,
- 38, 38, 38, 39, 38, 41, 38, 42,
- 42, 43, 38, 44, 44, 43, 38, 43,
- 38, 45, 45, 46, 38, 47, 47, 46,
- 38, 46, 38, 48, 48, 49, 38, 50,
- 50, 49, 38, 49, 38, 51, 51, 52,
- 38, 53, 53, 52, 38, 52, 38, 54,
- 38, 55, 38, 56, 38, 57, 51, 51,
- 52, 38, 58, 38, 59, 38, 60, 48,
- 48, 49, 38, 61, 38, 62, 38, 63,
- 45, 45, 46, 38, 64, 38, 65, 38,
- 66, 42, 42, 43, 38, 38, 38, 38,
- 38, 38, 66, 38, 66, 42, 42, 43,
- 38, 38, 38, 38, 38, 67, 66, 38,
- 68, 42, 42, 43, 38, 38, 38, 38,
- 38, 38, 68, 38, 68, 42, 42, 43,
- 38, 38, 38, 38, 38, 69, 68, 38,
- 70, 42, 42, 43, 38, 38, 38, 38,
- 38, 38, 70, 38, 70, 42, 42, 43,
- 38, 38, 38, 38, 38, 71, 70, 38,
- 72, 42, 42, 43, 38, 38, 38, 38,
- 38, 38, 72, 38, 72, 42, 42, 43,
- 38, 38, 38, 38, 38, 73, 72, 38,
- 74, 42, 42, 43, 38, 38, 38, 38,
- 38, 38, 74, 38, 74, 42, 42, 43,
- 38, 38, 38, 38, 38, 75, 74, 38,
- 77, 78, 76, 76, 76, 76, 76, 76,
- 76, 76, 76, 76, 76, 76, 76, 77,
- 76, 79, 76, 80, 80, 81, 76, 83,
- 83, 81, 82, 81, 82, 84, 84, 85,
- 76, 86, 86, 85, 76, 85, 76, 87,
- 87, 88, 76, 89, 89, 88, 76, 88,
- 76, 90, 90, 91, 76, 92, 92, 91,
- 76, 91, 76, 93, 76, 94, 76, 95,
- 76, 96, 90, 90, 91, 76, 97, 76,
- 98, 76, 99, 87, 87, 88, 76, 100,
- 76, 101, 76, 102, 84, 84, 85, 76,
- 103, 76, 104, 76, 105, 80, 80, 81,
- 76, 76, 76, 76, 76, 76, 105, 76,
- 105, 80, 80, 81, 76, 76, 76, 76,
- 76, 106, 105, 76, 107, 80, 80, 81,
- 76, 76, 76, 76, 76, 76, 107, 76,
- 107, 80, 80, 81, 76, 76, 76, 76,
- 76, 108, 107, 76, 109, 80, 80, 81,
- 76, 76, 76, 76, 76, 76, 109, 76,
- 109, 80, 80, 81, 76, 76, 76, 76,
- 76, 110, 109, 76, 111, 80, 80, 81,
- 82, 82, 82, 82, 82, 82, 111, 82,
- 111, 80, 80, 81, 76, 76, 76, 76,
- 76, 112, 111, 76, 113, 80, 80, 81,
- 76, 76, 76, 76, 76, 76, 113, 76,
- 115, 116, 114, 114, 114, 114, 114, 114,
- 114, 114, 114, 114, 114, 114, 114, 115,
- 114, 117, 114, 118, 118, 119, 114, 120,
- 120, 119, 114, 119, 114, 121, 121, 122,
- 114, 123, 123, 122, 114, 122, 114, 124,
- 124, 125, 114, 126, 126, 125, 114, 125,
- 114, 127, 127, 128, 114, 129, 129, 128,
- 114, 128, 114, 130, 114, 131, 114, 132,
- 114, 133, 127, 127, 128, 114, 134, 114,
- 135, 114, 136, 124, 124, 125, 114, 137,
- 114, 138, 114, 139, 121, 121, 122, 114,
- 140, 114, 141, 114, 142, 118, 118, 119,
- 114, 114, 114, 114, 114, 114, 142, 114,
- 142, 118, 118, 119, 114, 114, 114, 114,
- 114, 143, 142, 114, 144, 118, 118, 119,
- 114, 114, 114, 114, 114, 114, 144, 114,
- 144, 118, 118, 119, 114, 114, 114, 114,
- 114, 145, 144, 114, 146, 118, 118, 119,
- 114, 114, 114, 114, 114, 114, 146, 114,
- 146, 118, 118, 119, 114, 114, 114, 114,
- 114, 147, 146, 114, 148, 118, 118, 119,
- 114, 114, 114, 114, 114, 114, 148, 114,
- 148, 118, 118, 119, 114, 114, 114, 114,
- 114, 149, 148, 114, 150, 118, 118, 119,
- 114, 114, 114, 114, 114, 114, 150, 114,
- 150, 118, 118, 119, 114, 114, 114, 114,
- 114, 151, 150, 114, 113, 80, 80, 81,
- 76, 76, 76, 76, 76, 152, 113, 76,
- 111, 80, 80, 81, 0, 0, 0, 0,
- 0, 153, 111, 0, 154, 154, 155, 0,
- 6, 6, 155, 0, 156, 156, 157, 0,
- 158, 158, 157, 0, 157, 0, 159, 159,
- 160, 0, 161, 161, 160, 0, 160, 0,
- 162, 162, 163, 0, 164, 164, 163, 0,
- 163, 0, 165, 166, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 165, 0, 167, 0, 168, 0, 169,
- 0, 170, 0, 171, 162, 162, 163, 0,
- 172, 0, 173, 0, 174, 159, 159, 160,
- 0, 175, 0, 176, 0, 177, 156, 156,
- 157, 0, 178, 0, 179, 0, 181, 182,
- 183, 184, 185, 186, 81, 187, 188, 189,
- 190, 190, 152, 191, 192, 193, 194, 195,
- 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 196, 180, 198, 199,
- 200, 201, 5, 202, 203, 204, 197, 197,
- 37, 205, 197, 197, 206, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 207, 197, 208, 199, 209, 209,
- 5, 202, 203, 204, 197, 197, 197, 205,
- 197, 197, 206, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 207, 197, 199, 209, 209, 5, 202, 203,
- 204, 197, 197, 197, 205, 197, 197, 206,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 207, 197, 210,
- 197, 197, 197, 18, 211, 197, 202, 203,
- 204, 197, 197, 197, 212, 197, 210, 197,
- 213, 214, 215, 216, 5, 202, 203, 204,
- 197, 197, 35, 217, 197, 197, 206, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 207, 197, 218, 214,
- 219, 219, 5, 202, 203, 204, 197, 197,
- 197, 217, 197, 197, 206, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 207, 197, 214, 219, 219, 5,
- 202, 203, 204, 197, 197, 197, 217, 197,
- 197, 206, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 207,
- 197, 220, 197, 197, 197, 18, 221, 197,
- 202, 203, 204, 197, 197, 197, 212, 197,
- 220, 197, 222, 223, 224, 225, 5, 202,
- 203, 204, 197, 197, 33, 226, 197, 197,
- 206, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 207, 197,
- 227, 223, 228, 228, 5, 202, 203, 204,
- 197, 197, 197, 226, 197, 197, 206, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 207, 197, 223, 228,
- 228, 5, 202, 203, 204, 197, 197, 197,
- 226, 197, 197, 206, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 207, 197, 229, 197, 197, 197, 18,
- 230, 197, 202, 203, 204, 197, 197, 197,
- 212, 197, 229, 197, 231, 232, 233, 234,
- 5, 202, 203, 204, 197, 197, 31, 235,
- 197, 197, 206, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 207, 197, 236, 232, 237, 237, 5, 202,
- 203, 204, 197, 197, 197, 235, 197, 197,
- 206, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 207, 197,
- 232, 237, 237, 5, 202, 203, 204, 197,
- 197, 197, 235, 197, 197, 206, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 207, 197, 238, 197, 197,
- 197, 18, 239, 197, 202, 203, 204, 197,
- 197, 197, 212, 197, 238, 197, 240, 241,
- 242, 243, 5, 202, 203, 204, 197, 197,
- 29, 244, 197, 197, 206, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 207, 197, 245, 241, 246, 246,
- 5, 202, 203, 204, 197, 197, 197, 244,
- 197, 197, 206, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 207, 197, 241, 246, 246, 5, 202, 203,
- 204, 197, 197, 197, 244, 197, 197, 206,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 207, 197, 18,
- 247, 197, 202, 203, 204, 197, 197, 197,
- 212, 197, 202, 203, 204, 197, 197, 197,
- 212, 197, 248, 197, 197, 249, 203, 204,
- 197, 203, 204, 197, 250, 197, 203, 251,
- 197, 203, 252, 197, 203, 197, 248, 197,
- 197, 197, 203, 204, 197, 253, 197, 254,
- 255, 197, 202, 203, 204, 197, 197, 3,
- 197, 2, 197, 197, 197, 197, 202, 203,
- 204, 197, 202, 203, 204, 197, 253, 197,
- 197, 197, 197, 202, 203, 204, 197, 253,
- 197, 254, 197, 197, 202, 203, 204, 197,
- 197, 3, 197, 18, 197, 256, 256, 5,
- 202, 203, 204, 197, 197, 197, 212, 197,
- 257, 27, 258, 259, 8, 202, 203, 204,
- 197, 197, 197, 212, 197, 27, 258, 259,
- 8, 202, 203, 204, 197, 197, 197, 212,
- 197, 258, 258, 8, 202, 203, 204, 197,
- 197, 197, 212, 197, 260, 24, 261, 262,
- 11, 202, 203, 204, 197, 197, 197, 212,
- 197, 24, 261, 262, 11, 202, 203, 204,
- 197, 197, 197, 212, 197, 261, 261, 11,
- 202, 203, 204, 197, 197, 197, 212, 197,
- 263, 21, 264, 265, 14, 202, 203, 204,
- 197, 197, 197, 212, 197, 21, 264, 265,
- 14, 202, 203, 204, 197, 197, 197, 212,
- 197, 264, 264, 14, 202, 203, 204, 197,
- 197, 197, 212, 197, 266, 18, 197, 267,
- 197, 202, 203, 204, 197, 197, 197, 212,
- 197, 18, 197, 267, 197, 202, 203, 204,
- 197, 197, 197, 212, 197, 268, 197, 202,
- 203, 204, 197, 197, 197, 212, 197, 18,
- 197, 197, 197, 197, 202, 203, 204, 197,
- 197, 197, 212, 197, 1, 2, 197, 197,
- 18, 247, 197, 202, 203, 204, 197, 197,
- 197, 212, 197, 1, 197, 241, 246, 246,
- 5, 202, 203, 204, 197, 197, 197, 244,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 207, 197, 241, 246, 246, 5, 202, 203,
- 204, 197, 197, 197, 244, 197, 240, 241,
- 246, 246, 5, 202, 203, 204, 197, 197,
- 197, 244, 197, 197, 206, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 207, 197, 240, 241, 242, 246,
- 5, 202, 203, 204, 197, 197, 29, 244,
- 197, 197, 206, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 207, 197, 238, 197, 269, 197, 256, 256,
- 5, 202, 203, 204, 197, 197, 197, 212,
- 197, 238, 197, 238, 197, 197, 197, 197,
- 197, 197, 202, 203, 204, 197, 197, 197,
- 212, 197, 238, 197, 238, 197, 197, 197,
- 197, 270, 197, 202, 203, 204, 197, 197,
- 197, 212, 197, 238, 197, 238, 197, 269,
- 197, 197, 197, 197, 202, 203, 204, 197,
- 197, 197, 212, 197, 238, 197, 238, 2,
- 197, 197, 18, 239, 197, 202, 203, 204,
- 197, 197, 197, 212, 197, 238, 197, 231,
- 232, 237, 237, 5, 202, 203, 204, 197,
- 197, 197, 235, 197, 197, 206, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 207, 197, 231, 232, 233,
- 237, 5, 202, 203, 204, 197, 197, 31,
- 235, 197, 197, 206, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 207, 197, 229, 197, 271, 197, 256,
- 256, 5, 202, 203, 204, 197, 197, 197,
- 212, 197, 229, 197, 229, 197, 197, 197,
- 197, 197, 197, 202, 203, 204, 197, 197,
- 197, 212, 197, 229, 197, 229, 197, 197,
- 197, 197, 272, 197, 202, 203, 204, 197,
- 197, 197, 212, 197, 229, 197, 229, 197,
- 271, 197, 197, 197, 197, 202, 203, 204,
- 197, 197, 197, 212, 197, 229, 197, 229,
- 2, 197, 197, 18, 230, 197, 202, 203,
- 204, 197, 197, 197, 212, 197, 229, 197,
- 222, 223, 228, 228, 5, 202, 203, 204,
- 197, 197, 197, 226, 197, 197, 206, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 207, 197, 222, 223,
- 224, 228, 5, 202, 203, 204, 197, 197,
- 33, 226, 197, 197, 206, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 207, 197, 220, 197, 273, 197,
- 256, 256, 5, 202, 203, 204, 197, 197,
- 197, 212, 197, 220, 197, 220, 197, 197,
- 197, 197, 197, 197, 202, 203, 204, 197,
- 197, 197, 212, 197, 220, 197, 220, 197,
- 197, 197, 197, 274, 197, 202, 203, 204,
- 197, 197, 197, 212, 197, 220, 197, 220,
- 197, 273, 197, 197, 197, 197, 202, 203,
- 204, 197, 197, 197, 212, 197, 220, 197,
- 220, 2, 197, 197, 18, 221, 197, 202,
- 203, 204, 197, 197, 197, 212, 197, 220,
- 197, 213, 214, 219, 219, 5, 202, 203,
- 204, 197, 197, 197, 217, 197, 197, 206,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 207, 197, 213,
- 214, 215, 219, 5, 202, 203, 204, 197,
- 197, 35, 217, 197, 197, 206, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 207, 197, 210, 197, 275,
- 197, 256, 256, 5, 202, 203, 204, 197,
- 197, 197, 212, 197, 210, 197, 210, 197,
- 197, 197, 197, 197, 197, 202, 203, 204,
- 197, 197, 197, 212, 197, 210, 197, 210,
- 197, 197, 197, 197, 276, 197, 202, 203,
- 204, 197, 197, 197, 212, 197, 210, 197,
- 210, 197, 275, 197, 197, 197, 197, 202,
- 203, 204, 197, 197, 197, 212, 197, 210,
- 197, 210, 2, 197, 197, 18, 211, 197,
- 202, 203, 204, 197, 197, 197, 212, 197,
- 210, 197, 198, 199, 209, 209, 5, 202,
- 203, 204, 197, 197, 197, 205, 197, 197,
- 206, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 207, 197,
- 198, 199, 200, 209, 5, 202, 203, 204,
- 197, 197, 37, 205, 197, 197, 206, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 207, 197, 278, 279,
- 280, 281, 43, 282, 283, 284, 277, 277,
- 75, 285, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 288, 279, 289, 281,
- 43, 282, 283, 284, 277, 277, 277, 285,
- 277, 277, 286, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 287, 277, 279, 289, 281, 43, 282, 283,
- 284, 277, 277, 277, 285, 277, 277, 286,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 287, 277, 290,
- 277, 277, 277, 56, 291, 277, 282, 283,
- 284, 277, 277, 277, 292, 277, 290, 277,
- 293, 294, 295, 296, 43, 282, 283, 284,
- 277, 277, 73, 297, 277, 277, 286, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 287, 277, 298, 294,
- 299, 299, 43, 282, 283, 284, 277, 277,
- 277, 297, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 294, 299, 299, 43,
- 282, 283, 284, 277, 277, 277, 297, 277,
- 277, 286, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 287,
- 277, 300, 277, 277, 277, 56, 301, 277,
- 282, 283, 284, 277, 277, 277, 292, 277,
- 300, 277, 302, 303, 304, 305, 43, 282,
- 283, 284, 277, 277, 71, 306, 277, 277,
- 286, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 287, 277,
- 307, 303, 308, 308, 43, 282, 283, 284,
- 277, 277, 277, 306, 277, 277, 286, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 287, 277, 303, 308,
- 308, 43, 282, 283, 284, 277, 277, 277,
- 306, 277, 277, 286, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 287, 277, 309, 277, 277, 277, 56,
- 310, 277, 282, 283, 284, 277, 277, 277,
- 292, 277, 309, 277, 311, 312, 313, 314,
- 43, 282, 283, 284, 277, 277, 69, 315,
- 277, 277, 286, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 287, 277, 316, 312, 317, 317, 43, 282,
- 283, 284, 277, 277, 277, 315, 277, 277,
- 286, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 287, 277,
- 312, 317, 317, 43, 282, 283, 284, 277,
- 277, 277, 315, 277, 277, 286, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 287, 277, 318, 277, 277,
- 277, 56, 319, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 318, 277, 320, 321,
- 322, 323, 43, 282, 283, 284, 277, 277,
- 67, 324, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 325, 321, 326, 326,
- 43, 282, 283, 284, 277, 277, 277, 324,
- 277, 277, 286, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 287, 277, 321, 326, 326, 43, 282, 283,
- 284, 277, 277, 277, 324, 277, 277, 286,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 287, 277, 56,
- 327, 277, 282, 283, 284, 277, 277, 277,
- 292, 277, 282, 283, 284, 277, 277, 277,
- 292, 277, 328, 277, 277, 329, 283, 284,
- 277, 283, 284, 277, 330, 277, 283, 331,
- 277, 283, 332, 277, 283, 277, 328, 277,
- 277, 277, 283, 284, 277, 333, 277, 334,
- 335, 277, 282, 283, 284, 277, 277, 41,
- 277, 40, 277, 277, 277, 277, 282, 283,
- 284, 277, 282, 283, 284, 277, 333, 277,
- 277, 277, 277, 282, 283, 284, 277, 333,
- 277, 334, 277, 277, 282, 283, 284, 277,
- 277, 41, 277, 56, 277, 336, 336, 43,
- 282, 283, 284, 277, 277, 277, 292, 277,
- 337, 65, 338, 339, 46, 282, 283, 284,
- 277, 277, 277, 292, 277, 65, 338, 339,
- 46, 282, 283, 284, 277, 277, 277, 292,
- 277, 338, 338, 46, 282, 283, 284, 277,
- 277, 277, 292, 277, 340, 62, 341, 342,
- 49, 282, 283, 284, 277, 277, 277, 292,
- 277, 62, 341, 342, 49, 282, 283, 284,
- 277, 277, 277, 292, 277, 341, 341, 49,
- 282, 283, 284, 277, 277, 277, 292, 277,
- 343, 59, 344, 345, 52, 282, 283, 284,
- 277, 277, 277, 292, 277, 59, 344, 345,
- 52, 282, 283, 284, 277, 277, 277, 292,
- 277, 344, 344, 52, 282, 283, 284, 277,
- 277, 277, 292, 277, 346, 56, 277, 347,
- 277, 282, 283, 284, 277, 277, 277, 292,
- 277, 56, 277, 347, 277, 282, 283, 284,
- 277, 277, 277, 292, 277, 348, 277, 282,
- 283, 284, 277, 277, 277, 292, 277, 56,
- 277, 277, 277, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 39, 40, 277, 277,
- 56, 327, 277, 282, 283, 284, 277, 277,
- 277, 292, 277, 39, 277, 321, 326, 326,
- 43, 282, 283, 284, 277, 277, 277, 324,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 287, 277, 321, 326, 326, 43, 282, 283,
- 284, 277, 277, 277, 324, 277, 320, 321,
- 326, 326, 43, 282, 283, 284, 277, 277,
- 277, 324, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 320, 321, 322, 326,
- 43, 282, 283, 284, 277, 277, 67, 324,
- 277, 277, 286, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 287, 277, 318, 277, 349, 277, 336, 336,
- 43, 282, 283, 284, 277, 277, 277, 292,
- 277, 318, 277, 318, 277, 277, 277, 277,
- 277, 277, 282, 283, 284, 277, 277, 277,
- 292, 277, 318, 277, 318, 277, 277, 277,
- 277, 350, 277, 282, 283, 284, 277, 277,
- 277, 292, 277, 318, 277, 318, 277, 349,
- 277, 277, 277, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 318, 277, 318, 40,
- 277, 277, 56, 319, 277, 282, 283, 284,
- 277, 277, 277, 292, 277, 318, 277, 311,
- 312, 317, 317, 43, 282, 283, 284, 277,
- 277, 277, 315, 277, 277, 286, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 287, 277, 311, 312, 313,
- 317, 43, 282, 283, 284, 277, 277, 69,
- 315, 277, 277, 286, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 287, 277, 309, 277, 351, 277, 336,
- 336, 43, 282, 283, 284, 277, 277, 277,
- 292, 277, 309, 277, 309, 277, 277, 277,
- 277, 277, 277, 282, 283, 284, 277, 277,
- 277, 292, 277, 309, 277, 309, 277, 277,
- 277, 277, 352, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 309, 277, 309, 277,
- 351, 277, 277, 277, 277, 282, 283, 284,
- 277, 277, 277, 292, 277, 309, 277, 309,
- 40, 277, 277, 56, 310, 277, 282, 283,
- 284, 277, 277, 277, 292, 277, 309, 277,
- 302, 303, 308, 308, 43, 282, 283, 284,
- 277, 277, 277, 306, 277, 277, 286, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 287, 277, 302, 303,
- 304, 308, 43, 282, 283, 284, 277, 277,
- 71, 306, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 300, 277, 353, 277,
- 336, 336, 43, 282, 283, 284, 277, 277,
- 277, 292, 277, 300, 277, 300, 277, 277,
- 277, 277, 277, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 300, 277, 300, 277,
- 277, 277, 277, 354, 277, 282, 283, 284,
- 277, 277, 277, 292, 277, 300, 277, 300,
- 277, 353, 277, 277, 277, 277, 282, 283,
- 284, 277, 277, 277, 292, 277, 300, 277,
- 300, 40, 277, 277, 56, 301, 277, 282,
- 283, 284, 277, 277, 277, 292, 277, 300,
- 277, 293, 294, 299, 299, 43, 282, 283,
- 284, 277, 277, 277, 297, 277, 277, 286,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 277, 277, 287, 277, 293,
- 294, 295, 299, 43, 282, 283, 284, 277,
- 277, 73, 297, 277, 277, 286, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 277, 287, 277, 290, 277, 355,
- 277, 336, 336, 43, 282, 283, 284, 277,
- 277, 277, 292, 277, 290, 277, 290, 277,
- 277, 277, 277, 277, 277, 282, 283, 284,
- 277, 277, 277, 292, 277, 290, 277, 290,
- 277, 277, 277, 277, 356, 277, 282, 283,
- 284, 277, 277, 277, 292, 277, 290, 277,
- 290, 277, 355, 277, 277, 277, 277, 282,
- 283, 284, 277, 277, 277, 292, 277, 290,
- 277, 74, 42, 42, 43, 277, 277, 277,
- 277, 277, 277, 74, 277, 290, 40, 277,
- 277, 56, 291, 277, 282, 283, 284, 277,
- 277, 277, 292, 277, 290, 277, 278, 279,
- 289, 281, 43, 282, 283, 284, 277, 277,
- 277, 285, 277, 277, 286, 277, 277, 277,
- 277, 277, 277, 277, 277, 277, 277, 277,
- 277, 277, 287, 277, 358, 184, 359, 359,
- 81, 187, 188, 189, 357, 357, 357, 191,
- 357, 357, 194, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 184, 359, 359, 81, 187, 188,
- 189, 357, 357, 357, 191, 357, 357, 194,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 196, 357, 360,
- 357, 357, 357, 95, 361, 357, 187, 188,
- 189, 357, 357, 357, 362, 357, 360, 357,
- 363, 364, 365, 366, 81, 187, 188, 189,
- 357, 357, 112, 367, 357, 357, 194, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 196, 357, 368, 364,
- 369, 369, 81, 187, 188, 189, 357, 357,
- 357, 367, 357, 357, 194, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 196, 357, 364, 369, 369, 81,
- 187, 188, 189, 357, 357, 357, 367, 357,
- 357, 194, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 196,
- 357, 370, 357, 357, 357, 95, 371, 357,
- 187, 188, 189, 357, 357, 357, 362, 357,
- 370, 357, 372, 373, 374, 375, 81, 187,
- 188, 189, 357, 357, 110, 376, 357, 357,
- 194, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 196, 357,
- 377, 373, 378, 378, 81, 187, 188, 189,
- 357, 357, 357, 376, 357, 357, 194, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 196, 357, 373, 378,
- 378, 81, 187, 188, 189, 357, 357, 357,
- 376, 357, 357, 194, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 196, 357, 379, 357, 357, 357, 95,
- 380, 357, 187, 188, 189, 357, 357, 357,
- 362, 357, 379, 357, 381, 382, 383, 384,
- 81, 187, 188, 189, 357, 357, 108, 385,
- 357, 357, 194, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 386, 382, 387, 387, 81, 187,
- 188, 189, 357, 357, 357, 385, 357, 357,
- 194, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 196, 357,
- 382, 387, 387, 81, 187, 188, 189, 357,
- 357, 357, 385, 357, 357, 194, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 196, 357, 388, 357, 357,
- 357, 95, 389, 357, 187, 188, 189, 357,
- 357, 357, 362, 357, 388, 357, 390, 391,
- 392, 393, 81, 187, 188, 189, 357, 357,
- 106, 394, 357, 357, 194, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 196, 357, 395, 391, 396, 396,
- 81, 187, 188, 189, 357, 357, 357, 394,
- 357, 357, 194, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 391, 396, 396, 81, 187, 188,
- 189, 357, 357, 357, 394, 357, 357, 194,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 196, 357, 95,
- 397, 357, 187, 188, 189, 357, 357, 357,
- 362, 357, 187, 188, 189, 357, 357, 357,
- 362, 357, 398, 357, 357, 399, 188, 189,
- 357, 188, 189, 357, 400, 357, 188, 401,
- 357, 188, 402, 357, 188, 357, 398, 357,
- 357, 357, 188, 189, 357, 403, 357, 404,
- 405, 357, 187, 188, 189, 357, 357, 79,
- 357, 78, 357, 357, 357, 357, 187, 188,
- 189, 357, 187, 188, 189, 357, 403, 357,
- 357, 357, 357, 187, 188, 189, 357, 403,
- 357, 404, 357, 357, 187, 188, 189, 357,
- 357, 79, 357, 95, 357, 406, 406, 81,
- 187, 188, 189, 357, 357, 357, 362, 357,
- 407, 104, 408, 409, 85, 187, 188, 189,
- 357, 357, 357, 362, 357, 104, 408, 409,
- 85, 187, 188, 189, 357, 357, 357, 362,
- 357, 408, 408, 85, 187, 188, 189, 357,
- 357, 357, 362, 357, 410, 101, 411, 412,
- 88, 187, 188, 189, 357, 357, 357, 362,
- 357, 101, 411, 412, 88, 187, 188, 189,
- 357, 357, 357, 362, 357, 411, 411, 88,
- 187, 188, 189, 357, 357, 357, 362, 357,
- 413, 98, 414, 415, 91, 187, 188, 189,
- 357, 357, 357, 362, 357, 98, 414, 415,
- 91, 187, 188, 189, 357, 357, 357, 362,
- 357, 414, 414, 91, 187, 188, 189, 357,
- 357, 357, 362, 357, 416, 95, 357, 417,
- 357, 187, 188, 189, 357, 357, 357, 362,
- 357, 95, 357, 417, 357, 187, 188, 189,
- 357, 357, 357, 362, 357, 418, 357, 187,
- 188, 189, 357, 357, 357, 362, 357, 95,
- 357, 357, 357, 357, 187, 188, 189, 357,
- 357, 357, 362, 357, 77, 78, 357, 357,
- 95, 397, 357, 187, 188, 189, 357, 357,
- 357, 362, 357, 77, 357, 391, 396, 396,
- 81, 187, 188, 189, 357, 357, 357, 394,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 391, 396, 396, 81, 187, 188,
- 189, 357, 357, 357, 394, 357, 390, 391,
- 396, 396, 81, 187, 188, 189, 357, 357,
- 357, 394, 357, 357, 194, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 196, 357, 390, 391, 392, 396,
- 81, 187, 188, 189, 357, 357, 106, 394,
- 357, 357, 194, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 388, 357, 419, 357, 406, 406,
- 81, 187, 188, 189, 357, 357, 357, 362,
- 357, 388, 357, 388, 357, 357, 357, 357,
- 357, 357, 187, 188, 189, 357, 357, 357,
- 362, 357, 388, 357, 388, 357, 357, 357,
- 357, 420, 357, 187, 188, 189, 357, 357,
- 357, 362, 357, 388, 357, 388, 357, 419,
- 357, 357, 357, 357, 187, 188, 189, 357,
- 357, 357, 362, 357, 388, 357, 388, 78,
- 357, 357, 95, 389, 357, 187, 188, 189,
- 357, 357, 357, 362, 357, 388, 357, 381,
- 382, 387, 387, 81, 187, 188, 189, 357,
- 357, 357, 385, 357, 357, 194, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 196, 357, 381, 382, 383,
- 387, 81, 187, 188, 189, 357, 357, 108,
- 385, 357, 357, 194, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 196, 357, 379, 357, 421, 357, 406,
- 406, 81, 187, 188, 189, 357, 357, 357,
- 362, 357, 379, 357, 379, 357, 357, 357,
- 357, 357, 357, 187, 188, 189, 357, 357,
- 357, 362, 357, 379, 357, 379, 357, 357,
- 357, 357, 422, 357, 187, 188, 189, 357,
- 357, 357, 362, 357, 379, 357, 379, 357,
- 421, 357, 357, 357, 357, 187, 188, 189,
- 357, 357, 357, 362, 357, 379, 357, 379,
- 78, 357, 357, 95, 380, 357, 187, 188,
- 189, 357, 357, 357, 362, 357, 379, 357,
- 372, 373, 378, 378, 81, 187, 188, 189,
- 357, 357, 357, 376, 357, 357, 194, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 196, 357, 372, 373,
- 374, 378, 81, 187, 188, 189, 357, 357,
- 110, 376, 357, 357, 194, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 196, 357, 370, 357, 423, 357,
- 406, 406, 81, 187, 188, 189, 357, 357,
- 357, 362, 357, 370, 357, 370, 357, 357,
- 357, 357, 357, 357, 187, 188, 189, 357,
- 357, 357, 362, 357, 370, 357, 370, 357,
- 357, 357, 357, 424, 357, 187, 188, 189,
- 357, 357, 357, 362, 357, 370, 357, 370,
- 357, 423, 357, 357, 357, 357, 187, 188,
- 189, 357, 357, 357, 362, 357, 370, 357,
- 370, 78, 357, 357, 95, 371, 357, 187,
- 188, 189, 357, 357, 357, 362, 357, 370,
- 357, 363, 364, 369, 369, 81, 187, 188,
- 189, 357, 357, 357, 367, 357, 357, 194,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 196, 357, 363,
- 364, 365, 369, 81, 187, 188, 189, 357,
- 357, 112, 367, 357, 357, 194, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 357, 196, 357, 360, 357, 425,
- 357, 406, 406, 81, 187, 188, 189, 357,
- 357, 357, 362, 357, 360, 357, 360, 357,
- 357, 357, 357, 357, 357, 187, 188, 189,
- 357, 357, 357, 362, 357, 360, 357, 360,
- 357, 357, 357, 357, 426, 357, 187, 188,
- 189, 357, 357, 357, 362, 357, 360, 357,
- 360, 357, 425, 357, 357, 357, 357, 187,
- 188, 189, 357, 357, 357, 362, 357, 360,
- 357, 360, 78, 357, 357, 95, 361, 357,
- 187, 188, 189, 357, 357, 357, 362, 357,
- 360, 357, 113, 80, 80, 81, 427, 427,
- 427, 427, 427, 152, 113, 427, 183, 184,
- 359, 359, 81, 187, 188, 189, 357, 357,
- 357, 191, 357, 357, 194, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 357, 357, 196, 357, 113, 80, 80, 81,
- 427, 427, 427, 427, 427, 427, 113, 427,
- 429, 430, 431, 432, 119, 433, 434, 435,
- 428, 428, 151, 436, 428, 428, 437, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 438, 428, 439, 430,
- 432, 432, 119, 433, 434, 435, 428, 428,
- 428, 436, 428, 428, 437, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 438, 428, 430, 432, 432, 119,
- 433, 434, 435, 428, 428, 428, 436, 428,
- 428, 437, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 438,
- 428, 440, 428, 428, 428, 132, 441, 428,
- 433, 434, 435, 428, 428, 428, 442, 428,
- 440, 428, 443, 444, 445, 446, 119, 433,
- 434, 435, 428, 428, 149, 447, 428, 428,
- 437, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 438, 428,
- 448, 444, 449, 449, 119, 433, 434, 435,
- 428, 428, 428, 447, 428, 428, 437, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 438, 428, 444, 449,
- 449, 119, 433, 434, 435, 428, 428, 428,
- 447, 428, 428, 437, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 438, 428, 450, 428, 428, 428, 132,
- 451, 428, 433, 434, 435, 428, 428, 428,
- 442, 428, 450, 428, 452, 453, 454, 455,
- 119, 433, 434, 435, 428, 428, 147, 456,
- 428, 428, 437, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 438, 428, 457, 453, 458, 458, 119, 433,
- 434, 435, 428, 428, 428, 456, 428, 428,
- 437, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 438, 428,
- 453, 458, 458, 119, 433, 434, 435, 428,
- 428, 428, 456, 428, 428, 437, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 438, 428, 459, 428, 428,
- 428, 132, 460, 428, 433, 434, 435, 428,
- 428, 428, 442, 428, 459, 428, 461, 462,
- 463, 464, 119, 433, 434, 435, 428, 428,
- 145, 465, 428, 428, 437, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 438, 428, 466, 462, 467, 467,
- 119, 433, 434, 435, 428, 428, 428, 465,
- 428, 428, 437, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 438, 428, 462, 467, 467, 119, 433, 434,
- 435, 428, 428, 428, 465, 428, 428, 437,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 438, 428, 468,
- 428, 428, 428, 132, 469, 428, 433, 434,
- 435, 428, 428, 428, 442, 428, 468, 428,
- 470, 471, 472, 473, 119, 433, 434, 435,
- 428, 428, 143, 474, 428, 428, 437, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 438, 428, 475, 471,
- 476, 476, 119, 433, 434, 435, 428, 428,
- 428, 474, 428, 428, 437, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 438, 428, 471, 476, 476, 119,
- 433, 434, 435, 428, 428, 428, 474, 428,
- 428, 437, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 438,
- 428, 132, 477, 428, 433, 434, 435, 428,
- 428, 428, 442, 428, 433, 434, 435, 428,
- 428, 428, 442, 428, 478, 428, 428, 479,
- 434, 435, 428, 434, 435, 428, 480, 428,
- 434, 481, 428, 434, 482, 428, 434, 428,
- 478, 428, 428, 428, 434, 435, 428, 483,
- 428, 484, 485, 428, 433, 434, 435, 428,
- 428, 117, 428, 116, 428, 428, 428, 428,
- 433, 434, 435, 428, 433, 434, 435, 428,
- 483, 428, 428, 428, 428, 433, 434, 435,
- 428, 483, 428, 484, 428, 428, 433, 434,
- 435, 428, 428, 117, 428, 132, 428, 486,
- 486, 119, 433, 434, 435, 428, 428, 428,
- 442, 428, 487, 141, 488, 489, 122, 433,
- 434, 435, 428, 428, 428, 442, 428, 141,
- 488, 489, 122, 433, 434, 435, 428, 428,
- 428, 442, 428, 488, 488, 122, 433, 434,
- 435, 428, 428, 428, 442, 428, 490, 138,
- 491, 492, 125, 433, 434, 435, 428, 428,
- 428, 442, 428, 138, 491, 492, 125, 433,
- 434, 435, 428, 428, 428, 442, 428, 491,
- 491, 125, 433, 434, 435, 428, 428, 428,
- 442, 428, 493, 135, 494, 495, 128, 433,
- 434, 435, 428, 428, 428, 442, 428, 135,
- 494, 495, 128, 433, 434, 435, 428, 428,
- 428, 442, 428, 494, 494, 128, 433, 434,
- 435, 428, 428, 428, 442, 428, 496, 132,
- 428, 497, 428, 433, 434, 435, 428, 428,
- 428, 442, 428, 132, 428, 497, 428, 433,
- 434, 435, 428, 428, 428, 442, 428, 498,
- 428, 433, 434, 435, 428, 428, 428, 442,
- 428, 132, 428, 428, 428, 428, 433, 434,
- 435, 428, 428, 428, 442, 428, 115, 116,
- 428, 428, 132, 477, 428, 433, 434, 435,
- 428, 428, 428, 442, 428, 115, 428, 471,
- 476, 476, 119, 433, 434, 435, 428, 428,
- 428, 474, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 438, 428, 471, 476, 476, 119,
- 433, 434, 435, 428, 428, 428, 474, 428,
- 470, 471, 476, 476, 119, 433, 434, 435,
- 428, 428, 428, 474, 428, 428, 437, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 438, 428, 470, 471,
- 472, 476, 119, 433, 434, 435, 428, 428,
- 143, 474, 428, 428, 437, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 438, 428, 468, 428, 499, 428,
- 486, 486, 119, 433, 434, 435, 428, 428,
- 428, 442, 428, 468, 428, 468, 428, 428,
- 428, 428, 428, 428, 433, 434, 435, 428,
- 428, 428, 442, 428, 468, 428, 468, 428,
- 428, 428, 428, 500, 428, 433, 434, 435,
- 428, 428, 428, 442, 428, 468, 428, 468,
- 428, 499, 428, 428, 428, 428, 433, 434,
- 435, 428, 428, 428, 442, 428, 468, 428,
- 468, 116, 428, 428, 132, 469, 428, 433,
- 434, 435, 428, 428, 428, 442, 428, 468,
- 428, 461, 462, 467, 467, 119, 433, 434,
- 435, 428, 428, 428, 465, 428, 428, 437,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 438, 428, 461,
- 462, 463, 467, 119, 433, 434, 435, 428,
- 428, 145, 465, 428, 428, 437, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 438, 428, 459, 428, 501,
- 428, 486, 486, 119, 433, 434, 435, 428,
- 428, 428, 442, 428, 459, 428, 459, 428,
- 428, 428, 428, 428, 428, 433, 434, 435,
- 428, 428, 428, 442, 428, 459, 428, 459,
- 428, 428, 428, 428, 502, 428, 433, 434,
- 435, 428, 428, 428, 442, 428, 459, 428,
- 459, 428, 501, 428, 428, 428, 428, 433,
- 434, 435, 428, 428, 428, 442, 428, 459,
- 428, 459, 116, 428, 428, 132, 460, 428,
- 433, 434, 435, 428, 428, 428, 442, 428,
- 459, 428, 452, 453, 458, 458, 119, 433,
- 434, 435, 428, 428, 428, 456, 428, 428,
- 437, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 438, 428,
- 452, 453, 454, 458, 119, 433, 434, 435,
- 428, 428, 147, 456, 428, 428, 437, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 438, 428, 450, 428,
- 503, 428, 486, 486, 119, 433, 434, 435,
- 428, 428, 428, 442, 428, 450, 428, 450,
- 428, 428, 428, 428, 428, 428, 433, 434,
- 435, 428, 428, 428, 442, 428, 450, 428,
- 450, 428, 428, 428, 428, 504, 428, 433,
- 434, 435, 428, 428, 428, 442, 428, 450,
- 428, 450, 428, 503, 428, 428, 428, 428,
- 433, 434, 435, 428, 428, 428, 442, 428,
- 450, 428, 450, 116, 428, 428, 132, 451,
- 428, 433, 434, 435, 428, 428, 428, 442,
- 428, 450, 428, 443, 444, 449, 449, 119,
- 433, 434, 435, 428, 428, 428, 447, 428,
- 428, 437, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 438,
- 428, 443, 444, 445, 449, 119, 433, 434,
- 435, 428, 428, 149, 447, 428, 428, 437,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 438, 428, 440,
- 428, 505, 428, 486, 486, 119, 433, 434,
- 435, 428, 428, 428, 442, 428, 440, 428,
- 440, 428, 428, 428, 428, 428, 428, 433,
- 434, 435, 428, 428, 428, 442, 428, 440,
- 428, 440, 428, 428, 428, 428, 506, 428,
- 433, 434, 435, 428, 428, 428, 442, 428,
- 440, 428, 440, 428, 505, 428, 428, 428,
- 428, 433, 434, 435, 428, 428, 428, 442,
- 428, 440, 428, 440, 116, 428, 428, 132,
- 441, 428, 433, 434, 435, 428, 428, 428,
- 442, 428, 440, 428, 429, 430, 432, 432,
- 119, 433, 434, 435, 428, 428, 428, 436,
- 428, 428, 437, 428, 428, 428, 428, 428,
- 428, 428, 428, 428, 428, 428, 428, 428,
- 438, 428, 181, 182, 183, 184, 507, 359,
- 81, 187, 188, 189, 190, 190, 152, 191,
- 357, 181, 194, 357, 357, 357, 357, 357,
- 357, 357, 357, 357, 357, 357, 357, 357,
- 196, 357, 198, 508, 200, 201, 5, 202,
- 203, 204, 197, 197, 37, 205, 197, 197,
- 206, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 207, 197,
- 210, 182, 183, 184, 509, 510, 81, 511,
- 512, 513, 197, 190, 152, 514, 197, 210,
- 194, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 196, 197,
- 113, 80, 80, 81, 202, 203, 204, 197,
- 197, 152, 515, 197, 516, 2, 357, 357,
- 357, 426, 357, 187, 188, 189, 357, 357,
- 357, 362, 357, 516, 357, 517, 364, 518,
- 519, 81, 511, 512, 513, 197, 197, 153,
- 367, 197, 197, 194, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 196, 197, 520, 364, 369, 369, 81,
- 511, 512, 513, 197, 197, 197, 367, 197,
- 197, 194, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 196,
- 197, 364, 369, 369, 81, 511, 512, 513,
- 197, 197, 197, 367, 197, 197, 194, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 196, 197, 521, 197,
- 197, 522, 512, 513, 197, 512, 513, 197,
- 250, 197, 512, 523, 197, 512, 524, 197,
- 512, 197, 521, 197, 197, 197, 512, 513,
- 197, 517, 364, 369, 369, 81, 511, 512,
- 513, 197, 197, 197, 367, 197, 197, 194,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 197, 197, 196, 197, 517,
- 364, 518, 369, 81, 511, 512, 513, 197,
- 197, 153, 367, 197, 197, 194, 197, 197,
- 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 197, 197, 196, 197, 210, 197, 275,
- 113, 525, 525, 155, 202, 203, 204, 197,
- 197, 197, 515, 197, 210, 197, 526, 179,
- 527, 528, 157, 511, 512, 513, 197, 197,
- 197, 529, 197, 179, 527, 528, 157, 511,
- 512, 513, 197, 197, 197, 529, 197, 527,
- 527, 157, 511, 512, 513, 197, 197, 197,
- 529, 197, 530, 176, 531, 532, 160, 511,
- 512, 513, 197, 197, 197, 529, 197, 176,
- 531, 532, 160, 511, 512, 513, 197, 197,
- 197, 529, 197, 531, 531, 160, 511, 512,
- 513, 197, 197, 197, 529, 197, 533, 173,
- 534, 535, 163, 511, 512, 513, 197, 197,
- 197, 529, 197, 173, 534, 535, 163, 511,
- 512, 513, 197, 197, 197, 529, 197, 534,
- 534, 163, 511, 512, 513, 197, 197, 197,
- 529, 197, 536, 170, 197, 537, 197, 511,
- 512, 513, 197, 197, 197, 529, 197, 170,
- 197, 537, 197, 511, 512, 513, 197, 197,
- 197, 529, 197, 511, 512, 513, 197, 197,
- 197, 529, 197, 538, 197, 539, 540, 197,
- 511, 512, 513, 197, 197, 167, 197, 166,
- 197, 197, 197, 197, 511, 512, 513, 197,
- 511, 512, 513, 197, 538, 197, 197, 197,
- 197, 511, 512, 513, 197, 538, 197, 539,
- 197, 197, 511, 512, 513, 197, 197, 167,
- 197, 516, 166, 357, 357, 95, 361, 357,
- 187, 188, 189, 357, 357, 357, 362, 357,
- 516, 357, 542, 541, 541, 541, 541, 543,
- 544, 545, 541, 543, 544, 545, 541, 546,
- 541, 541, 547, 544, 545, 541, 544, 545,
- 541, 548, 541, 544, 549, 541, 544, 550,
- 541, 544, 541, 546, 541, 541, 541, 544,
- 545, 541, 0
+ 1, 0, 2, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 0, 1, 0, 0, 0, 0,
+ 4, 0, 5, 5, 6, 1, 0, 7,
+ 7, 6, 0, 6, 0, 8, 8, 9,
+ 1, 0, 10, 10, 9, 0, 9, 0,
+ 11, 11, 12, 1, 0, 13, 13, 12,
+ 0, 12, 0, 14, 14, 15, 1, 0,
+ 16, 16, 15, 0, 15, 0, 17, 0,
+ 0, 0, 1, 0, 18, 0, 19, 0,
+ 20, 14, 14, 15, 1, 0, 21, 0,
+ 22, 0, 23, 11, 11, 12, 1, 0,
+ 24, 0, 25, 0, 26, 8, 8, 9,
+ 1, 0, 27, 0, 28, 0, 29, 5,
+ 5, 6, 1, 0, 0, 0, 0, 0,
+ 29, 0, 29, 5, 5, 6, 1, 0,
+ 0, 0, 0, 30, 29, 0, 31, 5,
+ 5, 6, 1, 0, 0, 0, 0, 0,
+ 31, 0, 31, 5, 5, 6, 1, 0,
+ 0, 0, 0, 32, 31, 0, 33, 5,
+ 5, 6, 1, 0, 0, 0, 0, 0,
+ 33, 0, 33, 5, 5, 6, 1, 0,
+ 0, 0, 0, 34, 33, 0, 35, 5,
+ 5, 6, 1, 0, 0, 0, 0, 0,
+ 35, 0, 35, 5, 5, 6, 1, 0,
+ 0, 0, 0, 36, 35, 0, 37, 5,
+ 5, 6, 1, 0, 0, 0, 0, 0,
+ 37, 0, 37, 5, 5, 6, 1, 0,
+ 0, 0, 0, 38, 37, 0, 40, 39,
+ 41, 42, 39, 39, 39, 39, 39, 39,
+ 39, 39, 39, 39, 39, 39, 39, 41,
+ 39, 40, 39, 39, 39, 39, 43, 39,
+ 44, 44, 45, 40, 39, 46, 46, 45,
+ 39, 45, 39, 47, 47, 48, 40, 39,
+ 49, 49, 48, 39, 48, 39, 50, 50,
+ 51, 40, 39, 52, 52, 51, 39, 51,
+ 39, 53, 53, 54, 40, 39, 55, 55,
+ 54, 39, 54, 39, 56, 39, 39, 39,
+ 40, 39, 57, 39, 58, 39, 59, 53,
+ 53, 54, 40, 39, 60, 39, 61, 39,
+ 62, 50, 50, 51, 40, 39, 63, 39,
+ 64, 39, 65, 47, 47, 48, 40, 39,
+ 66, 39, 67, 39, 68, 44, 44, 45,
+ 40, 39, 39, 39, 39, 39, 68, 39,
+ 68, 44, 44, 45, 40, 39, 39, 39,
+ 39, 69, 68, 39, 70, 44, 44, 45,
+ 40, 39, 39, 39, 39, 39, 70, 39,
+ 70, 44, 44, 45, 40, 39, 39, 39,
+ 39, 71, 70, 39, 72, 44, 44, 45,
+ 40, 39, 39, 39, 39, 39, 72, 39,
+ 72, 44, 44, 45, 40, 39, 39, 39,
+ 39, 73, 72, 39, 74, 44, 44, 45,
+ 40, 39, 39, 39, 39, 39, 74, 39,
+ 74, 44, 44, 45, 40, 39, 39, 39,
+ 39, 75, 74, 39, 76, 44, 44, 45,
+ 40, 39, 39, 39, 39, 39, 76, 39,
+ 76, 44, 44, 45, 40, 39, 39, 39,
+ 39, 77, 76, 39, 79, 78, 80, 81,
+ 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 80, 78, 79,
+ 78, 78, 78, 78, 82, 78, 83, 83,
+ 84, 79, 78, 86, 86, 84, 85, 84,
+ 85, 87, 87, 88, 79, 78, 89, 89,
+ 88, 78, 88, 78, 90, 90, 91, 79,
+ 78, 92, 92, 91, 78, 91, 78, 93,
+ 93, 94, 79, 78, 95, 95, 94, 78,
+ 94, 78, 96, 78, 78, 78, 79, 78,
+ 97, 78, 98, 78, 99, 93, 93, 94,
+ 79, 78, 100, 78, 101, 78, 102, 90,
+ 90, 91, 79, 78, 103, 78, 104, 78,
+ 105, 87, 87, 88, 79, 78, 106, 78,
+ 107, 78, 108, 83, 83, 84, 79, 78,
+ 78, 78, 78, 78, 108, 78, 108, 83,
+ 83, 84, 79, 78, 78, 78, 78, 109,
+ 108, 78, 110, 83, 83, 84, 79, 78,
+ 78, 78, 78, 78, 110, 78, 110, 83,
+ 83, 84, 79, 78, 78, 78, 78, 111,
+ 110, 78, 112, 83, 83, 84, 79, 78,
+ 78, 78, 78, 78, 112, 78, 112, 83,
+ 83, 84, 79, 78, 78, 78, 78, 113,
+ 112, 78, 114, 83, 83, 84, 79, 78,
+ 78, 78, 78, 78, 114, 78, 114, 83,
+ 83, 84, 79, 78, 78, 78, 78, 115,
+ 114, 78, 116, 83, 83, 84, 79, 78,
+ 78, 78, 78, 78, 116, 78, 118, 117,
+ 119, 120, 117, 117, 117, 117, 117, 117,
+ 117, 117, 117, 117, 117, 117, 117, 119,
+ 117, 118, 117, 117, 117, 117, 121, 117,
+ 122, 122, 123, 118, 117, 124, 124, 123,
+ 117, 123, 117, 125, 125, 126, 118, 117,
+ 127, 127, 126, 117, 126, 117, 128, 128,
+ 129, 118, 117, 130, 130, 129, 117, 129,
+ 117, 131, 131, 132, 118, 117, 133, 133,
+ 132, 117, 132, 117, 134, 117, 117, 117,
+ 118, 117, 135, 117, 136, 117, 137, 131,
+ 131, 132, 118, 117, 138, 117, 139, 117,
+ 140, 128, 128, 129, 118, 117, 141, 117,
+ 142, 117, 143, 125, 125, 126, 118, 117,
+ 144, 117, 145, 117, 146, 122, 122, 123,
+ 118, 117, 117, 117, 117, 117, 146, 117,
+ 146, 122, 122, 123, 118, 117, 117, 117,
+ 117, 147, 146, 117, 148, 122, 122, 123,
+ 118, 117, 117, 117, 117, 117, 148, 117,
+ 148, 122, 122, 123, 118, 117, 117, 117,
+ 117, 149, 148, 117, 150, 122, 122, 123,
+ 118, 117, 117, 117, 117, 117, 150, 117,
+ 150, 122, 122, 123, 118, 117, 117, 117,
+ 117, 151, 150, 117, 152, 122, 122, 123,
+ 118, 117, 117, 117, 117, 117, 152, 117,
+ 152, 122, 122, 123, 118, 117, 117, 117,
+ 117, 153, 152, 117, 154, 122, 122, 123,
+ 118, 117, 117, 117, 117, 117, 154, 117,
+ 154, 122, 122, 123, 118, 117, 117, 117,
+ 117, 155, 154, 117, 116, 83, 83, 84,
+ 79, 78, 78, 78, 78, 156, 116, 78,
+ 86, 86, 84, 1, 0, 114, 83, 83,
+ 84, 157, 0, 0, 0, 0, 0, 114,
+ 0, 114, 83, 83, 84, 157, 0, 0,
+ 0, 0, 158, 114, 0, 159, 159, 160,
+ 1, 0, 7, 7, 160, 0, 161, 161,
+ 162, 157, 0, 163, 163, 162, 0, 162,
+ 0, 164, 164, 165, 157, 0, 166, 166,
+ 165, 0, 165, 0, 167, 167, 168, 157,
+ 0, 169, 169, 168, 0, 168, 0, 157,
+ 0, 170, 171, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 170, 0, 157, 0, 0, 0, 0, 172,
+ 0, 173, 0, 0, 0, 157, 0, 174,
+ 0, 175, 0, 176, 167, 167, 168, 157,
+ 0, 177, 0, 178, 0, 179, 164, 164,
+ 165, 157, 0, 180, 0, 181, 0, 182,
+ 161, 161, 162, 157, 0, 183, 0, 184,
+ 0, 186, 185, 188, 189, 190, 191, 192,
+ 193, 84, 79, 194, 195, 196, 196, 156,
+ 197, 198, 199, 200, 201, 187, 187, 187,
+ 187, 187, 187, 187, 187, 187, 187, 187,
+ 187, 202, 187, 204, 205, 206, 207, 6,
+ 1, 208, 209, 203, 203, 38, 210, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 213, 205, 214, 214, 6, 1, 208,
+ 209, 203, 203, 203, 210, 203, 203, 211,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 212, 203, 205,
+ 214, 214, 6, 1, 208, 209, 203, 203,
+ 203, 210, 203, 203, 211, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 212, 203, 215, 203, 203, 203,
+ 19, 216, 203, 1, 208, 209, 203, 203,
+ 203, 217, 203, 215, 203, 218, 219, 220,
+ 221, 6, 1, 208, 209, 203, 203, 36,
+ 222, 203, 203, 211, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 212, 203, 223, 219, 224, 224, 6,
+ 1, 208, 209, 203, 203, 203, 222, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 219, 224, 224, 6, 1, 208, 209,
+ 203, 203, 203, 222, 203, 203, 211, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 212, 203, 225, 203,
+ 203, 203, 19, 226, 203, 1, 208, 209,
+ 203, 203, 203, 217, 203, 225, 203, 227,
+ 228, 229, 230, 6, 1, 208, 209, 203,
+ 203, 34, 231, 203, 203, 211, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 212, 203, 232, 228, 233,
+ 233, 6, 1, 208, 209, 203, 203, 203,
+ 231, 203, 203, 211, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 212, 203, 228, 233, 233, 6, 1,
+ 208, 209, 203, 203, 203, 231, 203, 203,
+ 211, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 212, 203,
+ 234, 203, 203, 203, 19, 235, 203, 1,
+ 208, 209, 203, 203, 203, 217, 203, 234,
+ 203, 236, 237, 238, 239, 6, 1, 208,
+ 209, 203, 203, 32, 240, 203, 203, 211,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 212, 203, 241,
+ 237, 242, 242, 6, 1, 208, 209, 203,
+ 203, 203, 240, 203, 203, 211, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 212, 203, 237, 242, 242,
+ 6, 1, 208, 209, 203, 203, 203, 240,
+ 203, 203, 211, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 212, 203, 243, 203, 203, 203, 19, 244,
+ 203, 1, 208, 209, 203, 203, 203, 217,
+ 203, 243, 203, 245, 246, 247, 248, 6,
+ 1, 208, 209, 203, 203, 30, 249, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 250, 246, 251, 251, 6, 1, 208,
+ 209, 203, 203, 203, 249, 203, 203, 211,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 212, 203, 246,
+ 251, 251, 6, 1, 208, 209, 203, 203,
+ 203, 249, 203, 203, 211, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 212, 203, 19, 252, 203, 1,
+ 208, 209, 203, 203, 203, 217, 203, 253,
+ 253, 203, 1, 208, 209, 203, 203, 203,
+ 217, 203, 254, 203, 203, 255, 208, 209,
+ 203, 208, 209, 203, 256, 203, 208, 257,
+ 203, 208, 258, 203, 208, 203, 254, 203,
+ 203, 203, 208, 209, 203, 259, 203, 260,
+ 261, 203, 1, 208, 209, 203, 203, 4,
+ 203, 3, 203, 253, 253, 203, 1, 208,
+ 209, 203, 253, 253, 203, 1, 208, 209,
+ 203, 259, 203, 253, 253, 203, 1, 208,
+ 209, 203, 259, 203, 260, 253, 203, 1,
+ 208, 209, 203, 203, 4, 203, 19, 203,
+ 262, 262, 6, 1, 208, 209, 203, 203,
+ 203, 217, 203, 263, 28, 264, 265, 9,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 28, 264, 265, 9, 1, 208, 209, 203,
+ 203, 203, 217, 203, 264, 264, 9, 1,
+ 208, 209, 203, 203, 203, 217, 203, 266,
+ 25, 267, 268, 12, 1, 208, 209, 203,
+ 203, 203, 217, 203, 25, 267, 268, 12,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 267, 267, 12, 1, 208, 209, 203, 203,
+ 203, 217, 203, 269, 22, 270, 271, 15,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 22, 270, 271, 15, 1, 208, 209, 203,
+ 203, 203, 217, 203, 270, 270, 15, 1,
+ 208, 209, 203, 203, 203, 217, 203, 272,
+ 19, 253, 273, 203, 1, 208, 209, 203,
+ 203, 203, 217, 203, 19, 253, 273, 203,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 253, 274, 203, 1, 208, 209, 203, 203,
+ 203, 217, 203, 19, 203, 253, 253, 203,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 2, 3, 203, 203, 19, 252, 203, 1,
+ 208, 209, 203, 203, 203, 217, 203, 2,
+ 203, 246, 251, 251, 6, 1, 208, 209,
+ 203, 203, 203, 249, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 212, 203, 246, 251,
+ 251, 6, 1, 208, 209, 203, 203, 203,
+ 249, 203, 245, 246, 251, 251, 6, 1,
+ 208, 209, 203, 203, 203, 249, 203, 203,
+ 211, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 212, 203,
+ 245, 246, 247, 251, 6, 1, 208, 209,
+ 203, 203, 30, 249, 203, 203, 211, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 212, 203, 243, 203,
+ 275, 203, 262, 262, 6, 1, 208, 209,
+ 203, 203, 203, 217, 203, 243, 203, 243,
+ 203, 203, 203, 253, 253, 203, 1, 208,
+ 209, 203, 203, 203, 217, 203, 243, 203,
+ 243, 203, 203, 203, 253, 276, 203, 1,
+ 208, 209, 203, 203, 203, 217, 203, 243,
+ 203, 243, 203, 275, 203, 253, 253, 203,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 243, 203, 243, 3, 203, 203, 19, 244,
+ 203, 1, 208, 209, 203, 203, 203, 217,
+ 203, 243, 203, 236, 237, 242, 242, 6,
+ 1, 208, 209, 203, 203, 203, 240, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 236, 237, 238, 242, 6, 1, 208,
+ 209, 203, 203, 32, 240, 203, 203, 211,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 212, 203, 234,
+ 203, 277, 203, 262, 262, 6, 1, 208,
+ 209, 203, 203, 203, 217, 203, 234, 203,
+ 234, 203, 203, 203, 253, 253, 203, 1,
+ 208, 209, 203, 203, 203, 217, 203, 234,
+ 203, 234, 203, 203, 203, 253, 278, 203,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 234, 203, 234, 203, 277, 203, 253, 253,
+ 203, 1, 208, 209, 203, 203, 203, 217,
+ 203, 234, 203, 234, 3, 203, 203, 19,
+ 235, 203, 1, 208, 209, 203, 203, 203,
+ 217, 203, 234, 203, 227, 228, 233, 233,
+ 6, 1, 208, 209, 203, 203, 203, 231,
+ 203, 203, 211, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 212, 203, 227, 228, 229, 233, 6, 1,
+ 208, 209, 203, 203, 34, 231, 203, 203,
+ 211, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 212, 203,
+ 225, 203, 279, 203, 262, 262, 6, 1,
+ 208, 209, 203, 203, 203, 217, 203, 225,
+ 203, 225, 203, 203, 203, 253, 253, 203,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 225, 203, 225, 203, 203, 203, 253, 280,
+ 203, 1, 208, 209, 203, 203, 203, 217,
+ 203, 225, 203, 225, 203, 279, 203, 253,
+ 253, 203, 1, 208, 209, 203, 203, 203,
+ 217, 203, 225, 203, 225, 3, 203, 203,
+ 19, 226, 203, 1, 208, 209, 203, 203,
+ 203, 217, 203, 225, 203, 218, 219, 224,
+ 224, 6, 1, 208, 209, 203, 203, 203,
+ 222, 203, 203, 211, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 212, 203, 218, 219, 220, 224, 6,
+ 1, 208, 209, 203, 203, 36, 222, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 215, 203, 281, 203, 262, 262, 6,
+ 1, 208, 209, 203, 203, 203, 217, 203,
+ 215, 203, 215, 203, 203, 203, 253, 253,
+ 203, 1, 208, 209, 203, 203, 203, 217,
+ 203, 215, 203, 215, 203, 203, 203, 253,
+ 282, 203, 1, 208, 209, 203, 203, 203,
+ 217, 203, 215, 203, 215, 203, 281, 203,
+ 253, 253, 203, 1, 208, 209, 203, 203,
+ 203, 217, 203, 215, 203, 215, 3, 203,
+ 203, 19, 216, 203, 1, 208, 209, 203,
+ 203, 203, 217, 203, 215, 203, 204, 205,
+ 214, 214, 6, 1, 208, 209, 203, 203,
+ 203, 210, 203, 203, 211, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 212, 203, 204, 205, 206, 214,
+ 6, 1, 208, 209, 203, 203, 38, 210,
+ 203, 203, 211, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 212, 203, 284, 285, 286, 287, 45, 40,
+ 288, 289, 283, 283, 77, 290, 283, 283,
+ 291, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 292, 283,
+ 293, 285, 294, 287, 45, 40, 288, 289,
+ 283, 283, 283, 290, 283, 283, 291, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 292, 283, 285, 294,
+ 287, 45, 40, 288, 289, 283, 283, 283,
+ 290, 283, 283, 291, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 292, 283, 295, 283, 283, 283, 58,
+ 296, 283, 40, 288, 289, 283, 283, 283,
+ 297, 283, 295, 283, 298, 299, 300, 301,
+ 45, 40, 288, 289, 283, 283, 75, 302,
+ 283, 283, 291, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 292, 283, 303, 299, 304, 304, 45, 40,
+ 288, 289, 283, 283, 283, 302, 283, 283,
+ 291, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 292, 283,
+ 299, 304, 304, 45, 40, 288, 289, 283,
+ 283, 283, 302, 283, 283, 291, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 292, 283, 305, 283, 283,
+ 283, 58, 306, 283, 40, 288, 289, 283,
+ 283, 283, 297, 283, 305, 283, 307, 308,
+ 309, 310, 45, 40, 288, 289, 283, 283,
+ 73, 311, 283, 283, 291, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 292, 283, 312, 308, 313, 313,
+ 45, 40, 288, 289, 283, 283, 283, 311,
+ 283, 283, 291, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 292, 283, 308, 313, 313, 45, 40, 288,
+ 289, 283, 283, 283, 311, 283, 283, 291,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 292, 283, 314,
+ 283, 283, 283, 58, 315, 283, 40, 288,
+ 289, 283, 283, 283, 297, 283, 314, 283,
+ 316, 317, 318, 319, 45, 40, 288, 289,
+ 283, 283, 71, 320, 283, 283, 291, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 292, 283, 321, 317,
+ 322, 322, 45, 40, 288, 289, 283, 283,
+ 283, 320, 283, 283, 291, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 292, 283, 317, 322, 322, 45,
+ 40, 288, 289, 283, 283, 283, 320, 283,
+ 283, 291, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 292,
+ 283, 323, 283, 283, 283, 58, 324, 283,
+ 40, 288, 289, 283, 283, 283, 297, 283,
+ 323, 283, 325, 326, 327, 328, 45, 40,
+ 288, 289, 283, 283, 69, 329, 283, 283,
+ 291, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 292, 283,
+ 330, 326, 331, 331, 45, 40, 288, 289,
+ 283, 283, 283, 329, 283, 283, 291, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 292, 283, 326, 331,
+ 331, 45, 40, 288, 289, 283, 283, 283,
+ 329, 283, 283, 291, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 292, 283, 58, 332, 283, 40, 288,
+ 289, 283, 283, 283, 297, 283, 333, 333,
+ 283, 40, 288, 289, 283, 283, 283, 297,
+ 283, 334, 283, 283, 335, 288, 289, 283,
+ 288, 289, 283, 336, 283, 288, 337, 283,
+ 288, 338, 283, 288, 283, 334, 283, 283,
+ 283, 288, 289, 283, 339, 283, 340, 341,
+ 283, 40, 288, 289, 283, 283, 43, 283,
+ 42, 283, 333, 333, 283, 40, 288, 289,
+ 283, 333, 333, 283, 40, 288, 289, 283,
+ 339, 283, 333, 333, 283, 40, 288, 289,
+ 283, 339, 283, 340, 333, 283, 40, 288,
+ 289, 283, 283, 43, 283, 58, 283, 342,
+ 342, 45, 40, 288, 289, 283, 283, 283,
+ 297, 283, 343, 67, 344, 345, 48, 40,
+ 288, 289, 283, 283, 283, 297, 283, 67,
+ 344, 345, 48, 40, 288, 289, 283, 283,
+ 283, 297, 283, 344, 344, 48, 40, 288,
+ 289, 283, 283, 283, 297, 283, 346, 64,
+ 347, 348, 51, 40, 288, 289, 283, 283,
+ 283, 297, 283, 64, 347, 348, 51, 40,
+ 288, 289, 283, 283, 283, 297, 283, 347,
+ 347, 51, 40, 288, 289, 283, 283, 283,
+ 297, 283, 349, 61, 350, 351, 54, 40,
+ 288, 289, 283, 283, 283, 297, 283, 61,
+ 350, 351, 54, 40, 288, 289, 283, 283,
+ 283, 297, 283, 350, 350, 54, 40, 288,
+ 289, 283, 283, 283, 297, 283, 352, 58,
+ 333, 353, 283, 40, 288, 289, 283, 283,
+ 283, 297, 283, 58, 333, 353, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 333,
+ 354, 283, 40, 288, 289, 283, 283, 283,
+ 297, 283, 58, 283, 333, 333, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 41,
+ 42, 283, 283, 58, 332, 283, 40, 288,
+ 289, 283, 283, 283, 297, 283, 41, 283,
+ 326, 331, 331, 45, 40, 288, 289, 283,
+ 283, 283, 329, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 292, 283, 326, 331, 331,
+ 45, 40, 288, 289, 283, 283, 283, 329,
+ 283, 325, 326, 331, 331, 45, 40, 288,
+ 289, 283, 283, 283, 329, 283, 283, 291,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 292, 283, 325,
+ 326, 327, 331, 45, 40, 288, 289, 283,
+ 283, 69, 329, 283, 283, 291, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 292, 283, 323, 283, 355,
+ 283, 342, 342, 45, 40, 288, 289, 283,
+ 283, 283, 297, 283, 323, 283, 323, 283,
+ 283, 283, 333, 333, 283, 40, 288, 289,
+ 283, 283, 283, 297, 283, 323, 283, 323,
+ 283, 283, 283, 333, 356, 283, 40, 288,
+ 289, 283, 283, 283, 297, 283, 323, 283,
+ 323, 283, 355, 283, 333, 333, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 323,
+ 283, 323, 42, 283, 283, 58, 324, 283,
+ 40, 288, 289, 283, 283, 283, 297, 283,
+ 323, 283, 316, 317, 322, 322, 45, 40,
+ 288, 289, 283, 283, 283, 320, 283, 283,
+ 291, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 292, 283,
+ 316, 317, 318, 322, 45, 40, 288, 289,
+ 283, 283, 71, 320, 283, 283, 291, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 292, 283, 314, 283,
+ 357, 283, 342, 342, 45, 40, 288, 289,
+ 283, 283, 283, 297, 283, 314, 283, 314,
+ 283, 283, 283, 333, 333, 283, 40, 288,
+ 289, 283, 283, 283, 297, 283, 314, 283,
+ 314, 283, 283, 283, 333, 358, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 314,
+ 283, 314, 283, 357, 283, 333, 333, 283,
+ 40, 288, 289, 283, 283, 283, 297, 283,
+ 314, 283, 314, 42, 283, 283, 58, 315,
+ 283, 40, 288, 289, 283, 283, 283, 297,
+ 283, 314, 283, 307, 308, 313, 313, 45,
+ 40, 288, 289, 283, 283, 283, 311, 283,
+ 283, 291, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 292,
+ 283, 307, 308, 309, 313, 45, 40, 288,
+ 289, 283, 283, 73, 311, 283, 283, 291,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 292, 283, 305,
+ 283, 359, 283, 342, 342, 45, 40, 288,
+ 289, 283, 283, 283, 297, 283, 305, 283,
+ 305, 283, 283, 283, 333, 333, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 305,
+ 283, 305, 283, 283, 283, 333, 360, 283,
+ 40, 288, 289, 283, 283, 283, 297, 283,
+ 305, 283, 305, 283, 359, 283, 333, 333,
+ 283, 40, 288, 289, 283, 283, 283, 297,
+ 283, 305, 283, 305, 42, 283, 283, 58,
+ 306, 283, 40, 288, 289, 283, 283, 283,
+ 297, 283, 305, 283, 298, 299, 304, 304,
+ 45, 40, 288, 289, 283, 283, 283, 302,
+ 283, 283, 291, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 292, 283, 298, 299, 300, 304, 45, 40,
+ 288, 289, 283, 283, 75, 302, 283, 283,
+ 291, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 283, 292, 283,
+ 295, 283, 361, 283, 342, 342, 45, 40,
+ 288, 289, 283, 283, 283, 297, 283, 295,
+ 283, 295, 283, 283, 283, 333, 333, 283,
+ 40, 288, 289, 283, 283, 283, 297, 283,
+ 295, 283, 295, 283, 283, 283, 333, 362,
+ 283, 40, 288, 289, 283, 283, 283, 297,
+ 283, 295, 283, 295, 283, 361, 283, 333,
+ 333, 283, 40, 288, 289, 283, 283, 283,
+ 297, 283, 295, 283, 76, 44, 44, 45,
+ 40, 283, 283, 283, 283, 283, 76, 283,
+ 295, 42, 283, 283, 58, 296, 283, 40,
+ 288, 289, 283, 283, 283, 297, 283, 295,
+ 283, 284, 285, 294, 287, 45, 40, 288,
+ 289, 283, 283, 283, 290, 283, 283, 291,
+ 283, 283, 283, 283, 283, 283, 283, 283,
+ 283, 283, 283, 283, 283, 292, 283, 364,
+ 191, 365, 365, 84, 79, 194, 195, 363,
+ 363, 363, 197, 363, 363, 200, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 202, 363, 191, 365, 365,
+ 84, 79, 194, 195, 363, 363, 363, 197,
+ 363, 363, 200, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 202, 363, 366, 363, 363, 363, 98, 367,
+ 363, 79, 194, 195, 363, 363, 363, 368,
+ 363, 366, 363, 369, 370, 371, 372, 84,
+ 79, 194, 195, 363, 363, 115, 373, 363,
+ 363, 200, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 202,
+ 363, 374, 370, 375, 375, 84, 79, 194,
+ 195, 363, 363, 363, 373, 363, 363, 200,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 202, 363, 370,
+ 375, 375, 84, 79, 194, 195, 363, 363,
+ 363, 373, 363, 363, 200, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 202, 363, 376, 363, 363, 363,
+ 98, 377, 363, 79, 194, 195, 363, 363,
+ 363, 368, 363, 376, 363, 378, 379, 380,
+ 381, 84, 79, 194, 195, 363, 363, 113,
+ 382, 363, 363, 200, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 202, 363, 383, 379, 384, 384, 84,
+ 79, 194, 195, 363, 363, 363, 382, 363,
+ 363, 200, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 202,
+ 363, 379, 384, 384, 84, 79, 194, 195,
+ 363, 363, 363, 382, 363, 363, 200, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 202, 363, 385, 363,
+ 363, 363, 98, 386, 363, 79, 194, 195,
+ 363, 363, 363, 368, 363, 385, 363, 387,
+ 388, 389, 390, 84, 79, 194, 195, 363,
+ 363, 111, 391, 363, 363, 200, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 202, 363, 392, 388, 393,
+ 393, 84, 79, 194, 195, 363, 363, 363,
+ 391, 363, 363, 200, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 202, 363, 388, 393, 393, 84, 79,
+ 194, 195, 363, 363, 363, 391, 363, 363,
+ 200, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 202, 363,
+ 394, 363, 363, 363, 98, 395, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 394,
+ 363, 396, 397, 398, 399, 84, 79, 194,
+ 195, 363, 363, 109, 400, 363, 363, 200,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 202, 363, 401,
+ 397, 402, 402, 84, 79, 194, 195, 363,
+ 363, 363, 400, 363, 363, 200, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 202, 363, 397, 402, 402,
+ 84, 79, 194, 195, 363, 363, 363, 400,
+ 363, 363, 200, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 202, 363, 98, 403, 363, 79, 194, 195,
+ 363, 363, 363, 368, 363, 404, 404, 363,
+ 79, 194, 195, 363, 363, 363, 368, 363,
+ 405, 363, 363, 406, 194, 195, 363, 194,
+ 195, 363, 407, 363, 194, 408, 363, 194,
+ 409, 363, 194, 363, 405, 363, 363, 363,
+ 194, 195, 363, 410, 363, 411, 412, 363,
+ 79, 194, 195, 363, 363, 82, 363, 81,
+ 363, 404, 404, 363, 79, 194, 195, 363,
+ 404, 404, 363, 79, 194, 195, 363, 410,
+ 363, 404, 404, 363, 79, 194, 195, 363,
+ 410, 363, 411, 404, 363, 79, 194, 195,
+ 363, 363, 82, 363, 98, 363, 413, 413,
+ 84, 79, 194, 195, 363, 363, 363, 368,
+ 363, 414, 107, 415, 416, 88, 79, 194,
+ 195, 363, 363, 363, 368, 363, 107, 415,
+ 416, 88, 79, 194, 195, 363, 363, 363,
+ 368, 363, 415, 415, 88, 79, 194, 195,
+ 363, 363, 363, 368, 363, 417, 104, 418,
+ 419, 91, 79, 194, 195, 363, 363, 363,
+ 368, 363, 104, 418, 419, 91, 79, 194,
+ 195, 363, 363, 363, 368, 363, 418, 418,
+ 91, 79, 194, 195, 363, 363, 363, 368,
+ 363, 420, 101, 421, 422, 94, 79, 194,
+ 195, 363, 363, 363, 368, 363, 101, 421,
+ 422, 94, 79, 194, 195, 363, 363, 363,
+ 368, 363, 421, 421, 94, 79, 194, 195,
+ 363, 363, 363, 368, 363, 423, 98, 404,
+ 424, 363, 79, 194, 195, 363, 363, 363,
+ 368, 363, 98, 404, 424, 363, 79, 194,
+ 195, 363, 363, 363, 368, 363, 404, 425,
+ 363, 79, 194, 195, 363, 363, 363, 368,
+ 363, 98, 363, 404, 404, 363, 79, 194,
+ 195, 363, 363, 363, 368, 363, 80, 81,
+ 363, 363, 98, 403, 363, 79, 194, 195,
+ 363, 363, 363, 368, 363, 80, 363, 397,
+ 402, 402, 84, 79, 194, 195, 363, 363,
+ 363, 400, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 202, 363, 397, 402, 402, 84,
+ 79, 194, 195, 363, 363, 363, 400, 363,
+ 396, 397, 402, 402, 84, 79, 194, 195,
+ 363, 363, 363, 400, 363, 363, 200, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 202, 363, 396, 397,
+ 398, 402, 84, 79, 194, 195, 363, 363,
+ 109, 400, 363, 363, 200, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 202, 363, 394, 363, 426, 363,
+ 413, 413, 84, 79, 194, 195, 363, 363,
+ 363, 368, 363, 394, 363, 394, 363, 363,
+ 363, 404, 404, 363, 79, 194, 195, 363,
+ 363, 363, 368, 363, 394, 363, 394, 363,
+ 363, 363, 404, 427, 363, 79, 194, 195,
+ 363, 363, 363, 368, 363, 394, 363, 394,
+ 363, 426, 363, 404, 404, 363, 79, 194,
+ 195, 363, 363, 363, 368, 363, 394, 363,
+ 394, 81, 363, 363, 98, 395, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 394,
+ 363, 387, 388, 393, 393, 84, 79, 194,
+ 195, 363, 363, 363, 391, 363, 363, 200,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 202, 363, 387,
+ 388, 389, 393, 84, 79, 194, 195, 363,
+ 363, 111, 391, 363, 363, 200, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 202, 363, 385, 363, 428,
+ 363, 413, 413, 84, 79, 194, 195, 363,
+ 363, 363, 368, 363, 385, 363, 385, 363,
+ 363, 363, 404, 404, 363, 79, 194, 195,
+ 363, 363, 363, 368, 363, 385, 363, 385,
+ 363, 363, 363, 404, 429, 363, 79, 194,
+ 195, 363, 363, 363, 368, 363, 385, 363,
+ 385, 363, 428, 363, 404, 404, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 385,
+ 363, 385, 81, 363, 363, 98, 386, 363,
+ 79, 194, 195, 363, 363, 363, 368, 363,
+ 385, 363, 378, 379, 384, 384, 84, 79,
+ 194, 195, 363, 363, 363, 382, 363, 363,
+ 200, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 202, 363,
+ 378, 379, 380, 384, 84, 79, 194, 195,
+ 363, 363, 113, 382, 363, 363, 200, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 202, 363, 376, 363,
+ 430, 363, 413, 413, 84, 79, 194, 195,
+ 363, 363, 363, 368, 363, 376, 363, 376,
+ 363, 363, 363, 404, 404, 363, 79, 194,
+ 195, 363, 363, 363, 368, 363, 376, 363,
+ 376, 363, 363, 363, 404, 431, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 376,
+ 363, 376, 363, 430, 363, 404, 404, 363,
+ 79, 194, 195, 363, 363, 363, 368, 363,
+ 376, 363, 376, 81, 363, 363, 98, 377,
+ 363, 79, 194, 195, 363, 363, 363, 368,
+ 363, 376, 363, 369, 370, 375, 375, 84,
+ 79, 194, 195, 363, 363, 363, 373, 363,
+ 363, 200, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 202,
+ 363, 369, 370, 371, 375, 84, 79, 194,
+ 195, 363, 363, 115, 373, 363, 363, 200,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 202, 363, 366,
+ 363, 432, 363, 413, 413, 84, 79, 194,
+ 195, 363, 363, 363, 368, 363, 366, 363,
+ 366, 363, 363, 363, 404, 404, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 366,
+ 363, 366, 363, 363, 363, 404, 433, 363,
+ 79, 194, 195, 363, 363, 363, 368, 363,
+ 366, 363, 366, 363, 432, 363, 404, 404,
+ 363, 79, 194, 195, 363, 363, 363, 368,
+ 363, 366, 363, 366, 81, 363, 363, 98,
+ 367, 363, 79, 194, 195, 363, 363, 363,
+ 368, 363, 366, 363, 116, 83, 83, 84,
+ 79, 434, 434, 434, 434, 156, 116, 434,
+ 190, 191, 365, 365, 84, 79, 194, 195,
+ 363, 363, 363, 197, 363, 363, 200, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 363, 363, 363, 202, 363, 116, 83,
+ 83, 84, 79, 434, 434, 434, 434, 434,
+ 116, 434, 436, 437, 438, 439, 123, 118,
+ 440, 441, 435, 435, 155, 442, 435, 435,
+ 443, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 444, 435,
+ 445, 437, 439, 439, 123, 118, 440, 441,
+ 435, 435, 435, 442, 435, 435, 443, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 444, 435, 437, 439,
+ 439, 123, 118, 440, 441, 435, 435, 435,
+ 442, 435, 435, 443, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 444, 435, 446, 435, 435, 435, 136,
+ 447, 435, 118, 440, 441, 435, 435, 435,
+ 448, 435, 446, 435, 449, 450, 451, 452,
+ 123, 118, 440, 441, 435, 435, 153, 453,
+ 435, 435, 443, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 444, 435, 454, 450, 455, 455, 123, 118,
+ 440, 441, 435, 435, 435, 453, 435, 435,
+ 443, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 444, 435,
+ 450, 455, 455, 123, 118, 440, 441, 435,
+ 435, 435, 453, 435, 435, 443, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 444, 435, 456, 435, 435,
+ 435, 136, 457, 435, 118, 440, 441, 435,
+ 435, 435, 448, 435, 456, 435, 458, 459,
+ 460, 461, 123, 118, 440, 441, 435, 435,
+ 151, 462, 435, 435, 443, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 444, 435, 463, 459, 464, 464,
+ 123, 118, 440, 441, 435, 435, 435, 462,
+ 435, 435, 443, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 444, 435, 459, 464, 464, 123, 118, 440,
+ 441, 435, 435, 435, 462, 435, 435, 443,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 444, 435, 465,
+ 435, 435, 435, 136, 466, 435, 118, 440,
+ 441, 435, 435, 435, 448, 435, 465, 435,
+ 467, 468, 469, 470, 123, 118, 440, 441,
+ 435, 435, 149, 471, 435, 435, 443, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 444, 435, 472, 468,
+ 473, 473, 123, 118, 440, 441, 435, 435,
+ 435, 471, 435, 435, 443, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 444, 435, 468, 473, 473, 123,
+ 118, 440, 441, 435, 435, 435, 471, 435,
+ 435, 443, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 444,
+ 435, 474, 435, 435, 435, 136, 475, 435,
+ 118, 440, 441, 435, 435, 435, 448, 435,
+ 474, 435, 476, 477, 478, 479, 123, 118,
+ 440, 441, 435, 435, 147, 480, 435, 435,
+ 443, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 444, 435,
+ 481, 477, 482, 482, 123, 118, 440, 441,
+ 435, 435, 435, 480, 435, 435, 443, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 444, 435, 477, 482,
+ 482, 123, 118, 440, 441, 435, 435, 435,
+ 480, 435, 435, 443, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 444, 435, 136, 483, 435, 118, 440,
+ 441, 435, 435, 435, 448, 435, 484, 484,
+ 435, 118, 440, 441, 435, 435, 435, 448,
+ 435, 485, 435, 435, 486, 440, 441, 435,
+ 440, 441, 435, 487, 435, 440, 488, 435,
+ 440, 489, 435, 440, 435, 485, 435, 435,
+ 435, 440, 441, 435, 490, 435, 491, 492,
+ 435, 118, 440, 441, 435, 435, 121, 435,
+ 120, 435, 484, 484, 435, 118, 440, 441,
+ 435, 484, 484, 435, 118, 440, 441, 435,
+ 490, 435, 484, 484, 435, 118, 440, 441,
+ 435, 490, 435, 491, 484, 435, 118, 440,
+ 441, 435, 435, 121, 435, 136, 435, 493,
+ 493, 123, 118, 440, 441, 435, 435, 435,
+ 448, 435, 494, 145, 495, 496, 126, 118,
+ 440, 441, 435, 435, 435, 448, 435, 145,
+ 495, 496, 126, 118, 440, 441, 435, 435,
+ 435, 448, 435, 495, 495, 126, 118, 440,
+ 441, 435, 435, 435, 448, 435, 497, 142,
+ 498, 499, 129, 118, 440, 441, 435, 435,
+ 435, 448, 435, 142, 498, 499, 129, 118,
+ 440, 441, 435, 435, 435, 448, 435, 498,
+ 498, 129, 118, 440, 441, 435, 435, 435,
+ 448, 435, 500, 139, 501, 502, 132, 118,
+ 440, 441, 435, 435, 435, 448, 435, 139,
+ 501, 502, 132, 118, 440, 441, 435, 435,
+ 435, 448, 435, 501, 501, 132, 118, 440,
+ 441, 435, 435, 435, 448, 435, 503, 136,
+ 484, 504, 435, 118, 440, 441, 435, 435,
+ 435, 448, 435, 136, 484, 504, 435, 118,
+ 440, 441, 435, 435, 435, 448, 435, 484,
+ 505, 435, 118, 440, 441, 435, 435, 435,
+ 448, 435, 136, 435, 484, 484, 435, 118,
+ 440, 441, 435, 435, 435, 448, 435, 119,
+ 120, 435, 435, 136, 483, 435, 118, 440,
+ 441, 435, 435, 435, 448, 435, 119, 435,
+ 477, 482, 482, 123, 118, 440, 441, 435,
+ 435, 435, 480, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 444, 435, 477, 482, 482,
+ 123, 118, 440, 441, 435, 435, 435, 480,
+ 435, 476, 477, 482, 482, 123, 118, 440,
+ 441, 435, 435, 435, 480, 435, 435, 443,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 444, 435, 476,
+ 477, 478, 482, 123, 118, 440, 441, 435,
+ 435, 147, 480, 435, 435, 443, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 444, 435, 474, 435, 506,
+ 435, 493, 493, 123, 118, 440, 441, 435,
+ 435, 435, 448, 435, 474, 435, 474, 435,
+ 435, 435, 484, 484, 435, 118, 440, 441,
+ 435, 435, 435, 448, 435, 474, 435, 474,
+ 435, 435, 435, 484, 507, 435, 118, 440,
+ 441, 435, 435, 435, 448, 435, 474, 435,
+ 474, 435, 506, 435, 484, 484, 435, 118,
+ 440, 441, 435, 435, 435, 448, 435, 474,
+ 435, 474, 120, 435, 435, 136, 475, 435,
+ 118, 440, 441, 435, 435, 435, 448, 435,
+ 474, 435, 467, 468, 473, 473, 123, 118,
+ 440, 441, 435, 435, 435, 471, 435, 435,
+ 443, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 444, 435,
+ 467, 468, 469, 473, 123, 118, 440, 441,
+ 435, 435, 149, 471, 435, 435, 443, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 444, 435, 465, 435,
+ 508, 435, 493, 493, 123, 118, 440, 441,
+ 435, 435, 435, 448, 435, 465, 435, 465,
+ 435, 435, 435, 484, 484, 435, 118, 440,
+ 441, 435, 435, 435, 448, 435, 465, 435,
+ 465, 435, 435, 435, 484, 509, 435, 118,
+ 440, 441, 435, 435, 435, 448, 435, 465,
+ 435, 465, 435, 508, 435, 484, 484, 435,
+ 118, 440, 441, 435, 435, 435, 448, 435,
+ 465, 435, 465, 120, 435, 435, 136, 466,
+ 435, 118, 440, 441, 435, 435, 435, 448,
+ 435, 465, 435, 458, 459, 464, 464, 123,
+ 118, 440, 441, 435, 435, 435, 462, 435,
+ 435, 443, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 444,
+ 435, 458, 459, 460, 464, 123, 118, 440,
+ 441, 435, 435, 151, 462, 435, 435, 443,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 444, 435, 456,
+ 435, 510, 435, 493, 493, 123, 118, 440,
+ 441, 435, 435, 435, 448, 435, 456, 435,
+ 456, 435, 435, 435, 484, 484, 435, 118,
+ 440, 441, 435, 435, 435, 448, 435, 456,
+ 435, 456, 435, 435, 435, 484, 511, 435,
+ 118, 440, 441, 435, 435, 435, 448, 435,
+ 456, 435, 456, 435, 510, 435, 484, 484,
+ 435, 118, 440, 441, 435, 435, 435, 448,
+ 435, 456, 435, 456, 120, 435, 435, 136,
+ 457, 435, 118, 440, 441, 435, 435, 435,
+ 448, 435, 456, 435, 449, 450, 455, 455,
+ 123, 118, 440, 441, 435, 435, 435, 453,
+ 435, 435, 443, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 444, 435, 449, 450, 451, 455, 123, 118,
+ 440, 441, 435, 435, 153, 453, 435, 435,
+ 443, 435, 435, 435, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 444, 435,
+ 446, 435, 512, 435, 493, 493, 123, 118,
+ 440, 441, 435, 435, 435, 448, 435, 446,
+ 435, 446, 435, 435, 435, 484, 484, 435,
+ 118, 440, 441, 435, 435, 435, 448, 435,
+ 446, 435, 446, 435, 435, 435, 484, 513,
+ 435, 118, 440, 441, 435, 435, 435, 448,
+ 435, 446, 435, 446, 435, 512, 435, 484,
+ 484, 435, 118, 440, 441, 435, 435, 435,
+ 448, 435, 446, 435, 446, 120, 435, 435,
+ 136, 447, 435, 118, 440, 441, 435, 435,
+ 435, 448, 435, 446, 435, 436, 437, 439,
+ 439, 123, 118, 440, 441, 435, 435, 435,
+ 442, 435, 435, 443, 435, 435, 435, 435,
+ 435, 435, 435, 435, 435, 435, 435, 435,
+ 435, 444, 435, 188, 189, 190, 191, 514,
+ 365, 84, 79, 194, 195, 196, 196, 156,
+ 197, 363, 188, 200, 363, 363, 363, 363,
+ 363, 363, 363, 363, 363, 363, 363, 363,
+ 363, 202, 363, 204, 515, 206, 207, 6,
+ 1, 208, 209, 203, 203, 38, 210, 203,
+ 203, 211, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 212,
+ 203, 215, 189, 190, 191, 516, 517, 84,
+ 157, 518, 519, 203, 196, 156, 520, 203,
+ 215, 200, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 202,
+ 203, 116, 521, 521, 84, 157, 208, 209,
+ 203, 203, 156, 522, 203, 523, 203, 203,
+ 524, 518, 519, 203, 518, 519, 203, 256,
+ 203, 518, 525, 203, 518, 526, 203, 518,
+ 203, 523, 203, 203, 203, 518, 519, 203,
+ 527, 3, 363, 363, 404, 433, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 527,
+ 363, 528, 370, 529, 530, 84, 157, 518,
+ 519, 203, 203, 158, 373, 203, 203, 200,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 202, 203, 531,
+ 370, 532, 532, 84, 157, 518, 519, 203,
+ 203, 203, 373, 203, 203, 200, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 202, 203, 370, 532, 532,
+ 84, 157, 518, 519, 203, 203, 203, 373,
+ 203, 203, 200, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 202, 203, 528, 370, 532, 532, 84, 157,
+ 518, 519, 203, 203, 203, 373, 203, 203,
+ 200, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 203, 203, 202, 203,
+ 528, 370, 529, 532, 84, 157, 518, 519,
+ 203, 203, 158, 373, 203, 203, 200, 203,
+ 203, 203, 203, 203, 203, 203, 203, 203,
+ 203, 203, 203, 203, 202, 203, 215, 203,
+ 281, 116, 533, 533, 160, 157, 208, 209,
+ 203, 203, 203, 522, 203, 215, 203, 534,
+ 184, 535, 536, 162, 157, 518, 519, 203,
+ 203, 203, 537, 203, 184, 535, 536, 162,
+ 157, 518, 519, 203, 203, 203, 537, 203,
+ 535, 535, 162, 157, 518, 519, 203, 203,
+ 203, 537, 203, 538, 181, 539, 540, 165,
+ 157, 518, 519, 203, 203, 203, 537, 203,
+ 181, 539, 540, 165, 157, 518, 519, 203,
+ 203, 203, 537, 203, 539, 539, 165, 157,
+ 518, 519, 203, 203, 203, 537, 203, 541,
+ 178, 542, 543, 168, 157, 518, 519, 203,
+ 203, 203, 537, 203, 178, 542, 543, 168,
+ 157, 518, 519, 203, 203, 203, 537, 203,
+ 542, 542, 168, 157, 518, 519, 203, 203,
+ 203, 537, 203, 544, 175, 545, 546, 203,
+ 157, 518, 519, 203, 203, 203, 537, 203,
+ 175, 545, 546, 203, 157, 518, 519, 203,
+ 203, 203, 537, 203, 545, 545, 203, 157,
+ 518, 519, 203, 203, 203, 537, 203, 547,
+ 203, 548, 549, 203, 157, 518, 519, 203,
+ 203, 172, 203, 171, 203, 545, 545, 203,
+ 157, 518, 519, 203, 545, 545, 203, 157,
+ 518, 519, 203, 547, 203, 545, 545, 203,
+ 157, 518, 519, 203, 547, 203, 548, 545,
+ 203, 157, 518, 519, 203, 203, 172, 203,
+ 527, 171, 363, 363, 98, 367, 363, 79,
+ 194, 195, 363, 363, 363, 368, 363, 527,
+ 363, 551, 550, 552, 552, 550, 186, 553,
+ 554, 550, 552, 552, 550, 186, 553, 554,
+ 550, 555, 550, 550, 556, 553, 554, 550,
+ 553, 554, 550, 557, 550, 553, 558, 550,
+ 553, 559, 550, 553, 550, 555, 550, 550,
+ 550, 553, 554, 550, 0
};
static const short _indic_syllable_machine_trans_targs[] = {
- 170, 199, 201, 202, 3, 205, 4, 6,
- 208, 7, 9, 211, 10, 12, 214, 13,
- 15, 16, 191, 18, 19, 213, 21, 22,
- 210, 24, 25, 207, 216, 221, 225, 228,
- 232, 235, 239, 242, 246, 249, 170, 279,
- 281, 282, 39, 285, 40, 42, 288, 43,
- 45, 291, 46, 48, 294, 49, 51, 52,
- 271, 54, 55, 293, 57, 58, 290, 60,
- 61, 287, 296, 301, 305, 308, 312, 315,
- 319, 322, 326, 330, 170, 358, 360, 361,
- 75, 364, 170, 76, 78, 367, 79, 81,
- 370, 82, 84, 373, 85, 87, 88, 350,
- 90, 91, 372, 93, 94, 369, 96, 97,
- 366, 375, 380, 384, 387, 391, 394, 398,
- 401, 405, 170, 439, 441, 442, 110, 445,
- 111, 113, 448, 114, 116, 451, 117, 119,
- 454, 120, 122, 123, 431, 125, 126, 453,
- 128, 129, 450, 131, 132, 447, 456, 461,
- 465, 468, 472, 475, 479, 482, 486, 489,
- 409, 505, 146, 508, 148, 511, 149, 151,
- 514, 152, 154, 517, 155, 520, 522, 523,
- 159, 160, 519, 162, 163, 516, 165, 166,
- 513, 168, 169, 510, 170, 171, 251, 331,
- 333, 408, 410, 351, 353, 354, 411, 407,
- 490, 491, 378, 526, 379, 170, 172, 174,
- 35, 250, 192, 194, 195, 248, 219, 220,
- 173, 34, 175, 244, 0, 176, 178, 33,
- 243, 241, 177, 32, 179, 237, 180, 182,
- 31, 236, 234, 181, 30, 183, 230, 184,
- 186, 29, 229, 227, 185, 28, 187, 223,
- 188, 190, 27, 222, 218, 189, 26, 204,
- 193, 198, 170, 196, 197, 200, 1, 203,
- 2, 206, 5, 23, 209, 8, 20, 212,
- 11, 17, 215, 14, 217, 224, 226, 231,
- 233, 238, 240, 245, 247, 170, 252, 254,
- 71, 328, 272, 274, 275, 329, 299, 300,
- 253, 70, 255, 324, 36, 256, 258, 69,
- 323, 321, 257, 68, 259, 317, 260, 262,
- 67, 316, 314, 261, 66, 263, 310, 264,
- 266, 65, 309, 307, 265, 64, 267, 303,
- 268, 270, 63, 302, 298, 269, 62, 284,
- 273, 278, 170, 276, 277, 280, 37, 283,
- 38, 286, 41, 59, 289, 44, 56, 292,
- 47, 53, 295, 50, 297, 304, 306, 311,
- 313, 318, 320, 325, 327, 170, 332, 106,
- 334, 403, 72, 335, 337, 105, 402, 400,
- 336, 104, 338, 396, 339, 341, 103, 395,
- 393, 340, 102, 342, 389, 343, 345, 101,
- 388, 386, 344, 100, 346, 382, 347, 349,
- 99, 381, 377, 348, 98, 363, 352, 357,
- 170, 355, 356, 359, 73, 362, 74, 365,
- 77, 95, 368, 80, 92, 371, 83, 89,
- 374, 86, 376, 383, 385, 390, 392, 397,
- 399, 404, 406, 170, 170, 412, 414, 142,
- 141, 432, 434, 435, 488, 459, 460, 413,
- 415, 484, 107, 416, 418, 140, 483, 481,
- 417, 139, 419, 477, 420, 422, 138, 476,
- 474, 421, 137, 423, 470, 424, 426, 136,
- 469, 467, 425, 135, 427, 463, 428, 430,
- 134, 462, 458, 429, 133, 444, 433, 438,
- 170, 436, 437, 440, 108, 443, 109, 446,
- 112, 130, 449, 115, 127, 452, 118, 124,
- 455, 121, 457, 464, 466, 471, 473, 478,
- 480, 485, 487, 143, 492, 493, 507, 498,
- 500, 501, 525, 494, 495, 496, 144, 506,
- 497, 499, 504, 502, 503, 145, 509, 147,
- 167, 156, 512, 150, 164, 515, 153, 161,
- 518, 158, 521, 157, 524, 170, 527, 528,
- 530, 531, 529, 534, 170, 532, 533
+ 178, 200, 207, 209, 210, 4, 213, 5,
+ 7, 216, 8, 10, 219, 11, 13, 222,
+ 14, 16, 17, 199, 19, 20, 221, 22,
+ 23, 218, 25, 26, 215, 224, 229, 233,
+ 236, 240, 243, 247, 250, 254, 257, 178,
+ 280, 287, 289, 290, 41, 293, 42, 44,
+ 296, 45, 47, 299, 48, 50, 302, 51,
+ 53, 54, 279, 56, 57, 301, 59, 60,
+ 298, 62, 63, 295, 304, 309, 313, 316,
+ 320, 323, 327, 330, 334, 338, 178, 359,
+ 366, 368, 369, 78, 372, 178, 79, 81,
+ 375, 82, 84, 378, 85, 87, 381, 88,
+ 90, 91, 358, 93, 94, 380, 96, 97,
+ 377, 99, 100, 374, 383, 388, 392, 395,
+ 399, 402, 406, 409, 413, 178, 440, 447,
+ 449, 450, 114, 453, 115, 117, 456, 118,
+ 120, 459, 121, 123, 462, 124, 126, 127,
+ 439, 129, 130, 461, 132, 133, 458, 135,
+ 136, 455, 464, 469, 473, 476, 480, 483,
+ 487, 490, 494, 497, 417, 502, 513, 152,
+ 516, 154, 519, 155, 157, 522, 158, 160,
+ 525, 161, 528, 530, 531, 166, 167, 527,
+ 169, 170, 524, 172, 173, 521, 175, 176,
+ 518, 178, 536, 178, 179, 259, 339, 341,
+ 416, 418, 361, 362, 419, 415, 498, 499,
+ 386, 534, 387, 178, 180, 182, 36, 258,
+ 202, 203, 256, 227, 228, 181, 35, 183,
+ 252, 1, 184, 186, 34, 251, 249, 185,
+ 33, 187, 245, 188, 190, 32, 244, 242,
+ 189, 31, 191, 238, 192, 194, 30, 237,
+ 235, 193, 29, 195, 231, 196, 198, 28,
+ 230, 226, 197, 27, 212, 0, 201, 206,
+ 178, 204, 205, 208, 2, 211, 3, 214,
+ 6, 24, 217, 9, 21, 220, 12, 18,
+ 223, 15, 225, 232, 234, 239, 241, 246,
+ 248, 253, 255, 178, 260, 262, 73, 336,
+ 282, 283, 337, 307, 308, 261, 72, 263,
+ 332, 38, 264, 266, 71, 331, 329, 265,
+ 70, 267, 325, 268, 270, 69, 324, 322,
+ 269, 68, 271, 318, 272, 274, 67, 317,
+ 315, 273, 66, 275, 311, 276, 278, 65,
+ 310, 306, 277, 64, 292, 37, 281, 286,
+ 178, 284, 285, 288, 39, 291, 40, 294,
+ 43, 61, 297, 46, 58, 300, 49, 55,
+ 303, 52, 305, 312, 314, 319, 321, 326,
+ 328, 333, 335, 178, 340, 109, 342, 411,
+ 75, 343, 345, 108, 410, 408, 344, 107,
+ 346, 404, 347, 349, 106, 403, 401, 348,
+ 105, 350, 397, 351, 353, 104, 396, 394,
+ 352, 103, 354, 390, 355, 357, 102, 389,
+ 385, 356, 101, 371, 74, 360, 365, 178,
+ 363, 364, 367, 76, 370, 77, 373, 80,
+ 98, 376, 83, 95, 379, 86, 92, 382,
+ 89, 384, 391, 393, 398, 400, 405, 407,
+ 412, 414, 178, 178, 420, 422, 146, 145,
+ 442, 443, 496, 467, 468, 421, 423, 492,
+ 111, 424, 426, 144, 491, 489, 425, 143,
+ 427, 485, 428, 430, 142, 484, 482, 429,
+ 141, 431, 478, 432, 434, 140, 477, 475,
+ 433, 139, 435, 471, 436, 438, 138, 470,
+ 466, 437, 137, 452, 110, 441, 446, 178,
+ 444, 445, 448, 112, 451, 113, 454, 116,
+ 134, 457, 119, 131, 460, 122, 128, 463,
+ 125, 465, 472, 474, 479, 481, 486, 488,
+ 493, 495, 147, 500, 501, 515, 504, 505,
+ 533, 148, 509, 503, 508, 506, 507, 510,
+ 511, 150, 514, 512, 149, 151, 517, 153,
+ 174, 163, 520, 156, 171, 523, 159, 168,
+ 526, 162, 165, 529, 164, 532, 178, 535,
+ 177, 538, 539, 537, 542, 178, 540, 541
};
static const char _indic_syllable_machine_trans_actions[] = {
- 1, 2, 0, 0, 0, 2, 0, 0,
+ 1, 0, 2, 2, 2, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 2,
+ 0, 0, 0, 2, 0, 0, 2, 0,
+ 0, 2, 0, 0, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 3,
+ 0, 2, 2, 2, 0, 2, 0, 0,
2, 0, 0, 2, 0, 0, 2, 0,
0, 0, 2, 0, 0, 2, 0, 0,
2, 0, 0, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 3, 2,
- 0, 0, 0, 2, 0, 0, 2, 0,
+ 2, 2, 2, 2, 2, 2, 4, 0,
+ 2, 2, 2, 0, 2, 5, 0, 0,
+ 2, 0, 0, 2, 0, 0, 2, 0,
+ 0, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 0, 2, 2, 6, 2, 6,
+ 2, 6, 2, 6, 2, 7, 0, 2,
+ 2, 2, 0, 2, 0, 0, 2, 0,
0, 2, 0, 0, 2, 0, 0, 0,
2, 0, 0, 2, 0, 0, 2, 0,
0, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 4, 2, 0, 0,
- 0, 2, 5, 0, 0, 2, 0, 0,
- 2, 0, 0, 2, 0, 0, 0, 2,
+ 2, 2, 2, 2, 6, 0, 8, 0,
+ 2, 0, 2, 0, 0, 2, 0, 0,
+ 2, 0, 2, 2, 2, 0, 0, 2,
0, 0, 2, 0, 0, 2, 0, 0,
- 2, 2, 6, 2, 6, 2, 6, 2,
- 6, 2, 7, 2, 0, 0, 0, 2,
- 0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 0, 0, 2, 0, 0, 2,
- 0, 0, 2, 0, 0, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2,
- 6, 8, 0, 2, 0, 2, 0, 0,
- 2, 0, 0, 2, 0, 2, 0, 0,
- 0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 0, 2, 11, 2, 2, 6,
- 2, 12, 12, 0, 0, 0, 2, 2,
- 6, 2, 6, 0, 6, 13, 2, 2,
- 0, 2, 0, 0, 0, 2, 2, 2,
- 2, 0, 2, 2, 0, 2, 2, 0,
- 2, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 2, 0, 2, 2, 2,
- 2, 0, 2, 2, 2, 0, 2, 2,
- 2, 2, 0, 2, 2, 2, 0, 2,
- 0, 0, 14, 0, 0, 0, 0, 2,
- 0, 2, 0, 0, 2, 0, 0, 2,
- 0, 0, 2, 0, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 15, 2, 2,
- 0, 2, 0, 0, 0, 2, 2, 2,
- 2, 0, 2, 2, 0, 2, 2, 0,
- 2, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 2, 0, 2, 2, 2,
- 2, 0, 2, 2, 2, 0, 2, 2,
- 2, 2, 0, 2, 2, 2, 0, 2,
- 0, 0, 16, 0, 0, 0, 0, 2,
- 0, 2, 0, 0, 2, 0, 0, 2,
- 0, 0, 2, 0, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 17, 6, 0,
- 6, 6, 0, 6, 2, 0, 6, 2,
- 6, 0, 6, 6, 6, 2, 0, 6,
- 2, 6, 0, 6, 6, 6, 2, 0,
- 6, 2, 6, 0, 6, 6, 6, 2,
- 0, 6, 2, 6, 0, 6, 0, 0,
- 18, 0, 0, 0, 0, 2, 0, 2,
+ 2, 9, 0, 12, 2, 2, 6, 2,
+ 13, 13, 0, 0, 2, 2, 6, 2,
+ 6, 2, 6, 14, 2, 2, 0, 2,
+ 0, 0, 2, 2, 2, 2, 0, 2,
+ 2, 0, 2, 2, 0, 2, 2, 2,
+ 0, 2, 2, 2, 2, 0, 2, 2,
+ 2, 0, 2, 2, 2, 2, 0, 2,
+ 2, 2, 0, 2, 2, 2, 2, 0,
+ 2, 2, 2, 0, 2, 0, 0, 0,
+ 15, 0, 0, 2, 0, 2, 0, 2,
0, 0, 2, 0, 0, 2, 0, 0,
2, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 19, 20, 2, 2, 0,
- 0, 0, 0, 0, 2, 2, 2, 2,
- 2, 2, 0, 2, 2, 0, 2, 2,
+ 2, 2, 2, 16, 2, 2, 0, 2,
+ 0, 0, 2, 2, 2, 2, 0, 2,
+ 2, 0, 2, 2, 0, 2, 2, 2,
+ 0, 2, 2, 2, 2, 0, 2, 2,
2, 0, 2, 2, 2, 2, 0, 2,
2, 2, 0, 2, 2, 2, 2, 0,
- 2, 2, 2, 0, 2, 2, 2, 2,
- 0, 2, 2, 2, 0, 2, 0, 0,
- 21, 0, 0, 0, 0, 2, 0, 2,
+ 2, 2, 2, 0, 2, 0, 0, 0,
+ 17, 0, 0, 2, 0, 2, 0, 2,
0, 0, 2, 0, 0, 2, 0, 0,
2, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0, 0, 8, 2, 0,
- 0, 0, 2, 2, 8, 8, 0, 8,
- 8, 0, 0, 0, 0, 0, 2, 0,
+ 2, 2, 2, 18, 6, 0, 6, 6,
+ 0, 6, 2, 0, 6, 2, 6, 0,
+ 6, 6, 6, 2, 0, 6, 2, 6,
+ 0, 6, 6, 6, 2, 0, 6, 2,
+ 6, 0, 6, 6, 6, 2, 0, 6,
+ 2, 6, 0, 6, 0, 0, 0, 19,
+ 0, 0, 2, 0, 2, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 2,
+ 0, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 20, 21, 2, 2, 0, 0,
+ 0, 0, 2, 2, 2, 2, 2, 2,
+ 0, 2, 2, 0, 2, 2, 2, 0,
+ 2, 2, 2, 2, 0, 2, 2, 2,
+ 0, 2, 2, 2, 2, 0, 2, 2,
+ 2, 0, 2, 2, 2, 2, 0, 2,
+ 2, 2, 0, 2, 0, 0, 0, 22,
+ 0, 0, 2, 0, 2, 0, 2, 0,
+ 0, 2, 0, 0, 2, 0, 0, 2,
+ 0, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 0, 0, 8, 2, 0, 0,
+ 2, 0, 2, 0, 0, 0, 0, 8,
+ 8, 0, 8, 8, 0, 0, 2, 0,
0, 0, 2, 0, 0, 2, 0, 0,
- 2, 0, 0, 0, 2, 22, 0, 0,
- 0, 0, 0, 0, 23, 0, 0
+ 2, 0, 0, 2, 0, 2, 23, 2,
+ 0, 0, 0, 0, 0, 24, 0, 0
};
static const char _indic_syllable_machine_to_state_actions[] = {
@@ -1331,7 +1354,8 @@ static const char _indic_syllable_machine_to_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -1401,7 +1425,8 @@ static const char _indic_syllable_machine_from_state_actions[] = {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 10, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 11, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
@@ -1454,76 +1479,77 @@ static const short _indic_syllable_machine_eof_trans[] = {
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39,
- 77, 77, 77, 83, 83, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 77, 77, 77, 77, 77, 77, 77, 77,
- 83, 77, 77, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 115, 77,
+ 1, 1, 1, 1, 1, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 40, 40, 40, 40, 40, 40,
+ 40, 40, 79, 79, 79, 79, 86, 86,
+ 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 118, 118, 118, 118, 118,
+ 118, 118, 118, 79, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 278, 278, 278, 278, 278,
- 278, 278, 278, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 358, 358, 358, 358, 358, 358, 358, 358,
- 428, 358, 428, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 429, 429, 429, 429, 429, 429,
- 429, 429, 358, 198, 198, 198, 358, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 198, 198, 358, 542, 542,
- 542, 542, 542, 542, 542, 542, 542
+ 1, 186, 0, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 364, 364, 364, 364, 364, 364, 364, 364,
+ 435, 364, 435, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 436, 436, 436, 436, 436, 436,
+ 436, 436, 364, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 364, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 204, 204, 204,
+ 204, 204, 204, 204, 204, 364, 551, 551,
+ 551, 551, 551, 551, 551, 551, 551
};
-static const int indic_syllable_machine_start = 170;
-static const int indic_syllable_machine_first_final = 170;
+static const int indic_syllable_machine_start = 178;
+static const int indic_syllable_machine_first_final = 178;
static const int indic_syllable_machine_error = -1;
-static const int indic_syllable_machine_en_main = 170;
+static const int indic_syllable_machine_en_main = 178;
#line 36 "hb-ot-shape-complex-indic-machine.rl"
@@ -1550,7 +1576,7 @@ find_syllables (hb_buffer_t *buffer)
int cs;
hb_glyph_info_t *info = buffer->info;
-#line 1554 "hb-ot-shape-complex-indic-machine.hh"
+#line 1580 "hb-ot-shape-complex-indic-machine.hh"
{
cs = indic_syllable_machine_start;
ts = 0;
@@ -1567,7 +1593,7 @@ find_syllables (hb_buffer_t *buffer)
unsigned int last = 0;
unsigned int syllable_serial = 1;
-#line 1571 "hb-ot-shape-complex-indic-machine.hh"
+#line 1597 "hb-ot-shape-complex-indic-machine.hh"
{
int _slen;
int _trans;
@@ -1577,11 +1603,11 @@ find_syllables (hb_buffer_t *buffer)
goto _test_eof;
_resume:
switch ( _indic_syllable_machine_from_state_actions[cs] ) {
- case 10:
+ case 11:
#line 1 "NONE"
{ts = p;}
break;
-#line 1585 "hb-ot-shape-complex-indic-machine.hh"
+#line 1611 "hb-ot-shape-complex-indic-machine.hh"
}
_keys = _indic_syllable_machine_trans_keys + (cs<<1);
@@ -1603,51 +1629,51 @@ _eof_trans:
#line 1 "NONE"
{te = p+1;}
break;
- case 14:
+ case 15:
#line 88 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (consonant_syllable); }}
break;
- case 16:
+ case 17:
#line 89 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (vowel_syllable); }}
break;
- case 21:
+ case 22:
#line 90 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (standalone_cluster); }}
break;
- case 23:
+ case 24:
#line 91 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (symbol_cluster); }}
break;
- case 18:
+ case 19:
#line 92 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (broken_cluster); }}
break;
- case 11:
+ case 12:
#line 93 "hb-ot-shape-complex-indic-machine.rl"
{te = p+1;{ found_syllable (non_indic_cluster); }}
break;
- case 13:
+ case 14:
#line 88 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (consonant_syllable); }}
break;
- case 15:
+ case 16:
#line 89 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (vowel_syllable); }}
break;
- case 20:
+ case 21:
#line 90 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (standalone_cluster); }}
break;
- case 22:
+ case 23:
#line 91 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (symbol_cluster); }}
break;
- case 17:
+ case 18:
#line 92 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (broken_cluster); }}
break;
- case 19:
+ case 20:
#line 93 "hb-ot-shape-complex-indic-machine.rl"
{te = p;p--;{ found_syllable (non_indic_cluster); }}
break;
@@ -1663,6 +1689,10 @@ _eof_trans:
#line 90 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
break;
+ case 9:
+#line 91 "hb-ot-shape-complex-indic-machine.rl"
+ {{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
+ break;
case 4:
#line 92 "hb-ot-shape-complex-indic-machine.rl"
{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
@@ -1694,22 +1724,22 @@ _eof_trans:
#line 92 "hb-ot-shape-complex-indic-machine.rl"
{act = 5;}
break;
- case 12:
+ case 13:
#line 1 "NONE"
{te = p+1;}
#line 93 "hb-ot-shape-complex-indic-machine.rl"
{act = 6;}
break;
-#line 1704 "hb-ot-shape-complex-indic-machine.hh"
+#line 1734 "hb-ot-shape-complex-indic-machine.hh"
}
_again:
switch ( _indic_syllable_machine_to_state_actions[cs] ) {
- case 9:
+ case 10:
#line 1 "NONE"
{ts = 0;}
break;
-#line 1713 "hb-ot-shape-complex-indic-machine.hh"
+#line 1743 "hb-ot-shape-complex-indic-machine.hh"
}
if ( ++p != pe )
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc
index f58380e0c8..2e159a12b0 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic-table.cc
@@ -861,41 +861,41 @@ hb_indic_get_categories (hb_codepoint_t u)
switch (u >> 12)
{
case 0x0u:
- if (hb_in_range (u, 0x0028u, 0x0040u)) return indic_table[u - 0x0028u + indic_offset_0x0028u];
- if (hb_in_range (u, 0x00D0u, 0x00D8u)) return indic_table[u - 0x00D0u + indic_offset_0x00d0u];
- if (hb_in_range (u, 0x0900u, 0x0DF8u)) return indic_table[u - 0x0900u + indic_offset_0x0900u];
+ if (hb_in_range (u, 0x0028u, 0x003Fu)) return indic_table[u - 0x0028u + indic_offset_0x0028u];
+ if (hb_in_range (u, 0x00D0u, 0x00D7u)) return indic_table[u - 0x00D0u + indic_offset_0x00d0u];
+ if (hb_in_range (u, 0x0900u, 0x0DF7u)) return indic_table[u - 0x0900u + indic_offset_0x0900u];
if (unlikely (u == 0x00A0u)) return _(CP,x);
break;
case 0x1u:
- if (hb_in_range (u, 0x1000u, 0x10A0u)) return indic_table[u - 0x1000u + indic_offset_0x1000u];
- if (hb_in_range (u, 0x1700u, 0x17F0u)) return indic_table[u - 0x1700u + indic_offset_0x1700u];
- if (hb_in_range (u, 0x1900u, 0x1AA0u)) return indic_table[u - 0x1900u + indic_offset_0x1900u];
- if (hb_in_range (u, 0x1B00u, 0x1C50u)) return indic_table[u - 0x1B00u + indic_offset_0x1b00u];
- if (hb_in_range (u, 0x1CD0u, 0x1CF8u)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u];
+ if (hb_in_range (u, 0x1000u, 0x109Fu)) return indic_table[u - 0x1000u + indic_offset_0x1000u];
+ if (hb_in_range (u, 0x1700u, 0x17EFu)) return indic_table[u - 0x1700u + indic_offset_0x1700u];
+ if (hb_in_range (u, 0x1900u, 0x1A9Fu)) return indic_table[u - 0x1900u + indic_offset_0x1900u];
+ if (hb_in_range (u, 0x1B00u, 0x1C4Fu)) return indic_table[u - 0x1B00u + indic_offset_0x1b00u];
+ if (hb_in_range (u, 0x1CD0u, 0x1CF7u)) return indic_table[u - 0x1CD0u + indic_offset_0x1cd0u];
break;
case 0x2u:
- if (hb_in_range (u, 0x2008u, 0x2018u)) return indic_table[u - 0x2008u + indic_offset_0x2008u];
+ if (hb_in_range (u, 0x2008u, 0x2017u)) return indic_table[u - 0x2008u + indic_offset_0x2008u];
if (unlikely (u == 0x25CCu)) return _(CP,x);
break;
case 0xAu:
- if (hb_in_range (u, 0xA800u, 0xAAF8u)) return indic_table[u - 0xA800u + indic_offset_0xa800u];
- if (hb_in_range (u, 0xABC0u, 0xAC00u)) return indic_table[u - 0xABC0u + indic_offset_0xabc0u];
+ if (hb_in_range (u, 0xA800u, 0xAAF7u)) return indic_table[u - 0xA800u + indic_offset_0xa800u];
+ if (hb_in_range (u, 0xABC0u, 0xABFFu)) return indic_table[u - 0xABC0u + indic_offset_0xabc0u];
break;
case 0x10u:
- if (hb_in_range (u, 0x10A00u, 0x10A48u)) return indic_table[u - 0x10A00u + indic_offset_0x10a00u];
+ if (hb_in_range (u, 0x10A00u, 0x10A47u)) return indic_table[u - 0x10A00u + indic_offset_0x10a00u];
break;
case 0x11u:
- if (hb_in_range (u, 0x11000u, 0x110C0u)) return indic_table[u - 0x11000u + indic_offset_0x11000u];
- if (hb_in_range (u, 0x11100u, 0x11238u)) return indic_table[u - 0x11100u + indic_offset_0x11100u];
- if (hb_in_range (u, 0x112B0u, 0x11378u)) return indic_table[u - 0x112B0u + indic_offset_0x112b0u];
- if (hb_in_range (u, 0x11480u, 0x114E0u)) return indic_table[u - 0x11480u + indic_offset_0x11480u];
- if (hb_in_range (u, 0x11580u, 0x115C8u)) return indic_table[u - 0x11580u + indic_offset_0x11580u];
- if (hb_in_range (u, 0x11600u, 0x116D0u)) return indic_table[u - 0x11600u + indic_offset_0x11600u];
+ if (hb_in_range (u, 0x11000u, 0x110BFu)) return indic_table[u - 0x11000u + indic_offset_0x11000u];
+ if (hb_in_range (u, 0x11100u, 0x11237u)) return indic_table[u - 0x11100u + indic_offset_0x11100u];
+ if (hb_in_range (u, 0x112B0u, 0x11377u)) return indic_table[u - 0x112B0u + indic_offset_0x112b0u];
+ if (hb_in_range (u, 0x11480u, 0x114DFu)) return indic_table[u - 0x11480u + indic_offset_0x11480u];
+ if (hb_in_range (u, 0x11580u, 0x115C7u)) return indic_table[u - 0x11580u + indic_offset_0x11580u];
+ if (hb_in_range (u, 0x11600u, 0x116CFu)) return indic_table[u - 0x11600u + indic_offset_0x11600u];
break;
default:
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic.cc
index 33215a304f..7723600410 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-indic.cc
@@ -921,14 +921,32 @@ initial_reordering_consonant_syllable (const hb_ot_shape_plan_t *plan,
info[start].indic_position() = POS_RA_TO_BECOME_REPH;
/* For old-style Indic script tags, move the first post-base Halant after
- * last consonant. Only do this if there is *not* a Halant after last
- * consonant. Otherwise it becomes messy. */
- if (indic_plan->is_old_spec) {
+ * last consonant.
+ *
+ * Reports suggest that in some scripts Uniscribe does this only if there
+ * is *not* a Halant after last consonant already (eg. Kannada), while it
+ * does it unconditionally in other scripts (eg. Malayalam). We don't
+ * currently know about other scripts, so we single out Malayalam for now.
+ *
+ * Kannada test case:
+ * U+0C9A,U+0CCD,U+0C9A,U+0CCD
+ * With some versions of Lohit Kannada.
+ * https://bugs.freedesktop.org/show_bug.cgi?id=59118
+ *
+ * Malayalam test case:
+ * U+0D38,U+0D4D,U+0D31,U+0D4D,U+0D31,U+0D4D
+ * With lohit-ttf-20121122/Lohit-Malayalam.ttf
+ */
+ if (indic_plan->is_old_spec)
+ {
+ bool disallow_double_halants = buffer->props.script != HB_SCRIPT_MALAYALAM;
for (unsigned int i = base + 1; i < end; i++)
- if (info[i].indic_category() == OT_H) {
+ if (info[i].indic_category() == OT_H)
+ {
unsigned int j;
for (j = end - 1; j > i; j--)
- if (is_consonant (info[j]) || info[j].indic_category() == OT_H)
+ if (is_consonant (info[j]) ||
+ (disallow_double_halants && info[j].indic_category() == OT_H))
break;
if (info[j].indic_category() != OT_H && j > i) {
/* Move Halant to after last consonant. */
@@ -1267,6 +1285,7 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
info.cluster = buffer->cur().cluster;
info.mask = buffer->cur().mask;
info.syllable() = buffer->cur().syllable();
+ /* TODO Set glyph_props? */
/* Insert dottedcircle after possible Repha. */
while (buffer->idx < buffer->len &&
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
index 258ccc470c..d016380cc6 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-myanmar.cc
@@ -536,6 +536,24 @@ final_reordering (const hb_ot_shape_plan_t *plan,
}
+/* Uniscribe seems to have a shaper for 'mymr' that is like the
+ * generic shaper, except that it zeros mark advances GDEF_LATE. */
+const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar_old =
+{
+ "default",
+ NULL, /* collect_features */
+ NULL, /* override_features */
+ NULL, /* data_create */
+ NULL, /* data_destroy */
+ NULL, /* preprocess_text */
+ HB_OT_SHAPE_NORMALIZATION_MODE_DEFAULT,
+ NULL, /* decompose */
+ NULL, /* compose */
+ NULL, /* setup_masks */
+ HB_OT_SHAPE_ZERO_WIDTH_MARKS_BY_GDEF_LATE,
+ true, /* fallback_position */
+};
+
const hb_ot_complex_shaper_t _hb_ot_complex_shaper_myanmar =
{
"myanmar",
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
index 3e581afa9c..e268933ce4 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-complex-private.hh
@@ -56,6 +56,7 @@ enum hb_ot_shape_zero_width_marks_type_t {
HB_COMPLEX_SHAPER_IMPLEMENT (arabic) \
HB_COMPLEX_SHAPER_IMPLEMENT (hangul) \
HB_COMPLEX_SHAPER_IMPLEMENT (hebrew) \
+ HB_COMPLEX_SHAPER_IMPLEMENT (myanmar_old) \
HB_COMPLEX_SHAPER_IMPLEMENT (indic) \
HB_COMPLEX_SHAPER_IMPLEMENT (myanmar) \
HB_COMPLEX_SHAPER_IMPLEMENT (sea) \
@@ -258,6 +259,7 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
/* Unicode-4.1 additions */
case HB_SCRIPT_KHAROSHTHI:
+ case HB_SCRIPT_NEW_TAI_LUE:
case HB_SCRIPT_SYLOTI_NAGRI:
/* Unicode-5.1 additions */
@@ -329,16 +331,15 @@ hb_ot_shape_complex_categorize (const hb_ot_shape_planner_t *planner)
return &_hb_ot_complex_shaper_default;
case HB_SCRIPT_MYANMAR:
- /* For Myanmar, we only want to use the Myanmar shaper if the "new" script
- * tag is found. For "old" script tag we want to use the default shaper. */
if (planner->map.chosen_script[0] == HB_TAG ('m','y','m','2'))
return &_hb_ot_complex_shaper_myanmar;
+ else if (planner->map.chosen_script[0] == HB_TAG ('m','y','m','r'))
+ return &_hb_ot_complex_shaper_myanmar_old;
else
return &_hb_ot_complex_shaper_default;
/* Unicode-4.1 additions */
case HB_SCRIPT_BUGINESE:
- case HB_SCRIPT_NEW_TAI_LUE:
/* Unicode-5.1 additions */
case HB_SCRIPT_CHAM:
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-fallback.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-fallback.cc
index a774f95185..80d7da82f3 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-fallback.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-fallback.cc
@@ -415,6 +415,8 @@ _hb_ot_shape_fallback_position (const hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer)
{
+ _hb_buffer_assert_gsubgpos_vars (buffer);
+
unsigned int start = 0;
unsigned int last_cluster = buffer->info[0].cluster;
unsigned int count = buffer->len;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-normalize.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-normalize.cc
index 2a6a439003..4287253aed 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-normalize.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape-normalize.cc
@@ -289,6 +289,8 @@ _hb_ot_shape_normalize (const hb_ot_shape_plan_t *plan,
hb_buffer_t *buffer,
hb_font_t *font)
{
+ _hb_buffer_assert_unicode_vars (buffer);
+
hb_ot_shape_normalization_mode_t mode = plan->shaper->normalization_preference;
const hb_ot_shape_normalize_context_t c = {
plan,
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc
index 1f99014c62..a0b503ab0f 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-ot-shape.cc
@@ -43,7 +43,6 @@
static hb_tag_t common_features[] = {
HB_TAG('c','c','m','p'),
- HB_TAG('l','i','g','a'),
HB_TAG('l','o','c','l'),
HB_TAG('m','a','r','k'),
HB_TAG('m','k','m','k'),
@@ -56,6 +55,7 @@ static hb_tag_t horizontal_features[] = {
HB_TAG('c','l','i','g'),
HB_TAG('c','u','r','s'),
HB_TAG('k','e','r','n'),
+ HB_TAG('l','i','g','a'),
HB_TAG('r','c','l','t'),
};
@@ -236,6 +236,7 @@ static void
hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
{
if (!(buffer->flags & HB_BUFFER_FLAG_BOT) ||
+ buffer->context_len[0] ||
_hb_glyph_info_get_general_category (&buffer->info[0]) !=
HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK)
return;
@@ -243,7 +244,7 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
if (!font->has_glyph (0x25CCu))
return;
- hb_glyph_info_t dottedcircle;
+ hb_glyph_info_t dottedcircle = {0};
dottedcircle.codepoint = 0x25CCu;
_hb_glyph_info_set_unicode_props (&dottedcircle, buffer->unicode);
@@ -447,6 +448,7 @@ hb_ot_substitute_complex (hb_ot_shape_context_t *c)
{
hb_buffer_t *buffer = c->buffer;
+ _hb_buffer_allocate_gsubgpos_vars (buffer);
hb_ot_layout_substitute_start (c->font, buffer);
if (!hb_ot_layout_has_glyph_classes (c->face))
@@ -635,6 +637,8 @@ hb_ot_position (hb_ot_shape_context_t *c)
if (fallback)
_hb_ot_shape_fallback_kern (c->plan, c->font, c->buffer);
+
+ _hb_buffer_deallocate_gsubgpos_vars (c->buffer);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-private.hh
index 3f70d74c26..45b7712ce8 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-private.hh
@@ -87,17 +87,13 @@
#endif
#ifndef HB_INTERNAL
-# ifndef __MINGW32__
+# if !defined(__MINGW32__) && !defined(__CYGWIN__)
# define HB_INTERNAL __attribute__((__visibility__("hidden")))
# else
# define HB_INTERNAL
# endif
#endif
-#if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER)
-#define snprintf _snprintf
-#endif
-
#ifdef _MSC_VER
#undef inline
#define inline __inline
@@ -116,15 +112,62 @@
#define HB_FUNC __func__
#endif
-// Take from https://github.com/behdad/harfbuzz/commit/26a963b9cb4af3119177f277a2d48a5d537458fb
-#if defined(_WIN32_WCE)
-/* Some things not defined on Windows CE. */
-#define MemoryBarrier()
-#define getenv(Name) NULL
-#define setlocale(Category, Locale) "C"
+#if defined(_WIN32) || defined(__CYGWIN__)
+ /* We need Windows Vista for both Uniscribe backend and for
+ * MemoryBarrier. We don't support compiling on Windows XP,
+ * though we run on it fine. */
+# if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600
+# undef _WIN32_WINNT
+# endif
+# ifndef _WIN32_WINNT
+# define _WIN32_WINNT 0x0600
+# endif
+# ifndef WIN32_LEAN_AND_MEAN
+# define WIN32_LEAN_AND_MEAN 1
+# endif
+# ifndef STRICT
+# define STRICT 1
+# endif
+
+# if defined(_WIN32_WCE)
+ /* Some things not defined on Windows CE. */
+# define getenv(Name) NULL
+# define setlocale(Category, Locale) "C"
static int errno = 0; /* Use something better? */
-#elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
-#define getenv(Name) NULL
+# elif defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_PC_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP)
+# define getenv(Name) NULL
+# endif
+# if (defined(__WIN32__) && !defined(__WINE__)) || defined(_MSC_VER)
+# define snprintf _snprintf
+ /* Windows CE only has _strdup, while rest of Windows has both. */
+# define strdup _strdup
+# endif
+#endif
+
+#if HAVE_ATEXIT
+/* atexit() is only safe to be called from shared libraries on certain
+ * platforms. Whitelist.
+ * https://bugs.freedesktop.org/show_bug.cgi?id=82246 */
+# if defined(__linux) && defined(__GLIBC_PREREQ)
+# if __GLIBC_PREREQ(2,3)
+/* From atexit() manpage, it's safe with glibc 2.2.3 on Linux. */
+# define HB_USE_ATEXIT 1
+# endif
+# elif defined(_MSC_VER) || defined(__MINGW32__)
+/* For MSVC:
+ * http://msdn.microsoft.com/en-ca/library/tze57ck3.aspx
+ * http://msdn.microsoft.com/en-ca/library/zk17ww08.aspx
+ * mingw32 headers say atexit is safe to use in shared libraries.
+ */
+# define HB_USE_ATEXIT 1
+# elif defined(__ANDROID__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+/* This was fixed in Android NKD r8 or r8b:
+ * https://code.google.com/p/android/issues/detail?id=6455
+ * which introduced GCC 4.6:
+ * https://developer.android.com/tools/sdk/ndk/index.html
+ */
+# define HB_USE_ATEXIT 1
+# endif
#endif
/* Basics */
@@ -280,7 +323,7 @@ typedef int (*hb_compare_func_t) (const void *, const void *);
/* arrays and maps */
-#define HB_PREALLOCED_ARRAY_INIT {0}
+#define HB_PREALLOCED_ARRAY_INIT {0, 0, NULL}
template <typename Type, unsigned int StaticSize=16>
struct hb_prealloced_array_t
{
@@ -496,47 +539,6 @@ struct hb_lockable_set_t
};
-
-
-/* Big-endian handling */
-
-static inline uint16_t hb_be_uint16 (const uint16_t v)
-{
- const uint8_t *V = (const uint8_t *) &v;
- return (V[0] << 8) | V[1];
-}
-
-static inline uint16_t hb_uint16_swap (const uint16_t v)
-{
- return (v >> 8) | (v << 8);
-}
-
-static inline uint32_t hb_uint32_swap (const uint32_t v)
-{
- return (hb_uint16_swap (v) << 16) | hb_uint16_swap (v >> 16);
-}
-
-/* Note, of the following macros, uint16_get is the one called many many times.
- * If there is any optimizations to be done, it's in that macro. However, I
- * already confirmed that on my T400 ThinkPad at least, using bswap_16(), which
- * results in a single ror instruction, does NOT speed this up. In fact, it
- * resulted in a minor slowdown. At any rate, note that v may not be correctly
- * aligned, so I think the current implementation is optimal.
- */
-
-#define hb_be_uint16_put(v,V) HB_STMT_START { v[0] = (V>>8); v[1] = (V); } HB_STMT_END
-#define hb_be_uint16_get(v) (uint16_t) ((v[0] << 8) + v[1])
-#define hb_be_uint16_eq(a,b) (a[0] == b[0] && a[1] == b[1])
-
-#define hb_be_uint32_put(v,V) HB_STMT_START { v[0] = (V>>24); v[1] = (V>>16); v[2] = (V>>8); v[3] = (V); } HB_STMT_END
-#define hb_be_uint32_get(v) (uint32_t) ((v[0] << 24) + (v[1] << 16) + (v[2] << 8) + v[3])
-#define hb_be_uint32_eq(a,b) (a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && a[3] == b[3])
-
-#define hb_be_uint24_put(v,V) HB_STMT_START { v[0] = (V>>16); v[1] = (V>>8); v[2] = (V); } HB_STMT_END
-#define hb_be_uint24_get(v) (uint32_t) ((v[0] << 16) + (v[1] << 8) + v[2])
-#define hb_be_uint24_eq(a,b) (a[0] == b[0] && a[1] == b[1] && a[2] == b[2])
-
-
/* ASCII tag/character handling */
static inline bool ISALPHA (unsigned char c)
@@ -589,6 +591,15 @@ _hb_debug_msg_va (const char *what,
unsigned int level,
int level_dir,
const char *message,
+ va_list ap) HB_PRINTF_FUNC(7, 0);
+template <int max_level> static inline void
+_hb_debug_msg_va (const char *what,
+ const void *obj,
+ const char *func,
+ bool indented,
+ unsigned int level,
+ int level_dir,
+ const char *message,
va_list ap)
{
if (!_hb_debug (level, max_level))
@@ -704,7 +715,9 @@ _hb_debug_msg<0> (const char *what HB_UNUSED,
*/
template <typename T>
-struct hb_printer_t {};
+struct hb_printer_t {
+ const char *print (const T&) { return "something"; }
+};
template <>
struct hb_printer_t<bool> {
@@ -811,7 +824,9 @@ hb_in_range (T u, T lo, T hi)
* to generate a warning than unused variables. */
ASSERT_STATIC (sizeof (hb_assert_unsigned_t<T>) >= 0);
- return (u - lo) <= (hi - lo);
+ /* The casts below are important as if T is smaller than int,
+ * the subtract results will become a signed int! */
+ return (T)(u - lo) <= (T)(hi - lo);
}
template <typename T> static inline bool
@@ -835,7 +850,7 @@ hb_in_ranges (T u, T lo1, T hi1, T lo2, T hi2, T lo3, T hi3)
#define FLAG_RANGE(x,y) (ASSERT_STATIC_EXPR_ZERO ((x) < (y)) + FLAG(y+1) - FLAG(x))
-template <typename T, typename T2> inline void
+template <typename T, typename T2> static inline void
hb_bubble_sort (T *array, unsigned int len, int(*compar)(const T *, const T *), T2 *array2)
{
if (unlikely (!len))
@@ -868,7 +883,7 @@ hb_bubble_sort (T *array, unsigned int len, int(*compar)(const T *, const T *),
} while (k);
}
-template <typename T> inline void
+template <typename T> static inline void
hb_bubble_sort (T *array, unsigned int len, int(*compar)(const T *, const T *))
{
hb_bubble_sort (array, len, compar, (int *) NULL);
@@ -897,12 +912,12 @@ hb_codepoint_parse (const char *s, unsigned int len, int base, hb_codepoint_t *o
struct hb_options_t
{
- int initialized : 1;
- int uniscribe_bug_compatible : 1;
+ unsigned int initialized : 1;
+ unsigned int uniscribe_bug_compatible : 1;
};
union hb_options_union_t {
- int i;
+ unsigned int i;
hb_options_t opts;
};
ASSERT_STATIC (sizeof (int) == sizeof (hb_options_union_t));
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-set-private.hh b/src/3rdparty/harfbuzz-ng/src/hb-set-private.hh
index 705f554ce6..59e8f4559f 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-set-private.hh
+++ b/src/3rdparty/harfbuzz-ng/src/hb-set-private.hh
@@ -150,7 +150,7 @@ struct hb_set_t
bool in_error;
inline void init (void) {
- header.init ();
+ hb_object_init (this);
clear ();
}
inline void fini (void) {
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc b/src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc
index 5ffc6b1362..2166173f9e 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-shape-plan.cc
@@ -29,6 +29,12 @@
#include "hb-font-private.hh"
#include "hb-buffer-private.hh"
+
+#ifndef HB_DEBUG_SHAPE_PLAN
+#define HB_DEBUG_SHAPE_PLAN (HB_DEBUG+0)
+#endif
+
+
#define HB_SHAPER_IMPLEMENT(shaper) \
HB_SHAPER_DATA_ENSURE_DECLARE(shaper, face) \
HB_SHAPER_DATA_ENSURE_DECLARE(shaper, font)
@@ -42,6 +48,11 @@ hb_shape_plan_plan (hb_shape_plan_t *shape_plan,
unsigned int num_user_features,
const char * const *shaper_list)
{
+ DEBUG_MSG_FUNC (SHAPE_PLAN, shape_plan,
+ "num_features=%d shaper_list=%p",
+ num_user_features,
+ shaper_list);
+
const hb_shaper_pair_t *shapers = _hb_shapers_get ();
#define HB_SHAPER_PLAN(shaper) \
@@ -104,6 +115,12 @@ hb_shape_plan_create (hb_face_t *face,
unsigned int num_user_features,
const char * const *shaper_list)
{
+ DEBUG_MSG_FUNC (SHAPE_PLAN, NULL,
+ "face=%p num_features=%d shaper_list=%p",
+ face,
+ num_user_features,
+ shaper_list);
+
hb_shape_plan_t *shape_plan;
hb_feature_t *features = NULL;
@@ -271,6 +288,11 @@ hb_shape_plan_execute (hb_shape_plan_t *shape_plan,
const hb_feature_t *features,
unsigned int num_features)
{
+ DEBUG_MSG_FUNC (SHAPE_PLAN, shape_plan,
+ "num_features=%d shaper_func=%p",
+ num_features,
+ shape_plan->shaper_func);
+
if (unlikely (hb_object_is_inert (shape_plan) ||
hb_object_is_inert (font) ||
hb_object_is_inert (buffer)))
@@ -383,6 +405,12 @@ hb_shape_plan_create_cached (hb_face_t *face,
unsigned int num_user_features,
const char * const *shaper_list)
{
+ DEBUG_MSG_FUNC (SHAPE_PLAN, NULL,
+ "face=%p num_features=%d shaper_list=%p",
+ face,
+ num_user_features,
+ shaper_list);
+
hb_shape_plan_proposal_t proposal = {
*props,
shaper_list,
@@ -392,25 +420,22 @@ hb_shape_plan_create_cached (hb_face_t *face,
};
if (shaper_list) {
- /* Choose shaper. Adapted from hb_shape_plan_plan(). */
-#define HB_SHAPER_PLAN(shaper) \
- HB_STMT_START { \
- if (hb_##shaper##_shaper_face_data_ensure (face)) \
- proposal.shaper_func = _hb_##shaper##_shape; \
- } HB_STMT_END
-
+ /* Choose shaper. Adapted from hb_shape_plan_plan().
+ * Must choose shaper exactly the same way as that function. */
for (const char * const *shaper_item = shaper_list; *shaper_item; shaper_item++)
if (0)
;
#define HB_SHAPER_IMPLEMENT(shaper) \
- else if (0 == strcmp (*shaper_item, #shaper)) \
- HB_SHAPER_PLAN (shaper);
+ else if (0 == strcmp (*shaper_item, #shaper) && \
+ hb_##shaper##_shaper_face_data_ensure (face)) \
+ { \
+ proposal.shaper_func = _hb_##shaper##_shape; \
+ break; \
+ }
#include "hb-shaper-list.hh"
#undef HB_SHAPER_IMPLEMENT
-#undef HB_SHAPER_PLAN
-
- if (unlikely (!proposal.shaper_list))
+ if (unlikely (!proposal.shaper_func))
return hb_shape_plan_get_empty ();
}
@@ -419,7 +444,10 @@ retry:
hb_face_t::plan_node_t *cached_plan_nodes = (hb_face_t::plan_node_t *) hb_atomic_ptr_get (&face->shape_plans);
for (hb_face_t::plan_node_t *node = cached_plan_nodes; node; node = node->next)
if (hb_shape_plan_matches (node->shape_plan, &proposal))
+ {
+ DEBUG_MSG_FUNC (SHAPE_PLAN, node->shape_plan, "fulfilled from cache");
return hb_shape_plan_reference (node->shape_plan);
+ }
/* Not found. */
@@ -442,6 +470,7 @@ retry:
free (node);
goto retry;
}
+ DEBUG_MSG_FUNC (SHAPE_PLAN, shape_plan, "inserted into cache");
return hb_shape_plan_reference (shape_plan);
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-shape.cc b/src/3rdparty/harfbuzz-ng/src/hb-shape.cc
index c1b752405e..9a59c08556 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-shape.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-shape.cc
@@ -34,15 +34,15 @@
#include "hb-font-private.hh"
-static void
+static bool
parse_space (const char **pp, const char *end)
{
- char c;
- while (*pp < end && (c = **pp, ISSPACE (c)))
+ while (*pp < end && ISSPACE (**pp))
(*pp)++;
+ return true;
}
-static hb_bool_t
+static bool
parse_char (const char **pp, const char *end, char c)
{
parse_space (pp, end);
@@ -54,7 +54,7 @@ parse_char (const char **pp, const char *end, char c)
return true;
}
-static hb_bool_t
+static bool
parse_uint (const char **pp, const char *end, unsigned int *pv)
{
char buf[32];
@@ -78,7 +78,27 @@ parse_uint (const char **pp, const char *end, unsigned int *pv)
return true;
}
-static hb_bool_t
+static bool
+parse_bool (const char **pp, const char *end, unsigned int *pv)
+{
+ parse_space (pp, end);
+
+ const char *p = *pp;
+ while (*pp < end && ISALPHA(**pp))
+ (*pp)++;
+
+ /* CSS allows on/off as aliases 1/0. */
+ if (*pp - p == 2 || 0 == strncmp (p, "on", 2))
+ *pv = 1;
+ else if (*pp - p == 3 || 0 == strncmp (p, "off", 2))
+ *pv = 0;
+ else
+ return false;
+
+ return true;
+}
+
+static bool
parse_feature_value_prefix (const char **pp, const char *end, hb_feature_t *feature)
{
if (parse_char (pp, end, '-'))
@@ -91,32 +111,48 @@ parse_feature_value_prefix (const char **pp, const char *end, hb_feature_t *feat
return true;
}
-static hb_bool_t
+static bool
parse_feature_tag (const char **pp, const char *end, hb_feature_t *feature)
{
- const char *p = *pp;
- char c;
-
parse_space (pp, end);
-#define ISALNUM(c) (('a' <= (c) && (c) <= 'z') || ('A' <= (c) && (c) <= 'Z') || ('0' <= (c) && (c) <= '9'))
- while (*pp < end && (c = **pp, ISALNUM(c)))
+ char quote = 0;
+
+ if (*pp < end && (**pp == '\'' || **pp == '"'))
+ {
+ quote = **pp;
+ (*pp)++;
+ }
+
+ const char *p = *pp;
+ while (*pp < end && ISALNUM(**pp))
(*pp)++;
-#undef ISALNUM
- if (p == *pp)
+ if (p == *pp || *pp - p > 4)
return false;
feature->tag = hb_tag_from_string (p, *pp - p);
+
+ if (quote)
+ {
+ /* CSS expects exactly four bytes. And we only allow quotations for
+ * CSS compatibility. So, enforce the length. */
+ if (*pp - p != 4)
+ return false;
+ if (*pp == end || **pp != quote)
+ return false;
+ (*pp)++;
+ }
+
return true;
}
-static hb_bool_t
+static bool
parse_feature_indices (const char **pp, const char *end, hb_feature_t *feature)
{
parse_space (pp, end);
- hb_bool_t has_start;
+ bool has_start;
feature->start = 0;
feature->end = (unsigned int) -1;
@@ -136,20 +172,27 @@ parse_feature_indices (const char **pp, const char *end, hb_feature_t *feature)
return parse_char (pp, end, ']');
}
-static hb_bool_t
+static bool
parse_feature_value_postfix (const char **pp, const char *end, hb_feature_t *feature)
{
- return !parse_char (pp, end, '=') || parse_uint (pp, end, &feature->value);
+ bool had_equal = parse_char (pp, end, '=');
+ bool had_value = parse_uint (pp, end, &feature->value) ||
+ parse_bool (pp, end, &feature->value);
+ /* CSS doesn't use equal-sign between tag and value.
+ * If there was an equal-sign, then there *must* be a value.
+ * A value without an eqaul-sign is ok, but not required. */
+ return !had_equal || had_value;
}
-static hb_bool_t
+static bool
parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
{
return parse_feature_value_prefix (pp, end, feature) &&
parse_feature_tag (pp, end, feature) &&
parse_feature_indices (pp, end, feature) &&
parse_feature_value_postfix (pp, end, feature) &&
+ parse_space (pp, end) &&
*pp == end;
}
@@ -157,7 +200,7 @@ parse_one_feature (const char **pp, const char *end, hb_feature_t *feature)
* hb_feature_from_string:
* @str: (array length=len):
* @len:
- * @feature: (out):
+ * @feature: (out) (optional):
*
*
*
@@ -169,10 +212,21 @@ hb_bool_t
hb_feature_from_string (const char *str, int len,
hb_feature_t *feature)
{
+ hb_feature_t feat;
+
if (len < 0)
len = strlen (str);
- return parse_one_feature (&str, str + len, feature);
+ if (likely (parse_one_feature (&str, str + len, &feat)))
+ {
+ if (feature)
+ *feature = feat;
+ return true;
+ }
+
+ if (feature)
+ memset (feature, 0, sizeof (*feature));
+ return false;
}
/**
@@ -203,18 +257,18 @@ hb_feature_to_string (hb_feature_t *feature,
{
s[len++] = '[';
if (feature->start)
- len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->start));
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->start));
if (feature->end != feature->start + 1) {
s[len++] = ':';
if (feature->end != (unsigned int) -1)
- len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->end));
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->end));
}
s[len++] = ']';
}
if (feature->value > 1)
{
s[len++] = '=';
- len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%d", feature->value));
+ len += MAX (0, snprintf (s + len, ARRAY_LENGTH (s) - len, "%u", feature->value));
}
assert (len < ARRAY_LENGTH (s));
len = MIN (len, size - 1);
@@ -225,11 +279,13 @@ hb_feature_to_string (hb_feature_t *feature,
static const char **static_shaper_list;
-static inline
+#ifdef HB_USE_ATEXIT
+static
void free_static_shaper_list (void)
{
free (static_shaper_list);
}
+#endif
/**
* hb_shape_list_shapers:
@@ -266,7 +322,7 @@ retry:
goto retry;
}
-#ifdef HAVE_ATEXIT
+#ifdef HB_USE_ATEXIT
atexit (free_static_shaper_list); /* First person registers atexit() callback. */
#endif
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-shaper.cc b/src/3rdparty/harfbuzz-ng/src/hb-shaper.cc
index 44f718aa70..580b95c84b 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-shaper.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-shaper.cc
@@ -40,12 +40,14 @@ static const hb_shaper_pair_t all_shapers[] = {
static const hb_shaper_pair_t *static_shapers;
-static inline
+#ifdef HB_USE_ATEXIT
+static
void free_static_shapers (void)
{
if (unlikely (static_shapers != all_shapers))
free ((void *) static_shapers);
}
+#endif
const hb_shaper_pair_t *
_hb_shapers_get (void)
@@ -100,7 +102,7 @@ retry:
goto retry;
}
-#ifdef HAVE_ATEXIT
+#ifdef HB_USE_ATEXIT
atexit (free_static_shapers); /* First person registers atexit() callback. */
#endif
}
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-unicode.cc b/src/3rdparty/harfbuzz-ng/src/hb-unicode.cc
index 84e5c06fd3..fc19006d3e 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-unicode.cc
+++ b/src/3rdparty/harfbuzz-ng/src/hb-unicode.cc
@@ -157,7 +157,7 @@ hb_unicode_funcs_get_default (void)
/**
* hb_unicode_funcs_create: (Xconstructor)
- * @parent: (allow-none):
+ * @parent: (nullable):
*
*
*
@@ -310,7 +310,7 @@ hb_unicode_funcs_get_user_data (hb_unicode_funcs_t *ufuncs,
void
hb_unicode_funcs_make_immutable (hb_unicode_funcs_t *ufuncs)
{
- if (hb_object_is_inert (ufuncs))
+ if (unlikely (hb_object_is_inert (ufuncs)))
return;
ufuncs->immutable = true;
diff --git a/src/3rdparty/harfbuzz-ng/src/hb-version.h b/src/3rdparty/harfbuzz-ng/src/hb-version.h
index 517cc8f26e..b9f8a057c9 100644
--- a/src/3rdparty/harfbuzz-ng/src/hb-version.h
+++ b/src/3rdparty/harfbuzz-ng/src/hb-version.h
@@ -38,9 +38,9 @@ HB_BEGIN_DECLS
#define HB_VERSION_MAJOR 0
#define HB_VERSION_MINOR 9
-#define HB_VERSION_MICRO 32
+#define HB_VERSION_MICRO 38
-#define HB_VERSION_STRING "0.9.32"
+#define HB_VERSION_STRING "0.9.38"
#define HB_VERSION_ATLEAST(major,minor,micro) \
((major)*10000+(minor)*100+(micro) <= \
diff --git a/src/3rdparty/iaccessible2/generated/amd64/Accessible2.h b/src/3rdparty/iaccessible2/generated/amd64/Accessible2.h
deleted file mode 100644
index 3973db319e..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/Accessible2.h
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __Accessible2_h__
-#define __Accessible2_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessible2_FWD_DEFINED__
-#define __IAccessible2_FWD_DEFINED__
-typedef interface IAccessible2 IAccessible2;
-#endif /* __IAccessible2_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleRelation.h"
-#include "AccessibleStates.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_Accessible2_0000_0000 */
-/* [local] */
-
-typedef struct IA2Locale
- {
- BSTR language;
- BSTR country;
- BSTR variant;
- } IA2Locale;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_Accessible2_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_Accessible2_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessible2_INTERFACE_DEFINED__
-#define __IAccessible2_INTERFACE_DEFINED__
-
-/* interface IAccessible2 */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessible2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("E89F726E-C4F4-4c19-BB19-B647D7FA8478")
- IAccessible2 : public IAccessible
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRelations(
- /* [retval][out] */ long *nRelations) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relation(
- /* [in] */ long relationIndex,
- /* [retval][out] */ IAccessibleRelation **relation) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relations(
- /* [in] */ long maxRelations,
- /* [length_is][size_is][out] */ IAccessibleRelation **relations,
- /* [retval][out] */ long *nRelations) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE role(
- /* [retval][out] */ long *role) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollTo(
- /* [in] */ enum IA2ScrollType scrollType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollToPoint(
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_groupPosition(
- /* [out] */ long *groupLevel,
- /* [out] */ long *similarItemsInGroup,
- /* [retval][out] */ long *positionInGroup) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_states(
- /* [retval][out] */ AccessibleStates *states) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedRole(
- /* [retval][out] */ BSTR *extendedRole) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedRole(
- /* [retval][out] */ BSTR *localizedExtendedRole) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nExtendedStates(
- /* [retval][out] */ long *nExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedStates(
- /* [in] */ long maxExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
- /* [retval][out] */ long *nExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedStates(
- /* [in] */ long maxLocalizedExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
- /* [retval][out] */ long *nLocalizedExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_uniqueID(
- /* [retval][out] */ long *uniqueID) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_windowHandle(
- /* [retval][out] */ HWND *windowHandle) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_indexInParent(
- /* [retval][out] */ long *indexInParent) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locale(
- /* [retval][out] */ IA2Locale *locale) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
- /* [retval][out] */ BSTR *attributes) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessible2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessible2 * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessible2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessible2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
- IAccessible2 * This,
- /* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
- IAccessible2 * This,
- /* [in] */ UINT iTInfo,
- /* [in] */ LCID lcid,
- /* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
- IAccessible2 * This,
- /* [in] */ REFIID riid,
- /* [size_is][in] */ LPOLESTR *rgszNames,
- /* [range][in] */ UINT cNames,
- /* [in] */ LCID lcid,
- /* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
- IAccessible2 * This,
- /* [in] */ DISPID dispIdMember,
- /* [in] */ REFIID riid,
- /* [in] */ LCID lcid,
- /* [in] */ WORD wFlags,
- /* [out][in] */ DISPPARAMS *pDispParams,
- /* [out] */ VARIANT *pVarResult,
- /* [out] */ EXCEPINFO *pExcepInfo,
- /* [out] */ UINT *puArgErr);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
- IAccessible2 * This,
- /* [retval][out] */ IDispatch **ppdispParent);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
- IAccessible2 * This,
- /* [retval][out] */ long *pcountChildren);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
- IAccessible2 * This,
- /* [in] */ VARIANT varChild,
- /* [retval][out] */ IDispatch **ppdispChild);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszName);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszValue);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszDescription);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ VARIANT *pvarRole);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ VARIANT *pvarState);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszHelp);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
- IAccessible2 * This,
- /* [out] */ BSTR *pszHelpFile,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ long *pidTopic);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszKeyboardShortcut);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
- IAccessible2 * This,
- /* [retval][out] */ VARIANT *pvarChild);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
- IAccessible2 * This,
- /* [retval][out] */ VARIANT *pvarChildren);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszDefaultAction);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
- IAccessible2 * This,
- /* [in] */ long flagsSelect,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
- IAccessible2 * This,
- /* [out] */ long *pxLeft,
- /* [out] */ long *pyTop,
- /* [out] */ long *pcxWidth,
- /* [out] */ long *pcyHeight,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
- IAccessible2 * This,
- /* [in] */ long navDir,
- /* [optional][in] */ VARIANT varStart,
- /* [retval][out] */ VARIANT *pvarEndUpAt);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
- IAccessible2 * This,
- /* [in] */ long xLeft,
- /* [in] */ long yTop,
- /* [retval][out] */ VARIANT *pvarChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [in] */ BSTR szName);
-
- /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [in] */ BSTR szValue);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
- IAccessible2 * This,
- /* [retval][out] */ long *nRelations);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
- IAccessible2 * This,
- /* [in] */ long relationIndex,
- /* [retval][out] */ IAccessibleRelation **relation);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
- IAccessible2 * This,
- /* [in] */ long maxRelations,
- /* [length_is][size_is][out] */ IAccessibleRelation **relations,
- /* [retval][out] */ long *nRelations);
-
- HRESULT ( STDMETHODCALLTYPE *role )(
- IAccessible2 * This,
- /* [retval][out] */ long *role);
-
- HRESULT ( STDMETHODCALLTYPE *scrollTo )(
- IAccessible2 * This,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
- IAccessible2 * This,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
- IAccessible2 * This,
- /* [out] */ long *groupLevel,
- /* [out] */ long *similarItemsInGroup,
- /* [retval][out] */ long *positionInGroup);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
- IAccessible2 * This,
- /* [retval][out] */ AccessibleStates *states);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *extendedRole);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *localizedExtendedRole);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
- IAccessible2 * This,
- /* [retval][out] */ long *nExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
- IAccessible2 * This,
- /* [in] */ long maxExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
- /* [retval][out] */ long *nExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
- IAccessible2 * This,
- /* [in] */ long maxLocalizedExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
- /* [retval][out] */ long *nLocalizedExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
- IAccessible2 * This,
- /* [retval][out] */ long *uniqueID);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
- IAccessible2 * This,
- /* [retval][out] */ HWND *windowHandle);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
- IAccessible2 * This,
- /* [retval][out] */ long *indexInParent);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
- IAccessible2 * This,
- /* [retval][out] */ IA2Locale *locale);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *attributes);
-
- END_INTERFACE
- } IAccessible2Vtbl;
-
- interface IAccessible2
- {
- CONST_VTBL struct IAccessible2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessible2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessible2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessible2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessible2_GetTypeInfoCount(This,pctinfo) \
- ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
-
-#define IAccessible2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
- ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
-
-#define IAccessible2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
- ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
-
-#define IAccessible2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
- ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
-
-
-#define IAccessible2_get_accParent(This,ppdispParent) \
- ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
-
-#define IAccessible2_get_accChildCount(This,pcountChildren) \
- ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
-
-#define IAccessible2_get_accChild(This,varChild,ppdispChild) \
- ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
-
-#define IAccessible2_get_accName(This,varChild,pszName) \
- ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
-
-#define IAccessible2_get_accValue(This,varChild,pszValue) \
- ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
-
-#define IAccessible2_get_accDescription(This,varChild,pszDescription) \
- ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
-
-#define IAccessible2_get_accRole(This,varChild,pvarRole) \
- ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
-
-#define IAccessible2_get_accState(This,varChild,pvarState) \
- ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
-
-#define IAccessible2_get_accHelp(This,varChild,pszHelp) \
- ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
-
-#define IAccessible2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
- ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
-
-#define IAccessible2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
- ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
-
-#define IAccessible2_get_accFocus(This,pvarChild) \
- ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
-
-#define IAccessible2_get_accSelection(This,pvarChildren) \
- ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
-
-#define IAccessible2_get_accDefaultAction(This,varChild,pszDefaultAction) \
- ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
-
-#define IAccessible2_accSelect(This,flagsSelect,varChild) \
- ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
-
-#define IAccessible2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
- ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
-
-#define IAccessible2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
- ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
-
-#define IAccessible2_accHitTest(This,xLeft,yTop,pvarChild) \
- ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
-
-#define IAccessible2_accDoDefaultAction(This,varChild) \
- ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
-
-#define IAccessible2_put_accName(This,varChild,szName) \
- ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
-
-#define IAccessible2_put_accValue(This,varChild,szValue) \
- ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
-
-
-#define IAccessible2_get_nRelations(This,nRelations) \
- ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
-
-#define IAccessible2_get_relation(This,relationIndex,relation) \
- ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
-
-#define IAccessible2_get_relations(This,maxRelations,relations,nRelations) \
- ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
-
-#define IAccessible2_role(This,role) \
- ( (This)->lpVtbl -> role(This,role) )
-
-#define IAccessible2_scrollTo(This,scrollType) \
- ( (This)->lpVtbl -> scrollTo(This,scrollType) )
-
-#define IAccessible2_scrollToPoint(This,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
-
-#define IAccessible2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
- ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
-
-#define IAccessible2_get_states(This,states) \
- ( (This)->lpVtbl -> get_states(This,states) )
-
-#define IAccessible2_get_extendedRole(This,extendedRole) \
- ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
-
-#define IAccessible2_get_localizedExtendedRole(This,localizedExtendedRole) \
- ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
-
-#define IAccessible2_get_nExtendedStates(This,nExtendedStates) \
- ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
-
-#define IAccessible2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
- ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
-
-#define IAccessible2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
- ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
-
-#define IAccessible2_get_uniqueID(This,uniqueID) \
- ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
-
-#define IAccessible2_get_windowHandle(This,windowHandle) \
- ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
-
-#define IAccessible2_get_indexInParent(This,indexInParent) \
- ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
-
-#define IAccessible2_get_locale(This,locale) \
- ( (This)->lpVtbl -> get_locale(This,locale) )
-
-#define IAccessible2_get_attributes(This,attributes) \
- ( (This)->lpVtbl -> get_attributes(This,attributes) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessible2_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-unsigned long __RPC_USER HWND_UserSize( unsigned long *, unsigned long , HWND * );
-unsigned char * __RPC_USER HWND_UserMarshal( unsigned long *, unsigned char *, HWND * );
-unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * );
-void __RPC_USER HWND_UserFree( unsigned long *, HWND * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/Accessible2_i.c b/src/3rdparty/iaccessible2/generated/amd64/Accessible2_i.c
deleted file mode 100644
index 480a2a7537..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/Accessible2_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessible2,0xE89F726E,0xC4F4,0x4c19,0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/Accessible2_p.c b/src/3rdparty/iaccessible2/generated/amd64/Accessible2_p.c
deleted file mode 100644
index 281718a7e5..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/Accessible2_p.c
+++ /dev/null
@@ -1,1196 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "Accessible2.h"
-
-#define TYPE_FORMAT_STRING_SIZE 189
-#define PROC_FORMAT_STRING_SIZE 751
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 2
-
-typedef struct _Accessible2_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _Accessible2_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _Accessible2_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const Accessible2_MIDL_TYPE_FORMAT_STRING Accessible2__MIDL_TypeFormatString;
-extern const Accessible2_MIDL_PROC_FORMAT_STRING Accessible2__MIDL_ProcFormatString;
-extern const Accessible2_MIDL_EXPR_FORMAT_STRING Accessible2__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessible2_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessible2_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const Accessible2_MIDL_PROC_FORMAT_STRING Accessible2__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_nRelations */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x1c ), /* 28 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nRelations */
-
-/* 26 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_relation */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x1d ), /* 29 */
-/* 46 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 54 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter relationIndex */
-
-/* 64 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter relation */
-
-/* 70 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Return value */
-
-/* 76 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 78 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_relations */
-
-/* 82 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 84 */ NdrFcLong( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x1e ), /* 30 */
-/* 90 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 92 */ NdrFcShort( 0x8 ), /* 8 */
-/* 94 */ NdrFcShort( 0x24 ), /* 36 */
-/* 96 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 98 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 100 */ NdrFcShort( 0x1 ), /* 1 */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxRelations */
-
-/* 108 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 110 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter relations */
-
-/* 114 */ NdrFcShort( 0x113 ), /* Flags: must size, must free, out, simple ref, */
-/* 116 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 118 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Parameter nRelations */
-
-/* 120 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 122 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure role */
-
-/* 132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x1f ), /* 31 */
-/* 140 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 142 */ NdrFcShort( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x24 ), /* 36 */
-/* 146 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 148 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 150 */ NdrFcShort( 0x0 ), /* 0 */
-/* 152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 154 */ NdrFcShort( 0x0 ), /* 0 */
-/* 156 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter role */
-
-/* 158 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 160 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 164 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 166 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollTo */
-
-/* 170 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 172 */ NdrFcLong( 0x0 ), /* 0 */
-/* 176 */ NdrFcShort( 0x20 ), /* 32 */
-/* 178 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 180 */ NdrFcShort( 0x6 ), /* 6 */
-/* 182 */ NdrFcShort( 0x8 ), /* 8 */
-/* 184 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 186 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 188 */ NdrFcShort( 0x0 ), /* 0 */
-/* 190 */ NdrFcShort( 0x0 ), /* 0 */
-/* 192 */ NdrFcShort( 0x0 ), /* 0 */
-/* 194 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter scrollType */
-
-/* 196 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 198 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 200 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 202 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 204 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollToPoint */
-
-/* 208 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 210 */ NdrFcLong( 0x0 ), /* 0 */
-/* 214 */ NdrFcShort( 0x21 ), /* 33 */
-/* 216 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 218 */ NdrFcShort( 0x16 ), /* 22 */
-/* 220 */ NdrFcShort( 0x8 ), /* 8 */
-/* 222 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 224 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 226 */ NdrFcShort( 0x0 ), /* 0 */
-/* 228 */ NdrFcShort( 0x0 ), /* 0 */
-/* 230 */ NdrFcShort( 0x0 ), /* 0 */
-/* 232 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter coordinateType */
-
-/* 234 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 236 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 238 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 240 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 242 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 244 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 246 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 248 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 250 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 252 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 254 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 256 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_groupPosition */
-
-/* 258 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 260 */ NdrFcLong( 0x0 ), /* 0 */
-/* 264 */ NdrFcShort( 0x22 ), /* 34 */
-/* 266 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 268 */ NdrFcShort( 0x0 ), /* 0 */
-/* 270 */ NdrFcShort( 0x5c ), /* 92 */
-/* 272 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 274 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 276 */ NdrFcShort( 0x0 ), /* 0 */
-/* 278 */ NdrFcShort( 0x0 ), /* 0 */
-/* 280 */ NdrFcShort( 0x0 ), /* 0 */
-/* 282 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter groupLevel */
-
-/* 284 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 286 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 288 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter similarItemsInGroup */
-
-/* 290 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 292 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 294 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter positionInGroup */
-
-/* 296 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 298 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 300 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 302 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 304 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 306 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_states */
-
-/* 308 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 310 */ NdrFcLong( 0x0 ), /* 0 */
-/* 314 */ NdrFcShort( 0x23 ), /* 35 */
-/* 316 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 318 */ NdrFcShort( 0x0 ), /* 0 */
-/* 320 */ NdrFcShort( 0x24 ), /* 36 */
-/* 322 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 324 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 326 */ NdrFcShort( 0x0 ), /* 0 */
-/* 328 */ NdrFcShort( 0x0 ), /* 0 */
-/* 330 */ NdrFcShort( 0x0 ), /* 0 */
-/* 332 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter states */
-
-/* 334 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 336 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 338 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 340 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 342 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 344 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_extendedRole */
-
-/* 346 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 348 */ NdrFcLong( 0x0 ), /* 0 */
-/* 352 */ NdrFcShort( 0x24 ), /* 36 */
-/* 354 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 356 */ NdrFcShort( 0x0 ), /* 0 */
-/* 358 */ NdrFcShort( 0x8 ), /* 8 */
-/* 360 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 362 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 364 */ NdrFcShort( 0x1 ), /* 1 */
-/* 366 */ NdrFcShort( 0x0 ), /* 0 */
-/* 368 */ NdrFcShort( 0x0 ), /* 0 */
-/* 370 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter extendedRole */
-
-/* 372 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 374 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 376 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 378 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 380 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 382 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedExtendedRole */
-
-/* 384 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 386 */ NdrFcLong( 0x0 ), /* 0 */
-/* 390 */ NdrFcShort( 0x25 ), /* 37 */
-/* 392 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 394 */ NdrFcShort( 0x0 ), /* 0 */
-/* 396 */ NdrFcShort( 0x8 ), /* 8 */
-/* 398 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 400 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 402 */ NdrFcShort( 0x1 ), /* 1 */
-/* 404 */ NdrFcShort( 0x0 ), /* 0 */
-/* 406 */ NdrFcShort( 0x0 ), /* 0 */
-/* 408 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter localizedExtendedRole */
-
-/* 410 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 412 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 414 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 416 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 418 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 420 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nExtendedStates */
-
-/* 422 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 424 */ NdrFcLong( 0x0 ), /* 0 */
-/* 428 */ NdrFcShort( 0x26 ), /* 38 */
-/* 430 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 432 */ NdrFcShort( 0x0 ), /* 0 */
-/* 434 */ NdrFcShort( 0x24 ), /* 36 */
-/* 436 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 438 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 440 */ NdrFcShort( 0x0 ), /* 0 */
-/* 442 */ NdrFcShort( 0x0 ), /* 0 */
-/* 444 */ NdrFcShort( 0x0 ), /* 0 */
-/* 446 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nExtendedStates */
-
-/* 448 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 450 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 452 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 454 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 456 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 458 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_extendedStates */
-
-/* 460 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 462 */ NdrFcLong( 0x0 ), /* 0 */
-/* 466 */ NdrFcShort( 0x27 ), /* 39 */
-/* 468 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 470 */ NdrFcShort( 0x8 ), /* 8 */
-/* 472 */ NdrFcShort( 0x24 ), /* 36 */
-/* 474 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 476 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 478 */ NdrFcShort( 0x1 ), /* 1 */
-/* 480 */ NdrFcShort( 0x0 ), /* 0 */
-/* 482 */ NdrFcShort( 0x0 ), /* 0 */
-/* 484 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxExtendedStates */
-
-/* 486 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 488 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 490 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter extendedStates */
-
-/* 492 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 494 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 496 */ NdrFcShort( 0x5e ), /* Type Offset=94 */
-
- /* Parameter nExtendedStates */
-
-/* 498 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 500 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 502 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 504 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 506 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 508 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedExtendedStates */
-
-/* 510 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 512 */ NdrFcLong( 0x0 ), /* 0 */
-/* 516 */ NdrFcShort( 0x28 ), /* 40 */
-/* 518 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 520 */ NdrFcShort( 0x8 ), /* 8 */
-/* 522 */ NdrFcShort( 0x24 ), /* 36 */
-/* 524 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 526 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 528 */ NdrFcShort( 0x1 ), /* 1 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ NdrFcShort( 0x0 ), /* 0 */
-/* 534 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxLocalizedExtendedStates */
-
-/* 536 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 538 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 540 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter localizedExtendedStates */
-
-/* 542 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 544 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 546 */ NdrFcShort( 0x5e ), /* Type Offset=94 */
-
- /* Parameter nLocalizedExtendedStates */
-
-/* 548 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 550 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 552 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 554 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 556 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 558 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_uniqueID */
-
-/* 560 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 562 */ NdrFcLong( 0x0 ), /* 0 */
-/* 566 */ NdrFcShort( 0x29 ), /* 41 */
-/* 568 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 570 */ NdrFcShort( 0x0 ), /* 0 */
-/* 572 */ NdrFcShort( 0x24 ), /* 36 */
-/* 574 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 576 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 578 */ NdrFcShort( 0x0 ), /* 0 */
-/* 580 */ NdrFcShort( 0x0 ), /* 0 */
-/* 582 */ NdrFcShort( 0x0 ), /* 0 */
-/* 584 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter uniqueID */
-
-/* 586 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 588 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 590 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 592 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 594 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 596 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_windowHandle */
-
-/* 598 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 600 */ NdrFcLong( 0x0 ), /* 0 */
-/* 604 */ NdrFcShort( 0x2a ), /* 42 */
-/* 606 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 608 */ NdrFcShort( 0x0 ), /* 0 */
-/* 610 */ NdrFcShort( 0x8 ), /* 8 */
-/* 612 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 614 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 616 */ NdrFcShort( 0x1 ), /* 1 */
-/* 618 */ NdrFcShort( 0x0 ), /* 0 */
-/* 620 */ NdrFcShort( 0x0 ), /* 0 */
-/* 622 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter windowHandle */
-
-/* 624 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 626 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 628 */ NdrFcShort( 0x98 ), /* Type Offset=152 */
-
- /* Return value */
-
-/* 630 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 632 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 634 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_indexInParent */
-
-/* 636 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 638 */ NdrFcLong( 0x0 ), /* 0 */
-/* 642 */ NdrFcShort( 0x2b ), /* 43 */
-/* 644 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 646 */ NdrFcShort( 0x0 ), /* 0 */
-/* 648 */ NdrFcShort( 0x24 ), /* 36 */
-/* 650 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 652 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 654 */ NdrFcShort( 0x0 ), /* 0 */
-/* 656 */ NdrFcShort( 0x0 ), /* 0 */
-/* 658 */ NdrFcShort( 0x0 ), /* 0 */
-/* 660 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter indexInParent */
-
-/* 662 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 664 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 666 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 668 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 670 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 672 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_locale */
-
-/* 674 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 676 */ NdrFcLong( 0x0 ), /* 0 */
-/* 680 */ NdrFcShort( 0x2c ), /* 44 */
-/* 682 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x8 ), /* 8 */
-/* 688 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 690 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 692 */ NdrFcShort( 0x1 ), /* 1 */
-/* 694 */ NdrFcShort( 0x0 ), /* 0 */
-/* 696 */ NdrFcShort( 0x0 ), /* 0 */
-/* 698 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter locale */
-
-/* 700 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 702 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 704 */ NdrFcShort( 0xa6 ), /* Type Offset=166 */
-
- /* Return value */
-
-/* 706 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 708 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 710 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_attributes */
-
-/* 712 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 714 */ NdrFcLong( 0x0 ), /* 0 */
-/* 718 */ NdrFcShort( 0x2d ), /* 45 */
-/* 720 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 722 */ NdrFcShort( 0x0 ), /* 0 */
-/* 724 */ NdrFcShort( 0x8 ), /* 8 */
-/* 726 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 728 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 730 */ NdrFcShort( 0x1 ), /* 1 */
-/* 732 */ NdrFcShort( 0x0 ), /* 0 */
-/* 734 */ NdrFcShort( 0x0 ), /* 0 */
-/* 736 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter attributes */
-
-/* 738 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 740 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 742 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 744 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 746 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 748 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const Accessible2_MIDL_TYPE_FORMAT_STRING Accessible2__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 12 */ NdrFcLong( 0x7cdf86ee ), /* 2095023854 */
-/* 16 */ NdrFcShort( 0xc3da ), /* -15398 */
-/* 18 */ NdrFcShort( 0x496a ), /* 18794 */
-/* 20 */ 0xbd, /* 189 */
- 0xa4, /* 164 */
-/* 22 */ 0x28, /* 40 */
- 0x1b, /* 27 */
-/* 24 */ 0x33, /* 51 */
- 0x6e, /* 110 */
-/* 26 */ 0x1f, /* 31 */
- 0xdc, /* 220 */
-/* 28 */
- 0x11, 0x0, /* FC_RP */
-/* 30 */ NdrFcShort( 0x2 ), /* Offset= 2 (32) */
-/* 32 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 38 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 40 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 42 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 44 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 46 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 48 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 50 */ NdrFcShort( 0xffd8 ), /* Offset= -40 (10) */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 56 */ NdrFcShort( 0x1c ), /* Offset= 28 (84) */
-/* 58 */
- 0x13, 0x0, /* FC_OP */
-/* 60 */ NdrFcShort( 0xe ), /* Offset= 14 (74) */
-/* 62 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 64 */ NdrFcShort( 0x2 ), /* 2 */
-/* 66 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 68 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 70 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 72 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 74 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 76 */ NdrFcShort( 0x8 ), /* 8 */
-/* 78 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (62) */
-/* 80 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 82 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 84 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 86 */ NdrFcShort( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ NdrFcShort( 0x0 ), /* 0 */
-/* 92 */ NdrFcShort( 0xffde ), /* Offset= -34 (58) */
-/* 94 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 96 */ NdrFcShort( 0x2 ), /* Offset= 2 (98) */
-/* 98 */
- 0x13, 0x0, /* FC_OP */
-/* 100 */ NdrFcShort( 0x2 ), /* Offset= 2 (102) */
-/* 102 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 108 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 110 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 112 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 114 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 116 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 118 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 120 */ NdrFcShort( 0xffdc ), /* Offset= -36 (84) */
-/* 122 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 124 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 126 */ NdrFcShort( 0x1a ), /* Offset= 26 (152) */
-/* 128 */
- 0x13, 0x0, /* FC_OP */
-/* 130 */ NdrFcShort( 0x2 ), /* Offset= 2 (132) */
-/* 132 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x48, /* 72 */
-/* 134 */ NdrFcShort( 0x4 ), /* 4 */
-/* 136 */ NdrFcShort( 0x2 ), /* 2 */
-/* 138 */ NdrFcLong( 0x48746457 ), /* 1215587415 */
-/* 142 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 144 */ NdrFcLong( 0x52746457 ), /* 1383359575 */
-/* 148 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 150 */ NdrFcShort( 0xffff ), /* Offset= -1 (149) */
-/* 152 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 154 */ NdrFcShort( 0x1 ), /* 1 */
-/* 156 */ NdrFcShort( 0x8 ), /* 8 */
-/* 158 */ NdrFcShort( 0x0 ), /* 0 */
-/* 160 */ NdrFcShort( 0xffe0 ), /* Offset= -32 (128) */
-/* 162 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 164 */ NdrFcShort( 0x2 ), /* Offset= 2 (166) */
-/* 166 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 168 */ NdrFcShort( 0x18 ), /* 24 */
-/* 170 */ NdrFcShort( 0x0 ), /* 0 */
-/* 172 */ NdrFcShort( 0x0 ), /* Offset= 0 (172) */
-/* 174 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 176 */ NdrFcShort( 0xffa4 ), /* Offset= -92 (84) */
-/* 178 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 180 */ NdrFcShort( 0xffa0 ), /* Offset= -96 (84) */
-/* 182 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 184 */ NdrFcShort( 0xff9c ), /* Offset= -100 (84) */
-/* 186 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- },
- {
- HWND_UserSize
- ,HWND_UserMarshal
- ,HWND_UserUnmarshal
- ,HWND_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_Accessible2_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IDispatch, ver. 0.0,
- GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessible, ver. 0.0,
- GUID={0x618736e0,0x3c3d,0x11cf,{0x81,0x0c,0x00,0xaa,0x00,0x38,0x9b,0x71}} */
-
-
-/* Object interface: IAccessible2, ver. 0.0,
- GUID={0xE89F726E,0xC4F4,0x4c19,{0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessible2_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 38,
- 82,
- 132,
- 170,
- 208,
- 258,
- 308,
- 346,
- 384,
- 422,
- 460,
- 510,
- 560,
- 598,
- 636,
- 674,
- 712
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessible2_ProxyInfo =
- {
- &Object_StubDesc,
- Accessible2__MIDL_ProcFormatString.Format,
- &IAccessible2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessible2_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- Accessible2__MIDL_ProcFormatString.Format,
- &IAccessible2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(46) _IAccessible2ProxyVtbl =
-{
- &IAccessible2_ProxyInfo,
- &IID_IAccessible2,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IDispatch::GetTypeInfoCount */ ,
- 0 /* IDispatch::GetTypeInfo */ ,
- 0 /* IDispatch::GetIDsOfNames */ ,
- 0 /* IDispatch_Invoke_Proxy */ ,
- 0 /* IAccessible::get_accParent */ ,
- 0 /* IAccessible::get_accChildCount */ ,
- 0 /* IAccessible::get_accChild */ ,
- 0 /* IAccessible::get_accName */ ,
- 0 /* IAccessible::get_accValue */ ,
- 0 /* IAccessible::get_accDescription */ ,
- 0 /* IAccessible::get_accRole */ ,
- 0 /* IAccessible::get_accState */ ,
- 0 /* IAccessible::get_accHelp */ ,
- 0 /* IAccessible::get_accHelpTopic */ ,
- 0 /* IAccessible::get_accKeyboardShortcut */ ,
- 0 /* IAccessible::get_accFocus */ ,
- 0 /* IAccessible::get_accSelection */ ,
- 0 /* IAccessible::get_accDefaultAction */ ,
- 0 /* IAccessible::accSelect */ ,
- 0 /* IAccessible::accLocation */ ,
- 0 /* IAccessible::accNavigate */ ,
- 0 /* IAccessible::accHitTest */ ,
- 0 /* IAccessible::accDoDefaultAction */ ,
- 0 /* IAccessible::put_accName */ ,
- 0 /* IAccessible::put_accValue */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_nRelations */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_relation */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_relations */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::role */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::scrollTo */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::scrollToPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_groupPosition */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_states */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_extendedRole */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_localizedExtendedRole */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_nExtendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_extendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_localizedExtendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_uniqueID */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_windowHandle */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_indexInParent */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_locale */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_attributes */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessible2_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessible2StubVtbl =
-{
- &IID_IAccessible2,
- &IAccessible2_ServerInfo,
- 46,
- &IAccessible2_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- Accessible2__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _Accessible2_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessible2ProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _Accessible2_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessible2StubVtbl,
- 0
-};
-
-PCInterfaceName const _Accessible2_InterfaceNamesList[] =
-{
- "IAccessible2",
- 0
-};
-
-const IID * const _Accessible2_BaseIIDList[] =
-{
- &IID_IAccessible,
- 0
-};
-
-
-#define _Accessible2_CHECK_IID(n) IID_GENERIC_CHECK_IID( _Accessible2, pIID, n)
-
-int __stdcall _Accessible2_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_Accessible2_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo Accessible2_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _Accessible2_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _Accessible2_StubVtblList,
- (const PCInterfaceName * ) & _Accessible2_InterfaceNamesList,
- (const IID ** ) & _Accessible2_BaseIIDList,
- & _Accessible2_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction.h
deleted file mode 100644
index 8755505bf3..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction.h
+++ /dev/null
@@ -1,220 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleAction_h__
-#define __AccessibleAction_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleAction_FWD_DEFINED__
-#define __IAccessibleAction_FWD_DEFINED__
-typedef interface IAccessibleAction IAccessibleAction;
-#endif /* __IAccessibleAction_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleAction_INTERFACE_DEFINED__
-#define __IAccessibleAction_INTERFACE_DEFINED__
-
-/* interface IAccessibleAction */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleAction;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B70D9F59-3B5A-4dba-AB9E-22012F607DF5")
- IAccessibleAction : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE nActions(
- /* [retval][out] */ long *nActions) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE doAction(
- /* [in] */ long actionIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_keyBinding(
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_name(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedName(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleActionVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleAction * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleAction * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleAction * This);
-
- HRESULT ( STDMETHODCALLTYPE *nActions )(
- IAccessibleAction * This,
- /* [retval][out] */ long *nActions);
-
- HRESULT ( STDMETHODCALLTYPE *doAction )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName);
-
- END_INTERFACE
- } IAccessibleActionVtbl;
-
- interface IAccessibleAction
- {
- CONST_VTBL struct IAccessibleActionVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleAction_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleAction_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleAction_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleAction_nActions(This,nActions) \
- ( (This)->lpVtbl -> nActions(This,nActions) )
-
-#define IAccessibleAction_doAction(This,actionIndex) \
- ( (This)->lpVtbl -> doAction(This,actionIndex) )
-
-#define IAccessibleAction_get_description(This,actionIndex,description) \
- ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
-
-#define IAccessibleAction_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
- ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
-
-#define IAccessibleAction_get_name(This,actionIndex,name) \
- ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
-
-#define IAccessibleAction_get_localizedName(This,actionIndex,localizedName) \
- ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleAction_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_i.c
deleted file mode 100644
index a4d754b68d..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleAction,0xB70D9F59,0x3B5A,0x4dba,0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_p.c
deleted file mode 100644
index 68eeac00b4..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleAction_p.c
+++ /dev/null
@@ -1,557 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleAction.h"
-
-#define TYPE_FORMAT_STRING_SIZE 77
-#define PROC_FORMAT_STRING_SIZE 265
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleAction_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleAction_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleAction_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleAction_MIDL_TYPE_FORMAT_STRING AccessibleAction__MIDL_TypeFormatString;
-extern const AccessibleAction_MIDL_PROC_FORMAT_STRING AccessibleAction__MIDL_ProcFormatString;
-extern const AccessibleAction_MIDL_EXPR_FORMAT_STRING AccessibleAction__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleAction_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleAction_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleAction_MIDL_PROC_FORMAT_STRING AccessibleAction__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure nActions */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nActions */
-
-/* 26 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure doAction */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 54 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 64 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 70 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_description */
-
-/* 76 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 78 */ NdrFcLong( 0x0 ), /* 0 */
-/* 82 */ NdrFcShort( 0x5 ), /* 5 */
-/* 84 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 86 */ NdrFcShort( 0x8 ), /* 8 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 92 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 94 */ NdrFcShort( 0x1 ), /* 1 */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 102 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 104 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 108 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 112 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 116 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_keyBinding */
-
-/* 120 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 122 */ NdrFcLong( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0x6 ), /* 6 */
-/* 128 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 130 */ NdrFcShort( 0x10 ), /* 16 */
-/* 132 */ NdrFcShort( 0x24 ), /* 36 */
-/* 134 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x5, /* 5 */
-/* 136 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 138 */ NdrFcShort( 0x1 ), /* 1 */
-/* 140 */ NdrFcShort( 0x0 ), /* 0 */
-/* 142 */ NdrFcShort( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 146 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 148 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 150 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nMaxBindings */
-
-/* 152 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 154 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 156 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter keyBindings */
-
-/* 158 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 160 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 162 */ NdrFcShort( 0x2e ), /* Type Offset=46 */
-
- /* Parameter nBindings */
-
-/* 164 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 166 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 170 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 172 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 174 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_name */
-
-/* 176 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 178 */ NdrFcLong( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x7 ), /* 7 */
-/* 184 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 186 */ NdrFcShort( 0x8 ), /* 8 */
-/* 188 */ NdrFcShort( 0x8 ), /* 8 */
-/* 190 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 192 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 194 */ NdrFcShort( 0x1 ), /* 1 */
-/* 196 */ NdrFcShort( 0x0 ), /* 0 */
-/* 198 */ NdrFcShort( 0x0 ), /* 0 */
-/* 200 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 202 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 204 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter name */
-
-/* 208 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 210 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 212 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 214 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 216 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 218 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedName */
-
-/* 220 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 222 */ NdrFcLong( 0x0 ), /* 0 */
-/* 226 */ NdrFcShort( 0x8 ), /* 8 */
-/* 228 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 230 */ NdrFcShort( 0x8 ), /* 8 */
-/* 232 */ NdrFcShort( 0x8 ), /* 8 */
-/* 234 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 236 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 238 */ NdrFcShort( 0x1 ), /* 1 */
-/* 240 */ NdrFcShort( 0x0 ), /* 0 */
-/* 242 */ NdrFcShort( 0x0 ), /* 0 */
-/* 244 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 246 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 248 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 250 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter localizedName */
-
-/* 252 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 254 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 256 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 258 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 260 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleAction_MIDL_TYPE_FORMAT_STRING AccessibleAction__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 8 */ NdrFcShort( 0x1c ), /* Offset= 28 (36) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0xe ), /* Offset= 14 (26) */
-/* 14 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 16 */ NdrFcShort( 0x2 ), /* 2 */
-/* 18 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 20 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 22 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 24 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 26 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 28 */ NdrFcShort( 0x8 ), /* 8 */
-/* 30 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (14) */
-/* 32 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 34 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 36 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0x8 ), /* 8 */
-/* 42 */ NdrFcShort( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0xffde ), /* Offset= -34 (10) */
-/* 46 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x13, 0x0, /* FC_OP */
-/* 52 */ NdrFcShort( 0x2 ), /* Offset= 2 (54) */
-/* 54 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 60 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 62 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 64 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 66 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 68 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 70 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 72 */ NdrFcShort( 0xffdc ), /* Offset= -36 (36) */
-/* 74 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleAction, ver. 0.0,
- GUID={0xB70D9F59,0x3B5A,0x4dba,{0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleAction_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 76,
- 120,
- 176,
- 220
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleAction_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleAction__MIDL_ProcFormatString.Format,
- &IAccessibleAction_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleAction_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleAction__MIDL_ProcFormatString.Format,
- &IAccessibleAction_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(9) _IAccessibleActionProxyVtbl =
-{
- &IAccessibleAction_ProxyInfo,
- &IID_IAccessibleAction,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::nActions */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::doAction */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_description */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_keyBinding */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_name */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_localizedName */
-};
-
-const CInterfaceStubVtbl _IAccessibleActionStubVtbl =
-{
- &IID_IAccessibleAction,
- &IAccessibleAction_ServerInfo,
- 9,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleAction__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleAction_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleActionProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleAction_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleActionStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleAction_InterfaceNamesList[] =
-{
- "IAccessibleAction",
- 0
-};
-
-
-#define _AccessibleAction_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleAction, pIID, n)
-
-int __stdcall _AccessibleAction_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleAction_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleAction_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleAction_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleAction_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleAction_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleAction_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication.h
deleted file mode 100644
index 7e901563e9..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication.h
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleApplication_h__
-#define __AccessibleApplication_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleApplication_FWD_DEFINED__
-#define __IAccessibleApplication_FWD_DEFINED__
-typedef interface IAccessibleApplication IAccessibleApplication;
-#endif /* __IAccessibleApplication_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleApplication_INTERFACE_DEFINED__
-#define __IAccessibleApplication_INTERFACE_DEFINED__
-
-/* interface IAccessibleApplication */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleApplication;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("D49DED83-5B25-43F4-9B95-93B44595979E")
- IAccessibleApplication : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appName(
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appVersion(
- /* [retval][out] */ BSTR *version) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitName(
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitVersion(
- /* [retval][out] */ BSTR *version) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleApplicationVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleApplication * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleApplication * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleApplication * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appName )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appVersion )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *version);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitName )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitVersion )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *version);
-
- END_INTERFACE
- } IAccessibleApplicationVtbl;
-
- interface IAccessibleApplication
- {
- CONST_VTBL struct IAccessibleApplicationVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleApplication_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleApplication_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleApplication_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleApplication_get_appName(This,name) \
- ( (This)->lpVtbl -> get_appName(This,name) )
-
-#define IAccessibleApplication_get_appVersion(This,version) \
- ( (This)->lpVtbl -> get_appVersion(This,version) )
-
-#define IAccessibleApplication_get_toolkitName(This,name) \
- ( (This)->lpVtbl -> get_toolkitName(This,name) )
-
-#define IAccessibleApplication_get_toolkitVersion(This,version) \
- ( (This)->lpVtbl -> get_toolkitVersion(This,version) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleApplication_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_i.c
deleted file mode 100644
index b50ae8a2c6..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleApplication,0xD49DED83,0x5B25,0x43F4,0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_p.c
deleted file mode 100644
index 84d7e30344..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleApplication_p.c
+++ /dev/null
@@ -1,420 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleApplication.h"
-
-#define TYPE_FORMAT_STRING_SIZE 43
-#define PROC_FORMAT_STRING_SIZE 153
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleApplication_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleApplication_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleApplication_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleApplication_MIDL_TYPE_FORMAT_STRING AccessibleApplication__MIDL_TypeFormatString;
-extern const AccessibleApplication_MIDL_PROC_FORMAT_STRING AccessibleApplication__MIDL_ProcFormatString;
-extern const AccessibleApplication_MIDL_EXPR_FORMAT_STRING AccessibleApplication__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleApplication_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleApplication_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleApplication_MIDL_PROC_FORMAT_STRING AccessibleApplication__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_appName */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter name */
-
-/* 26 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_appVersion */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 48 */ NdrFcShort( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 54 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 56 */ NdrFcShort( 0x1 ), /* 1 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter version */
-
-/* 64 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 70 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_toolkitName */
-
-/* 76 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 78 */ NdrFcLong( 0x0 ), /* 0 */
-/* 82 */ NdrFcShort( 0x5 ), /* 5 */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ NdrFcShort( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 92 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 94 */ NdrFcShort( 0x1 ), /* 1 */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter name */
-
-/* 102 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 104 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 106 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_toolkitVersion */
-
-/* 114 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 116 */ NdrFcLong( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x6 ), /* 6 */
-/* 122 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 124 */ NdrFcShort( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0x8 ), /* 8 */
-/* 128 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 130 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 132 */ NdrFcShort( 0x1 ), /* 1 */
-/* 134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter version */
-
-/* 140 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 142 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 144 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 146 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 148 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 150 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleApplication_MIDL_TYPE_FORMAT_STRING AccessibleApplication__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x8 ), /* 8 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleApplication, ver. 0.0,
- GUID={0xD49DED83,0x5B25,0x43F4,{0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleApplication_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 76,
- 114
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleApplication_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleApplication__MIDL_ProcFormatString.Format,
- &IAccessibleApplication_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleApplication_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleApplication__MIDL_ProcFormatString.Format,
- &IAccessibleApplication_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(7) _IAccessibleApplicationProxyVtbl =
-{
- &IAccessibleApplication_ProxyInfo,
- &IID_IAccessibleApplication,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_appName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_appVersion */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_toolkitName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_toolkitVersion */
-};
-
-const CInterfaceStubVtbl _IAccessibleApplicationStubVtbl =
-{
- &IID_IAccessibleApplication,
- &IAccessibleApplication_ServerInfo,
- 7,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleApplication__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleApplication_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleApplicationProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleApplication_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleApplicationStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleApplication_InterfaceNamesList[] =
-{
- "IAccessibleApplication",
- 0
-};
-
-
-#define _AccessibleApplication_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleApplication, pIID, n)
-
-int __stdcall _AccessibleApplication_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleApplication_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleApplication_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleApplication_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleApplication_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleApplication_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleApplication_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent.h
deleted file mode 100644
index 38f696f45c..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent.h
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleComponent_h__
-#define __AccessibleComponent_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleComponent_FWD_DEFINED__
-#define __IAccessibleComponent_FWD_DEFINED__
-typedef interface IAccessibleComponent IAccessibleComponent;
-#endif /* __IAccessibleComponent_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleComponent_0000_0000 */
-/* [local] */
-
-typedef long IA2Color;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleComponent_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleComponent_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleComponent_INTERFACE_DEFINED__
-#define __IAccessibleComponent_INTERFACE_DEFINED__
-
-/* interface IAccessibleComponent */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleComponent;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("1546D4B0-4C98-4bda-89AE-9A64748BDDE4")
- IAccessibleComponent : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locationInParent(
- /* [out] */ long *x,
- /* [retval][out] */ long *y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_foreground(
- /* [retval][out] */ IA2Color *foreground) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_background(
- /* [retval][out] */ IA2Color *background) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleComponentVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleComponent * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleComponent * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleComponent * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locationInParent )(
- IAccessibleComponent * This,
- /* [out] */ long *x,
- /* [retval][out] */ long *y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_foreground )(
- IAccessibleComponent * This,
- /* [retval][out] */ IA2Color *foreground);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_background )(
- IAccessibleComponent * This,
- /* [retval][out] */ IA2Color *background);
-
- END_INTERFACE
- } IAccessibleComponentVtbl;
-
- interface IAccessibleComponent
- {
- CONST_VTBL struct IAccessibleComponentVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleComponent_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleComponent_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleComponent_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleComponent_get_locationInParent(This,x,y) \
- ( (This)->lpVtbl -> get_locationInParent(This,x,y) )
-
-#define IAccessibleComponent_get_foreground(This,foreground) \
- ( (This)->lpVtbl -> get_foreground(This,foreground) )
-
-#define IAccessibleComponent_get_background(This,background) \
- ( (This)->lpVtbl -> get_background(This,background) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleComponent_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_i.c
deleted file mode 100644
index 34be13e31c..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleComponent,0x1546D4B0,0x4C98,0x4bda,0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_p.c
deleted file mode 100644
index ddcacff7e7..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleComponent_p.c
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleComponent.h"
-
-#define TYPE_FORMAT_STRING_SIZE 7
-#define PROC_FORMAT_STRING_SIZE 121
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleComponent_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleComponent_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleComponent_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleComponent_MIDL_TYPE_FORMAT_STRING AccessibleComponent__MIDL_TypeFormatString;
-extern const AccessibleComponent_MIDL_PROC_FORMAT_STRING AccessibleComponent__MIDL_ProcFormatString;
-extern const AccessibleComponent_MIDL_EXPR_FORMAT_STRING AccessibleComponent__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleComponent_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleComponent_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleComponent_MIDL_PROC_FORMAT_STRING AccessibleComponent__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_locationInParent */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x40 ), /* 64 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter x */
-
-/* 26 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 32 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 38 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_foreground */
-
-/* 44 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 46 */ NdrFcLong( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x24 ), /* 36 */
-/* 58 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 60 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter foreground */
-
-/* 70 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 72 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 76 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 78 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_background */
-
-/* 82 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 84 */ NdrFcLong( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x5 ), /* 5 */
-/* 90 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x24 ), /* 36 */
-/* 96 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 98 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter background */
-
-/* 108 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 116 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleComponent_MIDL_TYPE_FORMAT_STRING AccessibleComponent__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-
-/* Standard interface: __MIDL_itf_AccessibleComponent_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleComponent, ver. 0.0,
- GUID={0x1546D4B0,0x4C98,0x4bda,{0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleComponent_FormatStringOffsetTable[] =
- {
- 0,
- 44,
- 82
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleComponent_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleComponent__MIDL_ProcFormatString.Format,
- &IAccessibleComponent_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleComponent_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleComponent__MIDL_ProcFormatString.Format,
- &IAccessibleComponent_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(6) _IAccessibleComponentProxyVtbl =
-{
- &IAccessibleComponent_ProxyInfo,
- &IID_IAccessibleComponent,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_locationInParent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_foreground */ ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_background */
-};
-
-const CInterfaceStubVtbl _IAccessibleComponentStubVtbl =
-{
- &IID_IAccessibleComponent,
- &IAccessibleComponent_ServerInfo,
- 6,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleComponent__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleComponent_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleComponentProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleComponent_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleComponentStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleComponent_InterfaceNamesList[] =
-{
- "IAccessibleComponent",
- 0
-};
-
-
-#define _AccessibleComponent_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleComponent, pIID, n)
-
-int __stdcall _AccessibleComponent_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleComponent_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleComponent_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleComponent_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleComponent_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleComponent_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleComponent_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText.h
deleted file mode 100644
index 4c94154a15..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText.h
+++ /dev/null
@@ -1,235 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleEditableText_h__
-#define __AccessibleEditableText_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleEditableText_FWD_DEFINED__
-#define __IAccessibleEditableText_FWD_DEFINED__
-typedef interface IAccessibleEditableText IAccessibleEditableText;
-#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleEditableText_INTERFACE_DEFINED__
-#define __IAccessibleEditableText_INTERFACE_DEFINED__
-
-/* interface IAccessibleEditableText */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleEditableText;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("A59AA09A-7011-4b65-939D-32B1FB5547E3")
- IAccessibleEditableText : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE copyText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE deleteText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE insertText(
- /* [in] */ long offset,
- /* [in] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE cutText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE pasteText(
- /* [in] */ long offset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE replaceText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setAttributes(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *attributes) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleEditableTextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleEditableText * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleEditableText * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleEditableText * This);
-
- HRESULT ( STDMETHODCALLTYPE *copyText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *deleteText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *insertText )(
- IAccessibleEditableText * This,
- /* [in] */ long offset,
- /* [in] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *cutText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *pasteText )(
- IAccessibleEditableText * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *replaceText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *setAttributes )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *attributes);
-
- END_INTERFACE
- } IAccessibleEditableTextVtbl;
-
- interface IAccessibleEditableText
- {
- CONST_VTBL struct IAccessibleEditableTextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleEditableText_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleEditableText_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleEditableText_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleEditableText_copyText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> copyText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_deleteText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> deleteText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_insertText(This,offset,text) \
- ( (This)->lpVtbl -> insertText(This,offset,text) )
-
-#define IAccessibleEditableText_cutText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> cutText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_pasteText(This,offset) \
- ( (This)->lpVtbl -> pasteText(This,offset) )
-
-#define IAccessibleEditableText_replaceText(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> replaceText(This,startOffset,endOffset,text) )
-
-#define IAccessibleEditableText_setAttributes(This,startOffset,endOffset,attributes) \
- ( (This)->lpVtbl -> setAttributes(This,startOffset,endOffset,attributes) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleEditableText_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_i.c
deleted file mode 100644
index a444951721..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleEditableText,0xA59AA09A,0x7011,0x4b65,0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_p.c
deleted file mode 100644
index 9e9b466d86..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEditableText_p.c
+++ /dev/null
@@ -1,579 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleEditableText.h"
-
-#define TYPE_FORMAT_STRING_SIZE 43
-#define PROC_FORMAT_STRING_SIZE 315
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleEditableText_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleEditableText_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleEditableText_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleEditableText_MIDL_TYPE_FORMAT_STRING AccessibleEditableText__MIDL_TypeFormatString;
-extern const AccessibleEditableText_MIDL_PROC_FORMAT_STRING AccessibleEditableText__MIDL_ProcFormatString;
-extern const AccessibleEditableText_MIDL_EXPR_FORMAT_STRING AccessibleEditableText__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleEditableText_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleEditableText_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleEditableText_MIDL_PROC_FORMAT_STRING AccessibleEditableText__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure copyText */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 26 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 32 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 38 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure deleteText */
-
-/* 44 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 46 */ NdrFcLong( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 54 */ NdrFcShort( 0x10 ), /* 16 */
-/* 56 */ NdrFcShort( 0x8 ), /* 8 */
-/* 58 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 60 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 70 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 72 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 76 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 78 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 82 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure insertText */
-
-/* 88 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 90 */ NdrFcLong( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x5 ), /* 5 */
-/* 96 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 98 */ NdrFcShort( 0x8 ), /* 8 */
-/* 100 */ NdrFcShort( 0x8 ), /* 8 */
-/* 102 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x3, /* 3 */
-/* 104 */ 0xa, /* 10 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-/* 108 */ NdrFcShort( 0x1 ), /* 1 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 114 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 120 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 122 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 124 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure cutText */
-
-/* 132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x6 ), /* 6 */
-/* 140 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 142 */ NdrFcShort( 0x10 ), /* 16 */
-/* 144 */ NdrFcShort( 0x8 ), /* 8 */
-/* 146 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 148 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 150 */ NdrFcShort( 0x0 ), /* 0 */
-/* 152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 154 */ NdrFcShort( 0x0 ), /* 0 */
-/* 156 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 158 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 160 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 164 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 166 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 170 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 172 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 174 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure pasteText */
-
-/* 176 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 178 */ NdrFcLong( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x7 ), /* 7 */
-/* 184 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 186 */ NdrFcShort( 0x8 ), /* 8 */
-/* 188 */ NdrFcShort( 0x8 ), /* 8 */
-/* 190 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 192 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 194 */ NdrFcShort( 0x0 ), /* 0 */
-/* 196 */ NdrFcShort( 0x0 ), /* 0 */
-/* 198 */ NdrFcShort( 0x0 ), /* 0 */
-/* 200 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 202 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 204 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 208 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 210 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 212 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure replaceText */
-
-/* 214 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 216 */ NdrFcLong( 0x0 ), /* 0 */
-/* 220 */ NdrFcShort( 0x8 ), /* 8 */
-/* 222 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 224 */ NdrFcShort( 0x10 ), /* 16 */
-/* 226 */ NdrFcShort( 0x8 ), /* 8 */
-/* 228 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x4, /* 4 */
-/* 230 */ 0xa, /* 10 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 232 */ NdrFcShort( 0x0 ), /* 0 */
-/* 234 */ NdrFcShort( 0x1 ), /* 1 */
-/* 236 */ NdrFcShort( 0x0 ), /* 0 */
-/* 238 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 240 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 242 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 244 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 246 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 248 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 250 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 252 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 254 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 256 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 258 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 260 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setAttributes */
-
-/* 264 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 266 */ NdrFcLong( 0x0 ), /* 0 */
-/* 270 */ NdrFcShort( 0x9 ), /* 9 */
-/* 272 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 274 */ NdrFcShort( 0x10 ), /* 16 */
-/* 276 */ NdrFcShort( 0x8 ), /* 8 */
-/* 278 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x4, /* 4 */
-/* 280 */ 0xa, /* 10 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 282 */ NdrFcShort( 0x0 ), /* 0 */
-/* 284 */ NdrFcShort( 0x1 ), /* 1 */
-/* 286 */ NdrFcShort( 0x0 ), /* 0 */
-/* 288 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 290 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 292 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 294 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 296 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 298 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 300 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter attributes */
-
-/* 302 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 304 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 306 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 308 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 310 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 312 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleEditableText_MIDL_TYPE_FORMAT_STRING AccessibleEditableText__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x0, /* FC_RP */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x12, 0x0, /* FC_UP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x8 ), /* 8 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleEditableText, ver. 0.0,
- GUID={0xA59AA09A,0x7011,0x4b65,{0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleEditableText_FormatStringOffsetTable[] =
- {
- 0,
- 44,
- 88,
- 132,
- 176,
- 214,
- 264
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleEditableText_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleEditableText__MIDL_ProcFormatString.Format,
- &IAccessibleEditableText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleEditableText_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleEditableText__MIDL_ProcFormatString.Format,
- &IAccessibleEditableText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(10) _IAccessibleEditableTextProxyVtbl =
-{
- &IAccessibleEditableText_ProxyInfo,
- &IID_IAccessibleEditableText,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::copyText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::deleteText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::insertText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::cutText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::pasteText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::replaceText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::setAttributes */
-};
-
-const CInterfaceStubVtbl _IAccessibleEditableTextStubVtbl =
-{
- &IID_IAccessibleEditableText,
- &IAccessibleEditableText_ServerInfo,
- 10,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleEditableText__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleEditableText_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleEditableTextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleEditableText_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleEditableTextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleEditableText_InterfaceNamesList[] =
-{
- "IAccessibleEditableText",
- 0
-};
-
-
-#define _AccessibleEditableText_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleEditableText, pIID, n)
-
-int __stdcall _AccessibleEditableText_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleEditableText_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleEditableText_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleEditableText_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleEditableText_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleEditableText_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleEditableText_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEventID.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleEventID.h
deleted file mode 100644
index 6e6c8a888a..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleEventID.h
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleEventID.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleEventID_h__
-#define __AccessibleEventID_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleEventID_0000_0000 */
-/* [local] */
-
-
-enum IA2EventID
- { IA2_EVENT_ACTION_CHANGED = 0x101,
- IA2_EVENT_ACTIVE_DECENDENT_CHANGED = ( IA2_EVENT_ACTION_CHANGED + 1 ) ,
- IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
- IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED = ( IA2_EVENT_ACTIVE_DESCENDANT_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_CONTENT_CHANGED = ( IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_LOAD_COMPLETE = ( IA2_EVENT_DOCUMENT_CONTENT_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_LOAD_STOPPED = ( IA2_EVENT_DOCUMENT_LOAD_COMPLETE + 1 ) ,
- IA2_EVENT_DOCUMENT_RELOAD = ( IA2_EVENT_DOCUMENT_LOAD_STOPPED + 1 ) ,
- IA2_EVENT_HYPERLINK_END_INDEX_CHANGED = ( IA2_EVENT_DOCUMENT_RELOAD + 1 ) ,
- IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED = ( IA2_EVENT_HYPERLINK_END_INDEX_CHANGED + 1 ) ,
- IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED = ( IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_LINK_ACTIVATED = ( IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_LINK_SELECTED = ( IA2_EVENT_HYPERTEXT_LINK_ACTIVATED + 1 ) ,
- IA2_EVENT_HYPERLINK_START_INDEX_CHANGED = ( IA2_EVENT_HYPERTEXT_LINK_SELECTED + 1 ) ,
- IA2_EVENT_HYPERTEXT_CHANGED = ( IA2_EVENT_HYPERLINK_START_INDEX_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_NLINKS_CHANGED = ( IA2_EVENT_HYPERTEXT_CHANGED + 1 ) ,
- IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED = ( IA2_EVENT_HYPERTEXT_NLINKS_CHANGED + 1 ) ,
- IA2_EVENT_PAGE_CHANGED = ( IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_SECTION_CHANGED = ( IA2_EVENT_PAGE_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_CAPTION_CHANGED = ( IA2_EVENT_SECTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_CAPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED = ( IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_MODEL_CHANGED = ( IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_MODEL_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_ROW_HEADER_CHANGED = ( IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_SUMMARY_CHANGED = ( IA2_EVENT_TABLE_ROW_HEADER_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_ATTRIBUTE_CHANGED = ( IA2_EVENT_TABLE_SUMMARY_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_CARET_MOVED = ( IA2_EVENT_TEXT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_CHANGED = ( IA2_EVENT_TEXT_CARET_MOVED + 1 ) ,
- IA2_EVENT_TEXT_COLUMN_CHANGED = ( IA2_EVENT_TEXT_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_INSERTED = ( IA2_EVENT_TEXT_COLUMN_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_REMOVED = ( IA2_EVENT_TEXT_INSERTED + 1 ) ,
- IA2_EVENT_TEXT_UPDATED = ( IA2_EVENT_TEXT_REMOVED + 1 ) ,
- IA2_EVENT_TEXT_SELECTION_CHANGED = ( IA2_EVENT_TEXT_UPDATED + 1 ) ,
- IA2_EVENT_VISIBLE_DATA_CHANGED = ( IA2_EVENT_TEXT_SELECTION_CHANGED + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleEventID_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleEventID_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink.h
deleted file mode 100644
index 24fad0bd8a..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink.h
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleHyperlink_h__
-#define __AccessibleHyperlink_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleHyperlink_FWD_DEFINED__
-#define __IAccessibleHyperlink_FWD_DEFINED__
-typedef interface IAccessibleHyperlink IAccessibleHyperlink;
-#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleAction.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleHyperlink_INTERFACE_DEFINED__
-#define __IAccessibleHyperlink_INTERFACE_DEFINED__
-
-/* interface IAccessibleHyperlink */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleHyperlink;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("01C20F2B-3DD2-400f-949F-AD00BDAB1D41")
- IAccessibleHyperlink : public IAccessibleAction
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchor(
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchor) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchorTarget) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_startIndex(
- /* [retval][out] */ long *index) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_endIndex(
- /* [retval][out] */ long *index) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_valid(
- /* [retval][out] */ boolean *valid) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleHyperlinkVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleHyperlink * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleHyperlink * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleHyperlink * This);
-
- HRESULT ( STDMETHODCALLTYPE *nActions )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *nActions);
-
- HRESULT ( STDMETHODCALLTYPE *doAction )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchor )(
- IAccessibleHyperlink * This,
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchor);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
- IAccessibleHyperlink * This,
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchorTarget);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_startIndex )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *index);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_endIndex )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *index);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_valid )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ boolean *valid);
-
- END_INTERFACE
- } IAccessibleHyperlinkVtbl;
-
- interface IAccessibleHyperlink
- {
- CONST_VTBL struct IAccessibleHyperlinkVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleHyperlink_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleHyperlink_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleHyperlink_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleHyperlink_nActions(This,nActions) \
- ( (This)->lpVtbl -> nActions(This,nActions) )
-
-#define IAccessibleHyperlink_doAction(This,actionIndex) \
- ( (This)->lpVtbl -> doAction(This,actionIndex) )
-
-#define IAccessibleHyperlink_get_description(This,actionIndex,description) \
- ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
-
-#define IAccessibleHyperlink_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
- ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
-
-#define IAccessibleHyperlink_get_name(This,actionIndex,name) \
- ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
-
-#define IAccessibleHyperlink_get_localizedName(This,actionIndex,localizedName) \
- ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
-
-
-#define IAccessibleHyperlink_get_anchor(This,index,anchor) \
- ( (This)->lpVtbl -> get_anchor(This,index,anchor) )
-
-#define IAccessibleHyperlink_get_anchorTarget(This,index,anchorTarget) \
- ( (This)->lpVtbl -> get_anchorTarget(This,index,anchorTarget) )
-
-#define IAccessibleHyperlink_get_startIndex(This,index) \
- ( (This)->lpVtbl -> get_startIndex(This,index) )
-
-#define IAccessibleHyperlink_get_endIndex(This,index) \
- ( (This)->lpVtbl -> get_endIndex(This,index) )
-
-#define IAccessibleHyperlink_get_valid(This,valid) \
- ( (This)->lpVtbl -> get_valid(This,valid) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleHyperlink_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
-void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_i.c
deleted file mode 100644
index f668740e0b..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleHyperlink,0x01C20F2B,0x3DD2,0x400f,0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_p.c
deleted file mode 100644
index 4cf0a1333c..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHyperlink_p.c
+++ /dev/null
@@ -1,1113 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:57 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleHyperlink.h"
-
-#define TYPE_FORMAT_STRING_SIZE 997
-#define PROC_FORMAT_STRING_SIZE 203
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleHyperlink_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING AccessibleHyperlink__MIDL_TypeFormatString;
-extern const AccessibleHyperlink_MIDL_PROC_FORMAT_STRING AccessibleHyperlink__MIDL_ProcFormatString;
-extern const AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING AccessibleHyperlink__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleHyperlink_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleHyperlink_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleHyperlink_MIDL_PROC_FORMAT_STRING AccessibleHyperlink__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_anchor */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x9 ), /* 9 */
-/* 8 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 10 */ NdrFcShort( 0x8 ), /* 8 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 26 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter anchor */
-
-/* 32 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ NdrFcShort( 0x3d2 ), /* Type Offset=978 */
-
- /* Return value */
-
-/* 38 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_anchorTarget */
-
-/* 44 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 46 */ NdrFcLong( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0xa ), /* 10 */
-/* 52 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 54 */ NdrFcShort( 0x8 ), /* 8 */
-/* 56 */ NdrFcShort( 0x8 ), /* 8 */
-/* 58 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 60 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 62 */ NdrFcShort( 0x1 ), /* 1 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 70 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 72 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter anchorTarget */
-
-/* 76 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 78 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 80 */ NdrFcShort( 0x3d2 ), /* Type Offset=978 */
-
- /* Return value */
-
-/* 82 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_startIndex */
-
-/* 88 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 90 */ NdrFcLong( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0xb ), /* 11 */
-/* 96 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x24 ), /* 36 */
-/* 102 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 104 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-/* 108 */ NdrFcShort( 0x0 ), /* 0 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 114 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_endIndex */
-
-/* 126 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 128 */ NdrFcLong( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0xc ), /* 12 */
-/* 134 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x24 ), /* 36 */
-/* 140 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 142 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-/* 146 */ NdrFcShort( 0x0 ), /* 0 */
-/* 148 */ NdrFcShort( 0x0 ), /* 0 */
-/* 150 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 152 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 154 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 156 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 158 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 160 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_valid */
-
-/* 164 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 166 */ NdrFcLong( 0x0 ), /* 0 */
-/* 170 */ NdrFcShort( 0xd ), /* 13 */
-/* 172 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 174 */ NdrFcShort( 0x0 ), /* 0 */
-/* 176 */ NdrFcShort( 0x21 ), /* 33 */
-/* 178 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 180 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 182 */ NdrFcShort( 0x0 ), /* 0 */
-/* 184 */ NdrFcShort( 0x0 ), /* 0 */
-/* 186 */ NdrFcShort( 0x0 ), /* 0 */
-/* 188 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter valid */
-
-/* 190 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 192 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 194 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 196 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 198 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 200 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING AccessibleHyperlink__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x3ce ), /* Offset= 974 (978) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0x3b6 ), /* Offset= 950 (958) */
-/* 10 */
- 0x2b, /* FC_NON_ENCAPSULATED_UNION */
- 0x9, /* FC_ULONG */
-/* 12 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 14 */ NdrFcShort( 0xfff8 ), /* -8 */
-/* 16 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 18 */ NdrFcShort( 0x2 ), /* Offset= 2 (20) */
-/* 20 */ NdrFcShort( 0x10 ), /* 16 */
-/* 22 */ NdrFcShort( 0x2f ), /* 47 */
-/* 24 */ NdrFcLong( 0x14 ), /* 20 */
-/* 28 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 30 */ NdrFcLong( 0x3 ), /* 3 */
-/* 34 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 36 */ NdrFcLong( 0x11 ), /* 17 */
-/* 40 */ NdrFcShort( 0x8001 ), /* Simple arm type: FC_BYTE */
-/* 42 */ NdrFcLong( 0x2 ), /* 2 */
-/* 46 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 48 */ NdrFcLong( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x800a ), /* Simple arm type: FC_FLOAT */
-/* 54 */ NdrFcLong( 0x5 ), /* 5 */
-/* 58 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 60 */ NdrFcLong( 0xb ), /* 11 */
-/* 64 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 66 */ NdrFcLong( 0xa ), /* 10 */
-/* 70 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 72 */ NdrFcLong( 0x6 ), /* 6 */
-/* 76 */ NdrFcShort( 0xe8 ), /* Offset= 232 (308) */
-/* 78 */ NdrFcLong( 0x7 ), /* 7 */
-/* 82 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 84 */ NdrFcLong( 0x8 ), /* 8 */
-/* 88 */ NdrFcShort( 0xe2 ), /* Offset= 226 (314) */
-/* 90 */ NdrFcLong( 0xd ), /* 13 */
-/* 94 */ NdrFcShort( 0xf6 ), /* Offset= 246 (340) */
-/* 96 */ NdrFcLong( 0x9 ), /* 9 */
-/* 100 */ NdrFcShort( 0x102 ), /* Offset= 258 (358) */
-/* 102 */ NdrFcLong( 0x2000 ), /* 8192 */
-/* 106 */ NdrFcShort( 0x10e ), /* Offset= 270 (376) */
-/* 108 */ NdrFcLong( 0x24 ), /* 36 */
-/* 112 */ NdrFcShort( 0x304 ), /* Offset= 772 (884) */
-/* 114 */ NdrFcLong( 0x4024 ), /* 16420 */
-/* 118 */ NdrFcShort( 0x2fe ), /* Offset= 766 (884) */
-/* 120 */ NdrFcLong( 0x4011 ), /* 16401 */
-/* 124 */ NdrFcShort( 0x2fc ), /* Offset= 764 (888) */
-/* 126 */ NdrFcLong( 0x4002 ), /* 16386 */
-/* 130 */ NdrFcShort( 0x2fa ), /* Offset= 762 (892) */
-/* 132 */ NdrFcLong( 0x4003 ), /* 16387 */
-/* 136 */ NdrFcShort( 0x2f8 ), /* Offset= 760 (896) */
-/* 138 */ NdrFcLong( 0x4014 ), /* 16404 */
-/* 142 */ NdrFcShort( 0x2f6 ), /* Offset= 758 (900) */
-/* 144 */ NdrFcLong( 0x4004 ), /* 16388 */
-/* 148 */ NdrFcShort( 0x2f4 ), /* Offset= 756 (904) */
-/* 150 */ NdrFcLong( 0x4005 ), /* 16389 */
-/* 154 */ NdrFcShort( 0x2f2 ), /* Offset= 754 (908) */
-/* 156 */ NdrFcLong( 0x400b ), /* 16395 */
-/* 160 */ NdrFcShort( 0x2dc ), /* Offset= 732 (892) */
-/* 162 */ NdrFcLong( 0x400a ), /* 16394 */
-/* 166 */ NdrFcShort( 0x2da ), /* Offset= 730 (896) */
-/* 168 */ NdrFcLong( 0x4006 ), /* 16390 */
-/* 172 */ NdrFcShort( 0x2e4 ), /* Offset= 740 (912) */
-/* 174 */ NdrFcLong( 0x4007 ), /* 16391 */
-/* 178 */ NdrFcShort( 0x2da ), /* Offset= 730 (908) */
-/* 180 */ NdrFcLong( 0x4008 ), /* 16392 */
-/* 184 */ NdrFcShort( 0x2dc ), /* Offset= 732 (916) */
-/* 186 */ NdrFcLong( 0x400d ), /* 16397 */
-/* 190 */ NdrFcShort( 0x2da ), /* Offset= 730 (920) */
-/* 192 */ NdrFcLong( 0x4009 ), /* 16393 */
-/* 196 */ NdrFcShort( 0x2d8 ), /* Offset= 728 (924) */
-/* 198 */ NdrFcLong( 0x6000 ), /* 24576 */
-/* 202 */ NdrFcShort( 0x2d6 ), /* Offset= 726 (928) */
-/* 204 */ NdrFcLong( 0x400c ), /* 16396 */
-/* 208 */ NdrFcShort( 0x2d4 ), /* Offset= 724 (932) */
-/* 210 */ NdrFcLong( 0x10 ), /* 16 */
-/* 214 */ NdrFcShort( 0x8002 ), /* Simple arm type: FC_CHAR */
-/* 216 */ NdrFcLong( 0x12 ), /* 18 */
-/* 220 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 222 */ NdrFcLong( 0x13 ), /* 19 */
-/* 226 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 228 */ NdrFcLong( 0x15 ), /* 21 */
-/* 232 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 234 */ NdrFcLong( 0x16 ), /* 22 */
-/* 238 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 240 */ NdrFcLong( 0x17 ), /* 23 */
-/* 244 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 246 */ NdrFcLong( 0xe ), /* 14 */
-/* 250 */ NdrFcShort( 0x2b2 ), /* Offset= 690 (940) */
-/* 252 */ NdrFcLong( 0x400e ), /* 16398 */
-/* 256 */ NdrFcShort( 0x2b6 ), /* Offset= 694 (950) */
-/* 258 */ NdrFcLong( 0x4010 ), /* 16400 */
-/* 262 */ NdrFcShort( 0x2b4 ), /* Offset= 692 (954) */
-/* 264 */ NdrFcLong( 0x4012 ), /* 16402 */
-/* 268 */ NdrFcShort( 0x270 ), /* Offset= 624 (892) */
-/* 270 */ NdrFcLong( 0x4013 ), /* 16403 */
-/* 274 */ NdrFcShort( 0x26e ), /* Offset= 622 (896) */
-/* 276 */ NdrFcLong( 0x4015 ), /* 16405 */
-/* 280 */ NdrFcShort( 0x26c ), /* Offset= 620 (900) */
-/* 282 */ NdrFcLong( 0x4016 ), /* 16406 */
-/* 286 */ NdrFcShort( 0x262 ), /* Offset= 610 (896) */
-/* 288 */ NdrFcLong( 0x4017 ), /* 16407 */
-/* 292 */ NdrFcShort( 0x25c ), /* Offset= 604 (896) */
-/* 294 */ NdrFcLong( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* Offset= 0 (298) */
-/* 300 */ NdrFcLong( 0x1 ), /* 1 */
-/* 304 */ NdrFcShort( 0x0 ), /* Offset= 0 (304) */
-/* 306 */ NdrFcShort( 0xffff ), /* Offset= -1 (305) */
-/* 308 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 310 */ NdrFcShort( 0x8 ), /* 8 */
-/* 312 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 314 */
- 0x13, 0x0, /* FC_OP */
-/* 316 */ NdrFcShort( 0xe ), /* Offset= 14 (330) */
-/* 318 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 320 */ NdrFcShort( 0x2 ), /* 2 */
-/* 322 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 324 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 326 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 328 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 330 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 332 */ NdrFcShort( 0x8 ), /* 8 */
-/* 334 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (318) */
-/* 336 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 338 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 340 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 342 */ NdrFcLong( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-/* 348 */ NdrFcShort( 0x0 ), /* 0 */
-/* 350 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 352 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 354 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 356 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 358 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 360 */ NdrFcLong( 0x20400 ), /* 132096 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-/* 366 */ NdrFcShort( 0x0 ), /* 0 */
-/* 368 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 370 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 372 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 374 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 376 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 378 */ NdrFcShort( 0x2 ), /* Offset= 2 (380) */
-/* 380 */
- 0x13, 0x0, /* FC_OP */
-/* 382 */ NdrFcShort( 0x1e4 ), /* Offset= 484 (866) */
-/* 384 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x89, /* 137 */
-/* 386 */ NdrFcShort( 0x20 ), /* 32 */
-/* 388 */ NdrFcShort( 0xa ), /* 10 */
-/* 390 */ NdrFcLong( 0x8 ), /* 8 */
-/* 394 */ NdrFcShort( 0x50 ), /* Offset= 80 (474) */
-/* 396 */ NdrFcLong( 0xd ), /* 13 */
-/* 400 */ NdrFcShort( 0x70 ), /* Offset= 112 (512) */
-/* 402 */ NdrFcLong( 0x9 ), /* 9 */
-/* 406 */ NdrFcShort( 0x90 ), /* Offset= 144 (550) */
-/* 408 */ NdrFcLong( 0xc ), /* 12 */
-/* 412 */ NdrFcShort( 0xb0 ), /* Offset= 176 (588) */
-/* 414 */ NdrFcLong( 0x24 ), /* 36 */
-/* 418 */ NdrFcShort( 0x102 ), /* Offset= 258 (676) */
-/* 420 */ NdrFcLong( 0x800d ), /* 32781 */
-/* 424 */ NdrFcShort( 0x11e ), /* Offset= 286 (710) */
-/* 426 */ NdrFcLong( 0x10 ), /* 16 */
-/* 430 */ NdrFcShort( 0x138 ), /* Offset= 312 (742) */
-/* 432 */ NdrFcLong( 0x2 ), /* 2 */
-/* 436 */ NdrFcShort( 0x14e ), /* Offset= 334 (770) */
-/* 438 */ NdrFcLong( 0x3 ), /* 3 */
-/* 442 */ NdrFcShort( 0x164 ), /* Offset= 356 (798) */
-/* 444 */ NdrFcLong( 0x14 ), /* 20 */
-/* 448 */ NdrFcShort( 0x17a ), /* Offset= 378 (826) */
-/* 450 */ NdrFcShort( 0xffff ), /* Offset= -1 (449) */
-/* 452 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 454 */ NdrFcShort( 0x0 ), /* 0 */
-/* 456 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 462 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 466 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 468 */
- 0x13, 0x0, /* FC_OP */
-/* 470 */ NdrFcShort( 0xff74 ), /* Offset= -140 (330) */
-/* 472 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 474 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 476 */ NdrFcShort( 0x10 ), /* 16 */
-/* 478 */ NdrFcShort( 0x0 ), /* 0 */
-/* 480 */ NdrFcShort( 0x6 ), /* Offset= 6 (486) */
-/* 482 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 484 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 486 */
- 0x11, 0x0, /* FC_RP */
-/* 488 */ NdrFcShort( 0xffdc ), /* Offset= -36 (452) */
-/* 490 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 492 */ NdrFcShort( 0x0 ), /* 0 */
-/* 494 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 496 */ NdrFcShort( 0x0 ), /* 0 */
-/* 498 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 500 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 504 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 506 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 508 */ NdrFcShort( 0xff58 ), /* Offset= -168 (340) */
-/* 510 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 512 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 514 */ NdrFcShort( 0x10 ), /* 16 */
-/* 516 */ NdrFcShort( 0x0 ), /* 0 */
-/* 518 */ NdrFcShort( 0x6 ), /* Offset= 6 (524) */
-/* 520 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 522 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 524 */
- 0x11, 0x0, /* FC_RP */
-/* 526 */ NdrFcShort( 0xffdc ), /* Offset= -36 (490) */
-/* 528 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 534 */ NdrFcShort( 0x0 ), /* 0 */
-/* 536 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 538 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 542 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 544 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 546 */ NdrFcShort( 0xff44 ), /* Offset= -188 (358) */
-/* 548 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 550 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 552 */ NdrFcShort( 0x10 ), /* 16 */
-/* 554 */ NdrFcShort( 0x0 ), /* 0 */
-/* 556 */ NdrFcShort( 0x6 ), /* Offset= 6 (562) */
-/* 558 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 560 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 562 */
- 0x11, 0x0, /* FC_RP */
-/* 564 */ NdrFcShort( 0xffdc ), /* Offset= -36 (528) */
-/* 566 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 568 */ NdrFcShort( 0x0 ), /* 0 */
-/* 570 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 572 */ NdrFcShort( 0x0 ), /* 0 */
-/* 574 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 576 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 580 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 582 */
- 0x13, 0x0, /* FC_OP */
-/* 584 */ NdrFcShort( 0x176 ), /* Offset= 374 (958) */
-/* 586 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 588 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 590 */ NdrFcShort( 0x10 ), /* 16 */
-/* 592 */ NdrFcShort( 0x0 ), /* 0 */
-/* 594 */ NdrFcShort( 0x6 ), /* Offset= 6 (600) */
-/* 596 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 598 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 600 */
- 0x11, 0x0, /* FC_RP */
-/* 602 */ NdrFcShort( 0xffdc ), /* Offset= -36 (566) */
-/* 604 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 606 */ NdrFcLong( 0x2f ), /* 47 */
-/* 610 */ NdrFcShort( 0x0 ), /* 0 */
-/* 612 */ NdrFcShort( 0x0 ), /* 0 */
-/* 614 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 616 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 618 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 620 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 622 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 624 */ NdrFcShort( 0x1 ), /* 1 */
-/* 626 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 628 */ NdrFcShort( 0x4 ), /* 4 */
-/* 630 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 632 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 634 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 636 */ NdrFcShort( 0x18 ), /* 24 */
-/* 638 */ NdrFcShort( 0x0 ), /* 0 */
-/* 640 */ NdrFcShort( 0xa ), /* Offset= 10 (650) */
-/* 642 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 644 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 646 */ NdrFcShort( 0xffd6 ), /* Offset= -42 (604) */
-/* 648 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 650 */
- 0x13, 0x0, /* FC_OP */
-/* 652 */ NdrFcShort( 0xffe2 ), /* Offset= -30 (622) */
-/* 654 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 656 */ NdrFcShort( 0x0 ), /* 0 */
-/* 658 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 660 */ NdrFcShort( 0x0 ), /* 0 */
-/* 662 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 664 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 668 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 670 */
- 0x13, 0x0, /* FC_OP */
-/* 672 */ NdrFcShort( 0xffda ), /* Offset= -38 (634) */
-/* 674 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 676 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 678 */ NdrFcShort( 0x10 ), /* 16 */
-/* 680 */ NdrFcShort( 0x0 ), /* 0 */
-/* 682 */ NdrFcShort( 0x6 ), /* Offset= 6 (688) */
-/* 684 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 686 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 688 */
- 0x11, 0x0, /* FC_RP */
-/* 690 */ NdrFcShort( 0xffdc ), /* Offset= -36 (654) */
-/* 692 */
- 0x1d, /* FC_SMFARRAY */
- 0x0, /* 0 */
-/* 694 */ NdrFcShort( 0x8 ), /* 8 */
-/* 696 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 698 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 700 */ NdrFcShort( 0x10 ), /* 16 */
-/* 702 */ 0x8, /* FC_LONG */
- 0x6, /* FC_SHORT */
-/* 704 */ 0x6, /* FC_SHORT */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 706 */ 0x0, /* 0 */
- NdrFcShort( 0xfff1 ), /* Offset= -15 (692) */
- 0x5b, /* FC_END */
-/* 710 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 712 */ NdrFcShort( 0x20 ), /* 32 */
-/* 714 */ NdrFcShort( 0x0 ), /* 0 */
-/* 716 */ NdrFcShort( 0xa ), /* Offset= 10 (726) */
-/* 718 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 720 */ 0x36, /* FC_POINTER */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 722 */ 0x0, /* 0 */
- NdrFcShort( 0xffe7 ), /* Offset= -25 (698) */
- 0x5b, /* FC_END */
-/* 726 */
- 0x11, 0x0, /* FC_RP */
-/* 728 */ NdrFcShort( 0xff12 ), /* Offset= -238 (490) */
-/* 730 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 732 */ NdrFcShort( 0x1 ), /* 1 */
-/* 734 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 736 */ NdrFcShort( 0x0 ), /* 0 */
-/* 738 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 740 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 742 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 744 */ NdrFcShort( 0x10 ), /* 16 */
-/* 746 */ NdrFcShort( 0x0 ), /* 0 */
-/* 748 */ NdrFcShort( 0x6 ), /* Offset= 6 (754) */
-/* 750 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 752 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 754 */
- 0x13, 0x0, /* FC_OP */
-/* 756 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (730) */
-/* 758 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 760 */ NdrFcShort( 0x2 ), /* 2 */
-/* 762 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 764 */ NdrFcShort( 0x0 ), /* 0 */
-/* 766 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 768 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 770 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 772 */ NdrFcShort( 0x10 ), /* 16 */
-/* 774 */ NdrFcShort( 0x0 ), /* 0 */
-/* 776 */ NdrFcShort( 0x6 ), /* Offset= 6 (782) */
-/* 778 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 780 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 782 */
- 0x13, 0x0, /* FC_OP */
-/* 784 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (758) */
-/* 786 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 788 */ NdrFcShort( 0x4 ), /* 4 */
-/* 790 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 792 */ NdrFcShort( 0x0 ), /* 0 */
-/* 794 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 796 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 798 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 800 */ NdrFcShort( 0x10 ), /* 16 */
-/* 802 */ NdrFcShort( 0x0 ), /* 0 */
-/* 804 */ NdrFcShort( 0x6 ), /* Offset= 6 (810) */
-/* 806 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 808 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 810 */
- 0x13, 0x0, /* FC_OP */
-/* 812 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (786) */
-/* 814 */
- 0x1b, /* FC_CARRAY */
- 0x7, /* 7 */
-/* 816 */ NdrFcShort( 0x8 ), /* 8 */
-/* 818 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 820 */ NdrFcShort( 0x0 ), /* 0 */
-/* 822 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 824 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 826 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 828 */ NdrFcShort( 0x10 ), /* 16 */
-/* 830 */ NdrFcShort( 0x0 ), /* 0 */
-/* 832 */ NdrFcShort( 0x6 ), /* Offset= 6 (838) */
-/* 834 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 836 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 838 */
- 0x13, 0x0, /* FC_OP */
-/* 840 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (814) */
-/* 842 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 844 */ NdrFcShort( 0x8 ), /* 8 */
-/* 846 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 848 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 850 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 852 */ NdrFcShort( 0x8 ), /* 8 */
-/* 854 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 856 */ NdrFcShort( 0xffc8 ), /* -56 */
-/* 858 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 860 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 862 */ NdrFcShort( 0xffec ), /* Offset= -20 (842) */
-/* 864 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 866 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 868 */ NdrFcShort( 0x38 ), /* 56 */
-/* 870 */ NdrFcShort( 0xffec ), /* Offset= -20 (850) */
-/* 872 */ NdrFcShort( 0x0 ), /* Offset= 0 (872) */
-/* 874 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 876 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 878 */ 0x40, /* FC_STRUCTPAD4 */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 880 */ 0x0, /* 0 */
- NdrFcShort( 0xfe0f ), /* Offset= -497 (384) */
- 0x5b, /* FC_END */
-/* 884 */
- 0x13, 0x0, /* FC_OP */
-/* 886 */ NdrFcShort( 0xff04 ), /* Offset= -252 (634) */
-/* 888 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 890 */ 0x1, /* FC_BYTE */
- 0x5c, /* FC_PAD */
-/* 892 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 894 */ 0x6, /* FC_SHORT */
- 0x5c, /* FC_PAD */
-/* 896 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 898 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 900 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 902 */ 0xb, /* FC_HYPER */
- 0x5c, /* FC_PAD */
-/* 904 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 906 */ 0xa, /* FC_FLOAT */
- 0x5c, /* FC_PAD */
-/* 908 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 910 */ 0xc, /* FC_DOUBLE */
- 0x5c, /* FC_PAD */
-/* 912 */
- 0x13, 0x0, /* FC_OP */
-/* 914 */ NdrFcShort( 0xfda2 ), /* Offset= -606 (308) */
-/* 916 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 918 */ NdrFcShort( 0xfda4 ), /* Offset= -604 (314) */
-/* 920 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 922 */ NdrFcShort( 0xfdba ), /* Offset= -582 (340) */
-/* 924 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 926 */ NdrFcShort( 0xfdc8 ), /* Offset= -568 (358) */
-/* 928 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 930 */ NdrFcShort( 0xfdd6 ), /* Offset= -554 (376) */
-/* 932 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 934 */ NdrFcShort( 0x2 ), /* Offset= 2 (936) */
-/* 936 */
- 0x13, 0x0, /* FC_OP */
-/* 938 */ NdrFcShort( 0x14 ), /* Offset= 20 (958) */
-/* 940 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 942 */ NdrFcShort( 0x10 ), /* 16 */
-/* 944 */ 0x6, /* FC_SHORT */
- 0x1, /* FC_BYTE */
-/* 946 */ 0x1, /* FC_BYTE */
- 0x8, /* FC_LONG */
-/* 948 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 950 */
- 0x13, 0x0, /* FC_OP */
-/* 952 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (940) */
-/* 954 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 956 */ 0x2, /* FC_CHAR */
- 0x5c, /* FC_PAD */
-/* 958 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x7, /* 7 */
-/* 960 */ NdrFcShort( 0x20 ), /* 32 */
-/* 962 */ NdrFcShort( 0x0 ), /* 0 */
-/* 964 */ NdrFcShort( 0x0 ), /* Offset= 0 (964) */
-/* 966 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 968 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 970 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 972 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 974 */ NdrFcShort( 0xfc3c ), /* Offset= -964 (10) */
-/* 976 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 978 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 980 */ NdrFcShort( 0x0 ), /* 0 */
-/* 982 */ NdrFcShort( 0x18 ), /* 24 */
-/* 984 */ NdrFcShort( 0x0 ), /* 0 */
-/* 986 */ NdrFcShort( 0xfc2c ), /* Offset= -980 (6) */
-/* 988 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 990 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 992 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 994 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- VARIANT_UserSize
- ,VARIANT_UserMarshal
- ,VARIANT_UserUnmarshal
- ,VARIANT_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleAction, ver. 0.0,
- GUID={0xB70D9F59,0x3B5A,0x4dba,{0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5}} */
-
-
-/* Object interface: IAccessibleHyperlink, ver. 0.0,
- GUID={0x01C20F2B,0x3DD2,0x400f,{0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleHyperlink_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 44,
- 88,
- 126,
- 164
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleHyperlink_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleHyperlink__MIDL_ProcFormatString.Format,
- &IAccessibleHyperlink_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleHyperlink_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleHyperlink__MIDL_ProcFormatString.Format,
- &IAccessibleHyperlink_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(14) _IAccessibleHyperlinkProxyVtbl =
-{
- &IAccessibleHyperlink_ProxyInfo,
- &IID_IAccessibleHyperlink,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IAccessibleAction::nActions */ ,
- 0 /* IAccessibleAction::doAction */ ,
- 0 /* IAccessibleAction::get_description */ ,
- 0 /* IAccessibleAction::get_keyBinding */ ,
- 0 /* IAccessibleAction::get_name */ ,
- 0 /* IAccessibleAction::get_localizedName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_anchor */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_anchorTarget */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_startIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_endIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_valid */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessibleHyperlink_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessibleHyperlinkStubVtbl =
-{
- &IID_IAccessibleHyperlink,
- &IAccessibleHyperlink_ServerInfo,
- 14,
- &IAccessibleHyperlink_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleHyperlink__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleHyperlink_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleHyperlinkProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleHyperlink_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleHyperlinkStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleHyperlink_InterfaceNamesList[] =
-{
- "IAccessibleHyperlink",
- 0
-};
-
-const IID * const _AccessibleHyperlink_BaseIIDList[] =
-{
- &IID_IAccessibleAction,
- 0
-};
-
-
-#define _AccessibleHyperlink_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleHyperlink, pIID, n)
-
-int __stdcall _AccessibleHyperlink_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleHyperlink_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleHyperlink_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleHyperlink_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleHyperlink_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleHyperlink_InterfaceNamesList,
- (const IID ** ) & _AccessibleHyperlink_BaseIIDList,
- & _AccessibleHyperlink_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext.h
deleted file mode 100644
index 91cb85c69e..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext.h
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleHypertext_h__
-#define __AccessibleHypertext_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleHypertext_FWD_DEFINED__
-#define __IAccessibleHypertext_FWD_DEFINED__
-typedef interface IAccessibleHypertext IAccessibleHypertext;
-#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleText.h"
-#include "AccessibleHyperlink.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleHypertext_INTERFACE_DEFINED__
-#define __IAccessibleHypertext_INTERFACE_DEFINED__
-
-/* interface IAccessibleHypertext */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleHypertext;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("6B4F8BBF-F1F2-418a-B35E-A195BC4103B9")
- IAccessibleHypertext : public IAccessibleText
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nHyperlinks(
- /* [retval][out] */ long *hyperlinkCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlink(
- /* [in] */ long index,
- /* [retval][out] */ IAccessibleHyperlink **hyperlink) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinkIndex(
- /* [in] */ long charIndex,
- /* [retval][out] */ long *hyperlinkIndex) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleHypertextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleHypertext * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleHypertext * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleHypertext * This);
-
- HRESULT ( STDMETHODCALLTYPE *addSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *nSelections);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
- IAccessibleHypertext * This,
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
- IAccessibleHypertext * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *removeSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex);
-
- HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *setSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *nCharacters);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
- IAccessibleHypertext * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
- IAccessibleHypertext * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
- IAccessibleHypertext * This,
- /* [retval][out] */ IA2TextSegment *newText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
- IAccessibleHypertext * This,
- /* [retval][out] */ IA2TextSegment *oldText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *hyperlinkCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
- IAccessibleHypertext * This,
- /* [in] */ long index,
- /* [retval][out] */ IAccessibleHyperlink **hyperlink);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
- IAccessibleHypertext * This,
- /* [in] */ long charIndex,
- /* [retval][out] */ long *hyperlinkIndex);
-
- END_INTERFACE
- } IAccessibleHypertextVtbl;
-
- interface IAccessibleHypertext
- {
- CONST_VTBL struct IAccessibleHypertextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleHypertext_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleHypertext_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleHypertext_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleHypertext_addSelection(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
- ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
-
-#define IAccessibleHypertext_get_caretOffset(This,offset) \
- ( (This)->lpVtbl -> get_caretOffset(This,offset) )
-
-#define IAccessibleHypertext_get_characterExtents(This,offset,coordType,x,y,width,height) \
- ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
-
-#define IAccessibleHypertext_get_nSelections(This,nSelections) \
- ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
-
-#define IAccessibleHypertext_get_offsetAtPoint(This,x,y,coordType,offset) \
- ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
-
-#define IAccessibleHypertext_get_selection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_text(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_removeSelection(This,selectionIndex) \
- ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
-
-#define IAccessibleHypertext_setCaretOffset(This,offset) \
- ( (This)->lpVtbl -> setCaretOffset(This,offset) )
-
-#define IAccessibleHypertext_setSelection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_nCharacters(This,nCharacters) \
- ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
-
-#define IAccessibleHypertext_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
- ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
-
-#define IAccessibleHypertext_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
-
-#define IAccessibleHypertext_get_newText(This,newText) \
- ( (This)->lpVtbl -> get_newText(This,newText) )
-
-#define IAccessibleHypertext_get_oldText(This,oldText) \
- ( (This)->lpVtbl -> get_oldText(This,oldText) )
-
-
-#define IAccessibleHypertext_get_nHyperlinks(This,hyperlinkCount) \
- ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
-
-#define IAccessibleHypertext_get_hyperlink(This,index,hyperlink) \
- ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
-
-#define IAccessibleHypertext_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
- ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleHypertext_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_i.c
deleted file mode 100644
index fbc3ef133a..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext,0x6B4F8BBF,0xF1F2,0x418a,0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_p.c
deleted file mode 100644
index e4df1ac6df..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleHypertext_p.c
+++ /dev/null
@@ -1,454 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleHypertext.h"
-
-#define TYPE_FORMAT_STRING_SIZE 29
-#define PROC_FORMAT_STRING_SIZE 127
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleHypertext_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleHypertext_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleHypertext_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleHypertext_MIDL_TYPE_FORMAT_STRING AccessibleHypertext__MIDL_TypeFormatString;
-extern const AccessibleHypertext_MIDL_PROC_FORMAT_STRING AccessibleHypertext__MIDL_ProcFormatString;
-extern const AccessibleHypertext_MIDL_EXPR_FORMAT_STRING AccessibleHypertext__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleHypertext_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleHypertext_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleHypertext_MIDL_PROC_FORMAT_STRING AccessibleHypertext__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_nHyperlinks */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x16 ), /* 22 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter hyperlinkCount */
-
-/* 26 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_hyperlink */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x17 ), /* 23 */
-/* 46 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 54 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 64 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter hyperlink */
-
-/* 70 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Return value */
-
-/* 76 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 78 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_hyperlinkIndex */
-
-/* 82 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 84 */ NdrFcLong( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x18 ), /* 24 */
-/* 90 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 92 */ NdrFcShort( 0x8 ), /* 8 */
-/* 94 */ NdrFcShort( 0x24 ), /* 36 */
-/* 96 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 98 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter charIndex */
-
-/* 108 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 110 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter hyperlinkIndex */
-
-/* 114 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleHypertext_MIDL_TYPE_FORMAT_STRING AccessibleHypertext__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 12 */ NdrFcLong( 0x1c20f2b ), /* 29495083 */
-/* 16 */ NdrFcShort( 0x3dd2 ), /* 15826 */
-/* 18 */ NdrFcShort( 0x400f ), /* 16399 */
-/* 20 */ 0x94, /* 148 */
- 0x9f, /* 159 */
-/* 22 */ 0xad, /* 173 */
- 0x0, /* 0 */
-/* 24 */ 0xbd, /* 189 */
- 0xab, /* 171 */
-/* 26 */ 0x1d, /* 29 */
- 0x41, /* 65 */
-
- 0x0
- }
- };
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleText, ver. 0.0,
- GUID={0x24FD2FFB,0x3AAD,0x4a08,{0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B}} */
-
-
-/* Object interface: IAccessibleHypertext, ver. 0.0,
- GUID={0x6B4F8BBF,0xF1F2,0x418a,{0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleHypertext_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 38,
- 82
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleHypertext_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleHypertext__MIDL_ProcFormatString.Format,
- &IAccessibleHypertext_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleHypertext_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleHypertext__MIDL_ProcFormatString.Format,
- &IAccessibleHypertext_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(25) _IAccessibleHypertextProxyVtbl =
-{
- &IAccessibleHypertext_ProxyInfo,
- &IID_IAccessibleHypertext,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IAccessibleText::addSelection */ ,
- 0 /* IAccessibleText::get_attributes */ ,
- 0 /* IAccessibleText::get_caretOffset */ ,
- 0 /* IAccessibleText::get_characterExtents */ ,
- 0 /* IAccessibleText::get_nSelections */ ,
- 0 /* IAccessibleText::get_offsetAtPoint */ ,
- 0 /* IAccessibleText::get_selection */ ,
- 0 /* IAccessibleText::get_text */ ,
- 0 /* IAccessibleText::get_textBeforeOffset */ ,
- 0 /* IAccessibleText::get_textAfterOffset */ ,
- 0 /* IAccessibleText::get_textAtOffset */ ,
- 0 /* IAccessibleText::removeSelection */ ,
- 0 /* IAccessibleText::setCaretOffset */ ,
- 0 /* IAccessibleText::setSelection */ ,
- 0 /* IAccessibleText::get_nCharacters */ ,
- 0 /* IAccessibleText::scrollSubstringTo */ ,
- 0 /* IAccessibleText::scrollSubstringToPoint */ ,
- 0 /* IAccessibleText::get_newText */ ,
- 0 /* IAccessibleText::get_oldText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_nHyperlinks */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_hyperlink */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_hyperlinkIndex */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessibleHypertext_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessibleHypertextStubVtbl =
-{
- &IID_IAccessibleHypertext,
- &IAccessibleHypertext_ServerInfo,
- 25,
- &IAccessibleHypertext_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleHypertext__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleHypertext_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleHypertextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleHypertext_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleHypertextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleHypertext_InterfaceNamesList[] =
-{
- "IAccessibleHypertext",
- 0
-};
-
-const IID * const _AccessibleHypertext_BaseIIDList[] =
-{
- &IID_IAccessibleText,
- 0
-};
-
-
-#define _AccessibleHypertext_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleHypertext, pIID, n)
-
-int __stdcall _AccessibleHypertext_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleHypertext_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleHypertext_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleHypertext_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleHypertext_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleHypertext_InterfaceNamesList,
- (const IID ** ) & _AccessibleHypertext_BaseIIDList,
- & _AccessibleHypertext_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage.h
deleted file mode 100644
index a01e4dc0b6..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage.h
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleImage_h__
-#define __AccessibleImage_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleImage_FWD_DEFINED__
-#define __IAccessibleImage_FWD_DEFINED__
-typedef interface IAccessibleImage IAccessibleImage;
-#endif /* __IAccessibleImage_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleImage_INTERFACE_DEFINED__
-#define __IAccessibleImage_INTERFACE_DEFINED__
-
-/* interface IAccessibleImage */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleImage;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE")
- IAccessibleImage : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imagePosition(
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [out] */ long *x,
- /* [retval][out] */ long *y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imageSize(
- /* [out] */ long *height,
- /* [retval][out] */ long *width) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleImageVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleImage * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleImage * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleImage * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleImage * This,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imagePosition )(
- IAccessibleImage * This,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [out] */ long *x,
- /* [retval][out] */ long *y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageSize )(
- IAccessibleImage * This,
- /* [out] */ long *height,
- /* [retval][out] */ long *width);
-
- END_INTERFACE
- } IAccessibleImageVtbl;
-
- interface IAccessibleImage
- {
- CONST_VTBL struct IAccessibleImageVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleImage_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleImage_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleImage_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleImage_get_description(This,description) \
- ( (This)->lpVtbl -> get_description(This,description) )
-
-#define IAccessibleImage_get_imagePosition(This,coordinateType,x,y) \
- ( (This)->lpVtbl -> get_imagePosition(This,coordinateType,x,y) )
-
-#define IAccessibleImage_get_imageSize(This,height,width) \
- ( (This)->lpVtbl -> get_imageSize(This,height,width) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleImage_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_i.c
deleted file mode 100644
index 1afecd10b5..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleImage,0xFE5ABB3D,0x615E,0x4f7b,0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_p.c
deleted file mode 100644
index 4b6aff7ba5..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleImage_p.c
+++ /dev/null
@@ -1,414 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleImage.h"
-
-#define TYPE_FORMAT_STRING_SIZE 47
-#define PROC_FORMAT_STRING_SIZE 133
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleImage_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleImage_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleImage_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleImage_MIDL_TYPE_FORMAT_STRING AccessibleImage__MIDL_TypeFormatString;
-extern const AccessibleImage_MIDL_PROC_FORMAT_STRING AccessibleImage__MIDL_ProcFormatString;
-extern const AccessibleImage_MIDL_EXPR_FORMAT_STRING AccessibleImage__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleImage_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleImage_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleImage_MIDL_PROC_FORMAT_STRING AccessibleImage__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_description */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter description */
-
-/* 26 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_imagePosition */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 48 */ NdrFcShort( 0x6 ), /* 6 */
-/* 50 */ NdrFcShort( 0x40 ), /* 64 */
-/* 52 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 54 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter coordinateType */
-
-/* 64 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 70 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 76 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 78 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 82 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 84 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_imageSize */
-
-/* 88 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 90 */ NdrFcLong( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x5 ), /* 5 */
-/* 96 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x40 ), /* 64 */
-/* 102 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 104 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-/* 108 */ NdrFcShort( 0x0 ), /* 0 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter height */
-
-/* 114 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter width */
-
-/* 120 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 122 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleImage_MIDL_TYPE_FORMAT_STRING AccessibleImage__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x8 ), /* 8 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-/* 42 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 44 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleImage, ver. 0.0,
- GUID={0xFE5ABB3D,0x615E,0x4f7b,{0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleImage_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 88
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleImage_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleImage__MIDL_ProcFormatString.Format,
- &IAccessibleImage_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleImage_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleImage__MIDL_ProcFormatString.Format,
- &IAccessibleImage_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(6) _IAccessibleImageProxyVtbl =
-{
- &IAccessibleImage_ProxyInfo,
- &IID_IAccessibleImage,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_description */ ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_imagePosition */ ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_imageSize */
-};
-
-const CInterfaceStubVtbl _IAccessibleImageStubVtbl =
-{
- &IID_IAccessibleImage,
- &IAccessibleImage_ServerInfo,
- 6,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleImage__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleImage_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleImageProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleImage_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleImageStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleImage_InterfaceNamesList[] =
-{
- "IAccessibleImage",
- 0
-};
-
-
-#define _AccessibleImage_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleImage, pIID, n)
-
-int __stdcall _AccessibleImage_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleImage_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleImage_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleImage_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleImage_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleImage_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleImage_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation.h
deleted file mode 100644
index e153cd8476..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation.h
+++ /dev/null
@@ -1,244 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleRelation_h__
-#define __AccessibleRelation_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleRelation_FWD_DEFINED__
-#define __IAccessibleRelation_FWD_DEFINED__
-typedef interface IAccessibleRelation IAccessibleRelation;
-#endif /* __IAccessibleRelation_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleRelation_0000_0000 */
-/* [local] */
-
-#define IA2_RELATION_CONTROLLED_BY ( L"controlledBy" )
-
-#define IA2_RELATION_CONTROLLER_FOR ( L"controllerFor" )
-
-#define IA2_RELATION_DESCRIBED_BY ( L"describedBy" )
-
-#define IA2_RELATION_DESCRIPTION_FOR ( L"descriptionFor" )
-
-#define IA2_RELATION_EMBEDDED_BY ( L"embeddedBy" )
-
-#define IA2_RELATION_EMBEDS ( L"embeds" )
-
-#define IA2_RELATION_FLOWS_FROM ( L"flowsFrom" )
-
-#define IA2_RELATION_FLOWS_TO ( L"flowsTo" )
-
-#define IA2_RELATION_LABEL_FOR ( L"labelFor" )
-
-#define IA2_RELATION_LABELED_BY ( L"labelledBy" )
-
-#define IA2_RELATION_LABELLED_BY ( L"labelledBy" )
-
-#define IA2_RELATION_MEMBER_OF ( L"memberOf" )
-
-#define IA2_RELATION_NODE_CHILD_OF ( L"nodeChildOf" )
-
-#define IA2_RELATION_PARENT_WINDOW_OF ( L"parentWindowOf" )
-
-#define IA2_RELATION_POPUP_FOR ( L"popupFor" )
-
-#define IA2_RELATION_SUBWINDOW_OF ( L"subwindowOf" )
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRelation_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRelation_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleRelation_INTERFACE_DEFINED__
-#define __IAccessibleRelation_INTERFACE_DEFINED__
-
-/* interface IAccessibleRelation */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleRelation;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("7CDF86EE-C3DA-496a-BDA4-281B336E1FDC")
- IAccessibleRelation : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationType(
- /* [retval][out] */ BSTR *relationType) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedRelationType(
- /* [retval][out] */ BSTR *localizedRelationType) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nTargets(
- /* [retval][out] */ long *nTargets) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_target(
- /* [in] */ long targetIndex,
- /* [retval][out] */ IUnknown **target) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_targets(
- /* [in] */ long maxTargets,
- /* [length_is][size_is][out] */ IUnknown **targets,
- /* [retval][out] */ long *nTargets) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleRelationVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleRelation * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleRelation * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleRelation * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationType )(
- IAccessibleRelation * This,
- /* [retval][out] */ BSTR *relationType);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedRelationType )(
- IAccessibleRelation * This,
- /* [retval][out] */ BSTR *localizedRelationType);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nTargets )(
- IAccessibleRelation * This,
- /* [retval][out] */ long *nTargets);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_target )(
- IAccessibleRelation * This,
- /* [in] */ long targetIndex,
- /* [retval][out] */ IUnknown **target);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_targets )(
- IAccessibleRelation * This,
- /* [in] */ long maxTargets,
- /* [length_is][size_is][out] */ IUnknown **targets,
- /* [retval][out] */ long *nTargets);
-
- END_INTERFACE
- } IAccessibleRelationVtbl;
-
- interface IAccessibleRelation
- {
- CONST_VTBL struct IAccessibleRelationVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleRelation_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleRelation_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleRelation_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleRelation_get_relationType(This,relationType) \
- ( (This)->lpVtbl -> get_relationType(This,relationType) )
-
-#define IAccessibleRelation_get_localizedRelationType(This,localizedRelationType) \
- ( (This)->lpVtbl -> get_localizedRelationType(This,localizedRelationType) )
-
-#define IAccessibleRelation_get_nTargets(This,nTargets) \
- ( (This)->lpVtbl -> get_nTargets(This,nTargets) )
-
-#define IAccessibleRelation_get_target(This,targetIndex,target) \
- ( (This)->lpVtbl -> get_target(This,targetIndex,target) )
-
-#define IAccessibleRelation_get_targets(This,maxTargets,targets,nTargets) \
- ( (This)->lpVtbl -> get_targets(This,maxTargets,targets,nTargets) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleRelation_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_i.c
deleted file mode 100644
index 2ab3837a27..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleRelation,0x7CDF86EE,0xC3DA,0x496a,0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_p.c
deleted file mode 100644
index e02cf7254c..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRelation_p.c
+++ /dev/null
@@ -1,520 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:58 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleRelation.h"
-
-#define TYPE_FORMAT_STRING_SIZE 95
-#define PROC_FORMAT_STRING_SIZE 209
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleRelation_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleRelation_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleRelation_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleRelation_MIDL_TYPE_FORMAT_STRING AccessibleRelation__MIDL_TypeFormatString;
-extern const AccessibleRelation_MIDL_PROC_FORMAT_STRING AccessibleRelation__MIDL_ProcFormatString;
-extern const AccessibleRelation_MIDL_EXPR_FORMAT_STRING AccessibleRelation__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleRelation_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleRelation_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleRelation_MIDL_PROC_FORMAT_STRING AccessibleRelation__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_relationType */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter relationType */
-
-/* 26 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedRelationType */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 48 */ NdrFcShort( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 54 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 56 */ NdrFcShort( 0x1 ), /* 1 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter localizedRelationType */
-
-/* 64 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 70 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nTargets */
-
-/* 76 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 78 */ NdrFcLong( 0x0 ), /* 0 */
-/* 82 */ NdrFcShort( 0x5 ), /* 5 */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ NdrFcShort( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x24 ), /* 36 */
-/* 90 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 92 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nTargets */
-
-/* 102 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 104 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_target */
-
-/* 114 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 116 */ NdrFcLong( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x6 ), /* 6 */
-/* 122 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 124 */ NdrFcShort( 0x8 ), /* 8 */
-/* 126 */ NdrFcShort( 0x8 ), /* 8 */
-/* 128 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 130 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 132 */ NdrFcShort( 0x0 ), /* 0 */
-/* 134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter targetIndex */
-
-/* 140 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 142 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 144 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter target */
-
-/* 146 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 148 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 150 */ NdrFcShort( 0x2e ), /* Type Offset=46 */
-
- /* Return value */
-
-/* 152 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 154 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 156 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_targets */
-
-/* 158 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 160 */ NdrFcLong( 0x0 ), /* 0 */
-/* 164 */ NdrFcShort( 0x7 ), /* 7 */
-/* 166 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 168 */ NdrFcShort( 0x8 ), /* 8 */
-/* 170 */ NdrFcShort( 0x24 ), /* 36 */
-/* 172 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 174 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 176 */ NdrFcShort( 0x1 ), /* 1 */
-/* 178 */ NdrFcShort( 0x0 ), /* 0 */
-/* 180 */ NdrFcShort( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxTargets */
-
-/* 184 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 186 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 188 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter targets */
-
-/* 190 */ NdrFcShort( 0x113 ), /* Flags: must size, must free, out, simple ref, */
-/* 192 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 194 */ NdrFcShort( 0x48 ), /* Type Offset=72 */
-
- /* Parameter nTargets */
-
-/* 196 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 198 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 200 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 202 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 204 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleRelation_MIDL_TYPE_FORMAT_STRING AccessibleRelation__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x8 ), /* 8 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-/* 42 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 44 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 46 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 52 */ NdrFcLong( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 62 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 64 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 66 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 68 */
- 0x11, 0x0, /* FC_RP */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 74 */ NdrFcShort( 0x0 ), /* 0 */
-/* 76 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 78 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 80 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 82 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 88 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 90 */ NdrFcShort( 0xffd8 ), /* Offset= -40 (50) */
-/* 92 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_AccessibleRelation_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleRelation, ver. 0.0,
- GUID={0x7CDF86EE,0xC3DA,0x496a,{0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleRelation_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 76,
- 114,
- 158
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleRelation_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleRelation__MIDL_ProcFormatString.Format,
- &IAccessibleRelation_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleRelation_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleRelation__MIDL_ProcFormatString.Format,
- &IAccessibleRelation_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(8) _IAccessibleRelationProxyVtbl =
-{
- &IAccessibleRelation_ProxyInfo,
- &IID_IAccessibleRelation,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_relationType */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_localizedRelationType */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_nTargets */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_target */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_targets */
-};
-
-const CInterfaceStubVtbl _IAccessibleRelationStubVtbl =
-{
- &IID_IAccessibleRelation,
- &IAccessibleRelation_ServerInfo,
- 8,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleRelation__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleRelation_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleRelationProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleRelation_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleRelationStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleRelation_InterfaceNamesList[] =
-{
- "IAccessibleRelation",
- 0
-};
-
-
-#define _AccessibleRelation_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleRelation, pIID, n)
-
-int __stdcall _AccessibleRelation_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleRelation_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleRelation_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleRelation_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleRelation_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleRelation_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleRelation_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRole.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleRole.h
deleted file mode 100644
index bee6466b7c..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleRole.h
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleRole.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleRole_h__
-#define __AccessibleRole_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-/* header files for imported files */
-#include "objidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleRole_0000_0000 */
-/* [local] */
-
-
-enum IA2Role
- { IA2_ROLE_UNKNOWN = 0,
- IA2_ROLE_CANVAS = 0x401,
- IA2_ROLE_CAPTION = ( IA2_ROLE_CANVAS + 1 ) ,
- IA2_ROLE_CHECK_MENU_ITEM = ( IA2_ROLE_CAPTION + 1 ) ,
- IA2_ROLE_COLOR_CHOOSER = ( IA2_ROLE_CHECK_MENU_ITEM + 1 ) ,
- IA2_ROLE_DATE_EDITOR = ( IA2_ROLE_COLOR_CHOOSER + 1 ) ,
- IA2_ROLE_DESKTOP_ICON = ( IA2_ROLE_DATE_EDITOR + 1 ) ,
- IA2_ROLE_DESKTOP_PANE = ( IA2_ROLE_DESKTOP_ICON + 1 ) ,
- IA2_ROLE_DIRECTORY_PANE = ( IA2_ROLE_DESKTOP_PANE + 1 ) ,
- IA2_ROLE_EDITBAR = ( IA2_ROLE_DIRECTORY_PANE + 1 ) ,
- IA2_ROLE_EMBEDDED_OBJECT = ( IA2_ROLE_EDITBAR + 1 ) ,
- IA2_ROLE_ENDNOTE = ( IA2_ROLE_EMBEDDED_OBJECT + 1 ) ,
- IA2_ROLE_FILE_CHOOSER = ( IA2_ROLE_ENDNOTE + 1 ) ,
- IA2_ROLE_FONT_CHOOSER = ( IA2_ROLE_FILE_CHOOSER + 1 ) ,
- IA2_ROLE_FOOTER = ( IA2_ROLE_FONT_CHOOSER + 1 ) ,
- IA2_ROLE_FOOTNOTE = ( IA2_ROLE_FOOTER + 1 ) ,
- IA2_ROLE_FORM = ( IA2_ROLE_FOOTNOTE + 1 ) ,
- IA2_ROLE_FRAME = ( IA2_ROLE_FORM + 1 ) ,
- IA2_ROLE_GLASS_PANE = ( IA2_ROLE_FRAME + 1 ) ,
- IA2_ROLE_HEADER = ( IA2_ROLE_GLASS_PANE + 1 ) ,
- IA2_ROLE_HEADING = ( IA2_ROLE_HEADER + 1 ) ,
- IA2_ROLE_ICON = ( IA2_ROLE_HEADING + 1 ) ,
- IA2_ROLE_IMAGE_MAP = ( IA2_ROLE_ICON + 1 ) ,
- IA2_ROLE_INPUT_METHOD_WINDOW = ( IA2_ROLE_IMAGE_MAP + 1 ) ,
- IA2_ROLE_INTERNAL_FRAME = ( IA2_ROLE_INPUT_METHOD_WINDOW + 1 ) ,
- IA2_ROLE_LABEL = ( IA2_ROLE_INTERNAL_FRAME + 1 ) ,
- IA2_ROLE_LAYERED_PANE = ( IA2_ROLE_LABEL + 1 ) ,
- IA2_ROLE_NOTE = ( IA2_ROLE_LAYERED_PANE + 1 ) ,
- IA2_ROLE_OPTION_PANE = ( IA2_ROLE_NOTE + 1 ) ,
- IA2_ROLE_PAGE = ( IA2_ROLE_OPTION_PANE + 1 ) ,
- IA2_ROLE_PARAGRAPH = ( IA2_ROLE_PAGE + 1 ) ,
- IA2_ROLE_RADIO_MENU_ITEM = ( IA2_ROLE_PARAGRAPH + 1 ) ,
- IA2_ROLE_REDUNDANT_OBJECT = ( IA2_ROLE_RADIO_MENU_ITEM + 1 ) ,
- IA2_ROLE_ROOT_PANE = ( IA2_ROLE_REDUNDANT_OBJECT + 1 ) ,
- IA2_ROLE_RULER = ( IA2_ROLE_ROOT_PANE + 1 ) ,
- IA2_ROLE_SCROLL_PANE = ( IA2_ROLE_RULER + 1 ) ,
- IA2_ROLE_SECTION = ( IA2_ROLE_SCROLL_PANE + 1 ) ,
- IA2_ROLE_SHAPE = ( IA2_ROLE_SECTION + 1 ) ,
- IA2_ROLE_SPLIT_PANE = ( IA2_ROLE_SHAPE + 1 ) ,
- IA2_ROLE_TEAR_OFF_MENU = ( IA2_ROLE_SPLIT_PANE + 1 ) ,
- IA2_ROLE_TERMINAL = ( IA2_ROLE_TEAR_OFF_MENU + 1 ) ,
- IA2_ROLE_TEXT_FRAME = ( IA2_ROLE_TERMINAL + 1 ) ,
- IA2_ROLE_TOGGLE_BUTTON = ( IA2_ROLE_TEXT_FRAME + 1 ) ,
- IA2_ROLE_VIEW_PORT = ( IA2_ROLE_TOGGLE_BUTTON + 1 ) ,
- IA2_ROLE_COMPLEMENTARY_CONTENT = ( IA2_ROLE_VIEW_PORT + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRole_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRole_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleStates.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleStates.h
deleted file mode 100644
index fbb6ff99b3..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleStates.h
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleStates.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleStates_h__
-#define __AccessibleStates_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-/* header files for imported files */
-#include "objidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleStates_0000_0000 */
-/* [local] */
-
-typedef long AccessibleStates;
-
-
-enum IA2States
- { IA2_STATE_ACTIVE = 0x1,
- IA2_STATE_ARMED = 0x2,
- IA2_STATE_DEFUNCT = 0x4,
- IA2_STATE_EDITABLE = 0x8,
- IA2_STATE_HORIZONTAL = 0x10,
- IA2_STATE_ICONIFIED = 0x20,
- IA2_STATE_INVALID_ENTRY = 0x40,
- IA2_STATE_MANAGES_DESCENDANTS = 0x80,
- IA2_STATE_MODAL = 0x100,
- IA2_STATE_MULTI_LINE = 0x200,
- IA2_STATE_OPAQUE = 0x400,
- IA2_STATE_REQUIRED = 0x800,
- IA2_STATE_SELECTABLE_TEXT = 0x1000,
- IA2_STATE_SINGLE_LINE = 0x2000,
- IA2_STATE_STALE = 0x4000,
- IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
- IA2_STATE_TRANSIENT = 0x10000,
- IA2_STATE_VERTICAL = 0x20000,
- IA2_STATE_CHECKABLE = 0x40000,
- IA2_STATE_PINNED = 0x80000
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleStates_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleStates_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable.h
deleted file mode 100644
index fb9c7478a1..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable.h
+++ /dev/null
@@ -1,497 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTable_h__
-#define __AccessibleTable_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTable_FWD_DEFINED__
-#define __IAccessibleTable_FWD_DEFINED__
-typedef interface IAccessibleTable IAccessibleTable;
-#endif /* __IAccessibleTable_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTable_INTERFACE_DEFINED__
-#define __IAccessibleTable_INTERFACE_DEFINED__
-
-/* interface IAccessibleTable */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTable;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("35AD8070-C20C-4fb4-B094-F4F7275DD469")
- IAccessibleTable : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_childIndex(
- /* [in] */ long rowIndex,
- /* [in] */ long columnIndex,
- /* [retval][out] */ long *cellIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtentAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nColumnsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeader(
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingRowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *columnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedChildren(
- /* [retval][out] */ long *cellCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtentAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nRowsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeader(
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingColumnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *rowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedChildren(
- /* [in] */ long maxChildren,
- /* [length_is][length_is][size_is][size_is][out] */ long **children,
- /* [retval][out] */ long *nChildren) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
- /* [in] */ long maxColumns,
- /* [length_is][length_is][size_is][size_is][out] */ long **columns,
- /* [retval][out] */ long *nColumns) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
- /* [in] */ long maxRows,
- /* [length_is][length_is][size_is][size_is][out] */ long **rows,
- /* [retval][out] */ long *nRows) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectColumn(
- /* [in] */ long column) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectColumn(
- /* [in] */ long column) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtentsAtIndex(
- /* [in] */ long index,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
- /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTableVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTable * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTable * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTable * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
- IAccessibleTable * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_childIndex )(
- IAccessibleTable * This,
- /* [in] */ long rowIndex,
- /* [in] */ long columnIndex,
- /* [retval][out] */ long *cellIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
- IAccessibleTable * This,
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtentAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nColumnsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeader )(
- IAccessibleTable * This,
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingRowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
- IAccessibleTable * This,
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *columnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
- IAccessibleTable * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
- IAccessibleTable * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedChildren )(
- IAccessibleTable * This,
- /* [retval][out] */ long *cellCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
- IAccessibleTable * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
- IAccessibleTable * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtentAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nRowsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeader )(
- IAccessibleTable * This,
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingColumnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
- IAccessibleTable * This,
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *rowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedChildren )(
- IAccessibleTable * This,
- /* [in] */ long maxChildren,
- /* [length_is][length_is][size_is][size_is][out] */ long **children,
- /* [retval][out] */ long *nChildren);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
- IAccessibleTable * This,
- /* [in] */ long maxColumns,
- /* [length_is][length_is][size_is][size_is][out] */ long **columns,
- /* [retval][out] */ long *nColumns);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
- IAccessibleTable * This,
- /* [in] */ long maxRows,
- /* [length_is][length_is][size_is][size_is][out] */ long **rows,
- /* [retval][out] */ long *nRows);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
- IAccessibleTable * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
- IAccessibleTable * This,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- HRESULT ( STDMETHODCALLTYPE *selectRow )(
- IAccessibleTable * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *selectColumn )(
- IAccessibleTable * This,
- /* [in] */ long column);
-
- HRESULT ( STDMETHODCALLTYPE *unselectRow )(
- IAccessibleTable * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
- IAccessibleTable * This,
- /* [in] */ long column);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtentsAtIndex )(
- IAccessibleTable * This,
- /* [in] */ long index,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
- IAccessibleTable * This,
- /* [retval][out] */ IA2TableModelChange *modelChange);
-
- END_INTERFACE
- } IAccessibleTableVtbl;
-
- interface IAccessibleTable
- {
- CONST_VTBL struct IAccessibleTableVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTable_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTable_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTable_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTable_get_accessibleAt(This,row,column,accessible) \
- ( (This)->lpVtbl -> get_accessibleAt(This,row,column,accessible) )
-
-#define IAccessibleTable_get_caption(This,accessible) \
- ( (This)->lpVtbl -> get_caption(This,accessible) )
-
-#define IAccessibleTable_get_childIndex(This,rowIndex,columnIndex,cellIndex) \
- ( (This)->lpVtbl -> get_childIndex(This,rowIndex,columnIndex,cellIndex) )
-
-#define IAccessibleTable_get_columnDescription(This,column,description) \
- ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
-
-#define IAccessibleTable_get_columnExtentAt(This,row,column,nColumnsSpanned) \
- ( (This)->lpVtbl -> get_columnExtentAt(This,row,column,nColumnsSpanned) )
-
-#define IAccessibleTable_get_columnHeader(This,accessibleTable,startingRowIndex) \
- ( (This)->lpVtbl -> get_columnHeader(This,accessibleTable,startingRowIndex) )
-
-#define IAccessibleTable_get_columnIndex(This,cellIndex,columnIndex) \
- ( (This)->lpVtbl -> get_columnIndex(This,cellIndex,columnIndex) )
-
-#define IAccessibleTable_get_nColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
-
-#define IAccessibleTable_get_nRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nRows(This,rowCount) )
-
-#define IAccessibleTable_get_nSelectedChildren(This,cellCount) \
- ( (This)->lpVtbl -> get_nSelectedChildren(This,cellCount) )
-
-#define IAccessibleTable_get_nSelectedColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
-
-#define IAccessibleTable_get_nSelectedRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
-
-#define IAccessibleTable_get_rowDescription(This,row,description) \
- ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
-
-#define IAccessibleTable_get_rowExtentAt(This,row,column,nRowsSpanned) \
- ( (This)->lpVtbl -> get_rowExtentAt(This,row,column,nRowsSpanned) )
-
-#define IAccessibleTable_get_rowHeader(This,accessibleTable,startingColumnIndex) \
- ( (This)->lpVtbl -> get_rowHeader(This,accessibleTable,startingColumnIndex) )
-
-#define IAccessibleTable_get_rowIndex(This,cellIndex,rowIndex) \
- ( (This)->lpVtbl -> get_rowIndex(This,cellIndex,rowIndex) )
-
-#define IAccessibleTable_get_selectedChildren(This,maxChildren,children,nChildren) \
- ( (This)->lpVtbl -> get_selectedChildren(This,maxChildren,children,nChildren) )
-
-#define IAccessibleTable_get_selectedColumns(This,maxColumns,columns,nColumns) \
- ( (This)->lpVtbl -> get_selectedColumns(This,maxColumns,columns,nColumns) )
-
-#define IAccessibleTable_get_selectedRows(This,maxRows,rows,nRows) \
- ( (This)->lpVtbl -> get_selectedRows(This,maxRows,rows,nRows) )
-
-#define IAccessibleTable_get_summary(This,accessible) \
- ( (This)->lpVtbl -> get_summary(This,accessible) )
-
-#define IAccessibleTable_get_isColumnSelected(This,column,isSelected) \
- ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
-
-#define IAccessibleTable_get_isRowSelected(This,row,isSelected) \
- ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
-
-#define IAccessibleTable_get_isSelected(This,row,column,isSelected) \
- ( (This)->lpVtbl -> get_isSelected(This,row,column,isSelected) )
-
-#define IAccessibleTable_selectRow(This,row) \
- ( (This)->lpVtbl -> selectRow(This,row) )
-
-#define IAccessibleTable_selectColumn(This,column) \
- ( (This)->lpVtbl -> selectColumn(This,column) )
-
-#define IAccessibleTable_unselectRow(This,row) \
- ( (This)->lpVtbl -> unselectRow(This,row) )
-
-#define IAccessibleTable_unselectColumn(This,column) \
- ( (This)->lpVtbl -> unselectColumn(This,column) )
-
-#define IAccessibleTable_get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) \
- ( (This)->lpVtbl -> get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) )
-
-#define IAccessibleTable_get_modelChange(This,modelChange) \
- ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTable_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2.h
deleted file mode 100644
index eeacb21515..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2.h
+++ /dev/null
@@ -1,367 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTable2_h__
-#define __AccessibleTable2_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTable2_FWD_DEFINED__
-#define __IAccessibleTable2_FWD_DEFINED__
-typedef interface IAccessibleTable2 IAccessibleTable2;
-#endif /* __IAccessibleTable2_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTable2_INTERFACE_DEFINED__
-#define __IAccessibleTable2_INTERFACE_DEFINED__
-
-/* interface IAccessibleTable2 */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTable2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("6167f295-06f0-4cdd-a1fa-02e25153d869")
- IAccessibleTable2 : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_cellAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **cell) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedCells(
- /* [retval][out] */ long *cellCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cells,
- /* [retval][out] */ long *nSelectedCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
- /* [size_is][size_is][out] */ long **selectedColumns,
- /* [retval][out] */ long *nColumns) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
- /* [size_is][size_is][out] */ long **selectedRows,
- /* [retval][out] */ long *nRows) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectColumn(
- /* [in] */ long column) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectColumn(
- /* [in] */ long column) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
- /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTable2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTable2 * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTable2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTable2 * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_cellAt )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **cell);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
- IAccessibleTable2 * This,
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedCells )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *cellCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedCells )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cells,
- /* [retval][out] */ long *nSelectedCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][out] */ long **selectedColumns,
- /* [retval][out] */ long *nColumns);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][out] */ long **selectedRows,
- /* [retval][out] */ long *nRows);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
- IAccessibleTable2 * This,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected);
-
- HRESULT ( STDMETHODCALLTYPE *selectRow )(
- IAccessibleTable2 * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *selectColumn )(
- IAccessibleTable2 * This,
- /* [in] */ long column);
-
- HRESULT ( STDMETHODCALLTYPE *unselectRow )(
- IAccessibleTable2 * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
- IAccessibleTable2 * This,
- /* [in] */ long column);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IA2TableModelChange *modelChange);
-
- END_INTERFACE
- } IAccessibleTable2Vtbl;
-
- interface IAccessibleTable2
- {
- CONST_VTBL struct IAccessibleTable2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTable2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTable2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTable2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTable2_get_cellAt(This,row,column,cell) \
- ( (This)->lpVtbl -> get_cellAt(This,row,column,cell) )
-
-#define IAccessibleTable2_get_caption(This,accessible) \
- ( (This)->lpVtbl -> get_caption(This,accessible) )
-
-#define IAccessibleTable2_get_columnDescription(This,column,description) \
- ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
-
-#define IAccessibleTable2_get_nColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
-
-#define IAccessibleTable2_get_nRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nRows(This,rowCount) )
-
-#define IAccessibleTable2_get_nSelectedCells(This,cellCount) \
- ( (This)->lpVtbl -> get_nSelectedCells(This,cellCount) )
-
-#define IAccessibleTable2_get_nSelectedColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
-
-#define IAccessibleTable2_get_nSelectedRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
-
-#define IAccessibleTable2_get_rowDescription(This,row,description) \
- ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
-
-#define IAccessibleTable2_get_selectedCells(This,cells,nSelectedCells) \
- ( (This)->lpVtbl -> get_selectedCells(This,cells,nSelectedCells) )
-
-#define IAccessibleTable2_get_selectedColumns(This,selectedColumns,nColumns) \
- ( (This)->lpVtbl -> get_selectedColumns(This,selectedColumns,nColumns) )
-
-#define IAccessibleTable2_get_selectedRows(This,selectedRows,nRows) \
- ( (This)->lpVtbl -> get_selectedRows(This,selectedRows,nRows) )
-
-#define IAccessibleTable2_get_summary(This,accessible) \
- ( (This)->lpVtbl -> get_summary(This,accessible) )
-
-#define IAccessibleTable2_get_isColumnSelected(This,column,isSelected) \
- ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
-
-#define IAccessibleTable2_get_isRowSelected(This,row,isSelected) \
- ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
-
-#define IAccessibleTable2_selectRow(This,row) \
- ( (This)->lpVtbl -> selectRow(This,row) )
-
-#define IAccessibleTable2_selectColumn(This,column) \
- ( (This)->lpVtbl -> selectColumn(This,column) )
-
-#define IAccessibleTable2_unselectRow(This,row) \
- ( (This)->lpVtbl -> unselectRow(This,row) )
-
-#define IAccessibleTable2_unselectColumn(This,column) \
- ( (This)->lpVtbl -> unselectColumn(This,column) )
-
-#define IAccessibleTable2_get_modelChange(This,modelChange) \
- ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTable2_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_i.c
deleted file mode 100644
index 56e5f31fc0..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTable2,0x6167f295,0x06f0,0x4cdd,0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_p.c
deleted file mode 100644
index 02c603fde9..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable2_p.c
+++ /dev/null
@@ -1,1099 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTable2.h"
-
-#define TYPE_FORMAT_STRING_SIZE 141
-#define PROC_FORMAT_STRING_SIZE 815
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleTable2_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTable2_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTable2_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTable2_MIDL_TYPE_FORMAT_STRING AccessibleTable2__MIDL_TypeFormatString;
-extern const AccessibleTable2_MIDL_PROC_FORMAT_STRING AccessibleTable2__MIDL_ProcFormatString;
-extern const AccessibleTable2_MIDL_EXPR_FORMAT_STRING AccessibleTable2__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTable2_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTable2_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleTable2_MIDL_PROC_FORMAT_STRING AccessibleTable2__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_cellAt */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 26 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 32 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter cell */
-
-/* 38 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 44 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 46 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 48 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caption */
-
-/* 50 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 52 */ NdrFcLong( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x4 ), /* 4 */
-/* 58 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x8 ), /* 8 */
-/* 64 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 66 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-/* 70 */ NdrFcShort( 0x0 ), /* 0 */
-/* 72 */ NdrFcShort( 0x0 ), /* 0 */
-/* 74 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 76 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 78 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 80 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 82 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 84 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnDescription */
-
-/* 88 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 90 */ NdrFcLong( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x5 ), /* 5 */
-/* 96 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 98 */ NdrFcShort( 0x8 ), /* 8 */
-/* 100 */ NdrFcShort( 0x8 ), /* 8 */
-/* 102 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 104 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 106 */ NdrFcShort( 0x1 ), /* 1 */
-/* 108 */ NdrFcShort( 0x0 ), /* 0 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 114 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 120 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 122 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 124 */ NdrFcShort( 0x36 ), /* Type Offset=54 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nColumns */
-
-/* 132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x6 ), /* 6 */
-/* 140 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 142 */ NdrFcShort( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x24 ), /* 36 */
-/* 146 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 148 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 150 */ NdrFcShort( 0x0 ), /* 0 */
-/* 152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 154 */ NdrFcShort( 0x0 ), /* 0 */
-/* 156 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 158 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 160 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 164 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 166 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nRows */
-
-/* 170 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 172 */ NdrFcLong( 0x0 ), /* 0 */
-/* 176 */ NdrFcShort( 0x7 ), /* 7 */
-/* 178 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 180 */ NdrFcShort( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x24 ), /* 36 */
-/* 184 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 186 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 188 */ NdrFcShort( 0x0 ), /* 0 */
-/* 190 */ NdrFcShort( 0x0 ), /* 0 */
-/* 192 */ NdrFcShort( 0x0 ), /* 0 */
-/* 194 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 196 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 198 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 200 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 202 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 204 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedCells */
-
-/* 208 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 210 */ NdrFcLong( 0x0 ), /* 0 */
-/* 214 */ NdrFcShort( 0x8 ), /* 8 */
-/* 216 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 218 */ NdrFcShort( 0x0 ), /* 0 */
-/* 220 */ NdrFcShort( 0x24 ), /* 36 */
-/* 222 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 224 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 226 */ NdrFcShort( 0x0 ), /* 0 */
-/* 228 */ NdrFcShort( 0x0 ), /* 0 */
-/* 230 */ NdrFcShort( 0x0 ), /* 0 */
-/* 232 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellCount */
-
-/* 234 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 236 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 238 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 240 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 242 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 244 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedColumns */
-
-/* 246 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 248 */ NdrFcLong( 0x0 ), /* 0 */
-/* 252 */ NdrFcShort( 0x9 ), /* 9 */
-/* 254 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 256 */ NdrFcShort( 0x0 ), /* 0 */
-/* 258 */ NdrFcShort( 0x24 ), /* 36 */
-/* 260 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 262 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 264 */ NdrFcShort( 0x0 ), /* 0 */
-/* 266 */ NdrFcShort( 0x0 ), /* 0 */
-/* 268 */ NdrFcShort( 0x0 ), /* 0 */
-/* 270 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 272 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 274 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 276 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 278 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 280 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 282 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedRows */
-
-/* 284 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 286 */ NdrFcLong( 0x0 ), /* 0 */
-/* 290 */ NdrFcShort( 0xa ), /* 10 */
-/* 292 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 294 */ NdrFcShort( 0x0 ), /* 0 */
-/* 296 */ NdrFcShort( 0x24 ), /* 36 */
-/* 298 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 300 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 302 */ NdrFcShort( 0x0 ), /* 0 */
-/* 304 */ NdrFcShort( 0x0 ), /* 0 */
-/* 306 */ NdrFcShort( 0x0 ), /* 0 */
-/* 308 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 310 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 312 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 314 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 316 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 318 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 320 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowDescription */
-
-/* 322 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 324 */ NdrFcLong( 0x0 ), /* 0 */
-/* 328 */ NdrFcShort( 0xb ), /* 11 */
-/* 330 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 332 */ NdrFcShort( 0x8 ), /* 8 */
-/* 334 */ NdrFcShort( 0x8 ), /* 8 */
-/* 336 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 338 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 340 */ NdrFcShort( 0x1 ), /* 1 */
-/* 342 */ NdrFcShort( 0x0 ), /* 0 */
-/* 344 */ NdrFcShort( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 348 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 350 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 352 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 354 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 356 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 358 */ NdrFcShort( 0x36 ), /* Type Offset=54 */
-
- /* Return value */
-
-/* 360 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 362 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 364 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedCells */
-
-/* 366 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 368 */ NdrFcLong( 0x0 ), /* 0 */
-/* 372 */ NdrFcShort( 0xc ), /* 12 */
-/* 374 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 376 */ NdrFcShort( 0x0 ), /* 0 */
-/* 378 */ NdrFcShort( 0x24 ), /* 36 */
-/* 380 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 382 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 384 */ NdrFcShort( 0x1 ), /* 1 */
-/* 386 */ NdrFcShort( 0x0 ), /* 0 */
-/* 388 */ NdrFcShort( 0x0 ), /* 0 */
-/* 390 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cells */
-
-/* 392 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 394 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 396 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter nSelectedCells */
-
-/* 398 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 400 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 402 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 404 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 406 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 408 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedColumns */
-
-/* 410 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 412 */ NdrFcLong( 0x0 ), /* 0 */
-/* 416 */ NdrFcShort( 0xd ), /* 13 */
-/* 418 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 420 */ NdrFcShort( 0x0 ), /* 0 */
-/* 422 */ NdrFcShort( 0x24 ), /* 36 */
-/* 424 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 426 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 428 */ NdrFcShort( 0x1 ), /* 1 */
-/* 430 */ NdrFcShort( 0x0 ), /* 0 */
-/* 432 */ NdrFcShort( 0x0 ), /* 0 */
-/* 434 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectedColumns */
-
-/* 436 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 438 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 440 */ NdrFcShort( 0x62 ), /* Type Offset=98 */
-
- /* Parameter nColumns */
-
-/* 442 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 444 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 446 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 448 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 450 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 452 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedRows */
-
-/* 454 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 456 */ NdrFcLong( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0xe ), /* 14 */
-/* 462 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 464 */ NdrFcShort( 0x0 ), /* 0 */
-/* 466 */ NdrFcShort( 0x24 ), /* 36 */
-/* 468 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 470 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 472 */ NdrFcShort( 0x1 ), /* 1 */
-/* 474 */ NdrFcShort( 0x0 ), /* 0 */
-/* 476 */ NdrFcShort( 0x0 ), /* 0 */
-/* 478 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectedRows */
-
-/* 480 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 482 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 484 */ NdrFcShort( 0x62 ), /* Type Offset=98 */
-
- /* Parameter nRows */
-
-/* 486 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 488 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 490 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 492 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 494 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 496 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_summary */
-
-/* 498 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 500 */ NdrFcLong( 0x0 ), /* 0 */
-/* 504 */ NdrFcShort( 0xf ), /* 15 */
-/* 506 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 508 */ NdrFcShort( 0x0 ), /* 0 */
-/* 510 */ NdrFcShort( 0x8 ), /* 8 */
-/* 512 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 514 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 516 */ NdrFcShort( 0x0 ), /* 0 */
-/* 518 */ NdrFcShort( 0x0 ), /* 0 */
-/* 520 */ NdrFcShort( 0x0 ), /* 0 */
-/* 522 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 524 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 526 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 528 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 530 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 532 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 534 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isColumnSelected */
-
-/* 536 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 538 */ NdrFcLong( 0x0 ), /* 0 */
-/* 542 */ NdrFcShort( 0x10 ), /* 16 */
-/* 544 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 546 */ NdrFcShort( 0x8 ), /* 8 */
-/* 548 */ NdrFcShort( 0x21 ), /* 33 */
-/* 550 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 552 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 554 */ NdrFcShort( 0x0 ), /* 0 */
-/* 556 */ NdrFcShort( 0x0 ), /* 0 */
-/* 558 */ NdrFcShort( 0x0 ), /* 0 */
-/* 560 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 562 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 564 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 566 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 568 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 570 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 572 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 574 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 576 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 578 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isRowSelected */
-
-/* 580 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 582 */ NdrFcLong( 0x0 ), /* 0 */
-/* 586 */ NdrFcShort( 0x11 ), /* 17 */
-/* 588 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 590 */ NdrFcShort( 0x8 ), /* 8 */
-/* 592 */ NdrFcShort( 0x21 ), /* 33 */
-/* 594 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 596 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 598 */ NdrFcShort( 0x0 ), /* 0 */
-/* 600 */ NdrFcShort( 0x0 ), /* 0 */
-/* 602 */ NdrFcShort( 0x0 ), /* 0 */
-/* 604 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 606 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 608 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 610 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 612 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 614 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 616 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 618 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 620 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 622 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectRow */
-
-/* 624 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 626 */ NdrFcLong( 0x0 ), /* 0 */
-/* 630 */ NdrFcShort( 0x12 ), /* 18 */
-/* 632 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 634 */ NdrFcShort( 0x8 ), /* 8 */
-/* 636 */ NdrFcShort( 0x8 ), /* 8 */
-/* 638 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 640 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 642 */ NdrFcShort( 0x0 ), /* 0 */
-/* 644 */ NdrFcShort( 0x0 ), /* 0 */
-/* 646 */ NdrFcShort( 0x0 ), /* 0 */
-/* 648 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 650 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 652 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 654 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 656 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 658 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 660 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectColumn */
-
-/* 662 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 664 */ NdrFcLong( 0x0 ), /* 0 */
-/* 668 */ NdrFcShort( 0x13 ), /* 19 */
-/* 670 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 672 */ NdrFcShort( 0x8 ), /* 8 */
-/* 674 */ NdrFcShort( 0x8 ), /* 8 */
-/* 676 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 678 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 680 */ NdrFcShort( 0x0 ), /* 0 */
-/* 682 */ NdrFcShort( 0x0 ), /* 0 */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 688 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 690 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 692 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 694 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 696 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 698 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectRow */
-
-/* 700 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 702 */ NdrFcLong( 0x0 ), /* 0 */
-/* 706 */ NdrFcShort( 0x14 ), /* 20 */
-/* 708 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 710 */ NdrFcShort( 0x8 ), /* 8 */
-/* 712 */ NdrFcShort( 0x8 ), /* 8 */
-/* 714 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 716 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 718 */ NdrFcShort( 0x0 ), /* 0 */
-/* 720 */ NdrFcShort( 0x0 ), /* 0 */
-/* 722 */ NdrFcShort( 0x0 ), /* 0 */
-/* 724 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 726 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 728 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 730 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 732 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 734 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 736 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectColumn */
-
-/* 738 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 740 */ NdrFcLong( 0x0 ), /* 0 */
-/* 744 */ NdrFcShort( 0x15 ), /* 21 */
-/* 746 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 748 */ NdrFcShort( 0x8 ), /* 8 */
-/* 750 */ NdrFcShort( 0x8 ), /* 8 */
-/* 752 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 754 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 756 */ NdrFcShort( 0x0 ), /* 0 */
-/* 758 */ NdrFcShort( 0x0 ), /* 0 */
-/* 760 */ NdrFcShort( 0x0 ), /* 0 */
-/* 762 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 764 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 766 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 768 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 770 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 772 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 774 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_modelChange */
-
-/* 776 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 778 */ NdrFcLong( 0x0 ), /* 0 */
-/* 782 */ NdrFcShort( 0x16 ), /* 22 */
-/* 784 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 786 */ NdrFcShort( 0x0 ), /* 0 */
-/* 788 */ NdrFcShort( 0x8 ), /* 8 */
-/* 790 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 792 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 794 */ NdrFcShort( 0x0 ), /* 0 */
-/* 796 */ NdrFcShort( 0x0 ), /* 0 */
-/* 798 */ NdrFcShort( 0x0 ), /* 0 */
-/* 800 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter modelChange */
-
-/* 802 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 804 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 806 */ NdrFcShort( 0x7e ), /* Type Offset=126 */
-
- /* Return value */
-
-/* 808 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 810 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 812 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTable2_MIDL_TYPE_FORMAT_STRING AccessibleTable2__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
-/* 6 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 8 */ NdrFcLong( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x0 ), /* 0 */
-/* 14 */ NdrFcShort( 0x0 ), /* 0 */
-/* 16 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 18 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 20 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 22 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 24 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 26 */ NdrFcShort( 0x1c ), /* Offset= 28 (54) */
-/* 28 */
- 0x13, 0x0, /* FC_OP */
-/* 30 */ NdrFcShort( 0xe ), /* Offset= 14 (44) */
-/* 32 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 34 */ NdrFcShort( 0x2 ), /* 2 */
-/* 36 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 38 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 40 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 42 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 44 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 46 */ NdrFcShort( 0x8 ), /* 8 */
-/* 48 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (32) */
-/* 50 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x8 ), /* 8 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0xffde ), /* Offset= -34 (28) */
-/* 64 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 66 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 68 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x13, 0x0, /* FC_OP */
-/* 74 */ NdrFcShort( 0x2 ), /* Offset= 2 (76) */
-/* 76 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 78 */ NdrFcShort( 0x0 ), /* 0 */
-/* 80 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 82 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 84 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 86 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 90 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 92 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 94 */ NdrFcShort( 0xffa8 ), /* Offset= -88 (6) */
-/* 96 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 98 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 100 */ NdrFcShort( 0x2 ), /* Offset= 2 (102) */
-/* 102 */
- 0x13, 0x0, /* FC_OP */
-/* 104 */ NdrFcShort( 0x2 ), /* Offset= 2 (106) */
-/* 106 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 108 */ NdrFcShort( 0x4 ), /* 4 */
-/* 110 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 112 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 114 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 116 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 118 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 120 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 122 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 124 */ NdrFcShort( 0x2 ), /* Offset= 2 (126) */
-/* 126 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 128 */ NdrFcShort( 0x14 ), /* 20 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x0 ), /* Offset= 0 (132) */
-/* 134 */ 0xd, /* FC_ENUM16 */
- 0x8, /* FC_LONG */
-/* 136 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 138 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTable2, ver. 0.0,
- GUID={0x6167f295,0x06f0,0x4cdd,{0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTable2_FormatStringOffsetTable[] =
- {
- 0,
- 50,
- 88,
- 132,
- 170,
- 208,
- 246,
- 284,
- 322,
- 366,
- 410,
- 454,
- 498,
- 536,
- 580,
- 624,
- 662,
- 700,
- 738,
- 776
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTable2_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTable2__MIDL_ProcFormatString.Format,
- &IAccessibleTable2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTable2_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTable2__MIDL_ProcFormatString.Format,
- &IAccessibleTable2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(23) _IAccessibleTable2ProxyVtbl =
-{
- &IAccessibleTable2_ProxyInfo,
- &IID_IAccessibleTable2,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_cellAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_caption */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_columnDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_rowDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_summary */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_isColumnSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_isRowSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::selectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::selectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::unselectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::unselectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_modelChange */
-};
-
-const CInterfaceStubVtbl _IAccessibleTable2StubVtbl =
-{
- &IID_IAccessibleTable2,
- &IAccessibleTable2_ServerInfo,
- 23,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTable2__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTable2_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTable2ProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTable2_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTable2StubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTable2_InterfaceNamesList[] =
-{
- "IAccessibleTable2",
- 0
-};
-
-
-#define _AccessibleTable2_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTable2, pIID, n)
-
-int __stdcall _AccessibleTable2_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTable2_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTable2_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTable2_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTable2_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTable2_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTable2_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell.h
deleted file mode 100644
index 85648fcc7e..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell.h
+++ /dev/null
@@ -1,246 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTableCell_h__
-#define __AccessibleTableCell_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTableCell_FWD_DEFINED__
-#define __IAccessibleTableCell_FWD_DEFINED__
-typedef interface IAccessibleTableCell IAccessibleTableCell;
-#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTableCell_INTERFACE_DEFINED__
-#define __IAccessibleTableCell_INTERFACE_DEFINED__
-
-/* interface IAccessibleTableCell */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTableCell;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("594116B1-C99F-4847-AD06-0A7A86ECE645")
- IAccessibleTableCell : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtent(
- /* [retval][out] */ long *nColumnsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeaderCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nColumnHeaderCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
- /* [retval][out] */ long *columnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtent(
- /* [retval][out] */ long *nRowsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeaderCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nRowHeaderCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
- /* [retval][out] */ long *rowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtents(
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_table(
- /* [retval][out] */ IUnknown **table) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTableCellVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTableCell * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTableCell * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTableCell * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtent )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *nColumnsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeaderCells )(
- IAccessibleTableCell * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nColumnHeaderCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *columnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtent )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *nRowsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeaderCells )(
- IAccessibleTableCell * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nRowHeaderCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *rowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
- IAccessibleTableCell * This,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtents )(
- IAccessibleTableCell * This,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_table )(
- IAccessibleTableCell * This,
- /* [retval][out] */ IUnknown **table);
-
- END_INTERFACE
- } IAccessibleTableCellVtbl;
-
- interface IAccessibleTableCell
- {
- CONST_VTBL struct IAccessibleTableCellVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTableCell_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTableCell_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTableCell_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTableCell_get_columnExtent(This,nColumnsSpanned) \
- ( (This)->lpVtbl -> get_columnExtent(This,nColumnsSpanned) )
-
-#define IAccessibleTableCell_get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) \
- ( (This)->lpVtbl -> get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) )
-
-#define IAccessibleTableCell_get_columnIndex(This,columnIndex) \
- ( (This)->lpVtbl -> get_columnIndex(This,columnIndex) )
-
-#define IAccessibleTableCell_get_rowExtent(This,nRowsSpanned) \
- ( (This)->lpVtbl -> get_rowExtent(This,nRowsSpanned) )
-
-#define IAccessibleTableCell_get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) \
- ( (This)->lpVtbl -> get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) )
-
-#define IAccessibleTableCell_get_rowIndex(This,rowIndex) \
- ( (This)->lpVtbl -> get_rowIndex(This,rowIndex) )
-
-#define IAccessibleTableCell_get_isSelected(This,isSelected) \
- ( (This)->lpVtbl -> get_isSelected(This,isSelected) )
-
-#define IAccessibleTableCell_get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) \
- ( (This)->lpVtbl -> get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) )
-
-#define IAccessibleTableCell_get_table(This,table) \
- ( (This)->lpVtbl -> get_table(This,table) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTableCell_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_i.c
deleted file mode 100644
index fa94037d95..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTableCell,0x594116B1,0xC99F,0x4847,0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_p.c
deleted file mode 100644
index bf18e659b6..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTableCell_p.c
+++ /dev/null
@@ -1,634 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTableCell.h"
-
-#define TYPE_FORMAT_STRING_SIZE 63
-#define PROC_FORMAT_STRING_SIZE 379
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleTableCell_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTableCell_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTableCell_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTableCell_MIDL_TYPE_FORMAT_STRING AccessibleTableCell__MIDL_TypeFormatString;
-extern const AccessibleTableCell_MIDL_PROC_FORMAT_STRING AccessibleTableCell__MIDL_ProcFormatString;
-extern const AccessibleTableCell_MIDL_EXPR_FORMAT_STRING AccessibleTableCell__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTableCell_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTableCell_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleTableCell_MIDL_PROC_FORMAT_STRING AccessibleTableCell__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_columnExtent */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nColumnsSpanned */
-
-/* 26 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnHeaderCells */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 48 */ NdrFcShort( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x24 ), /* 36 */
-/* 52 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 54 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 56 */ NdrFcShort( 0x1 ), /* 1 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellAccessibles */
-
-/* 64 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Parameter nColumnHeaderCells */
-
-/* 70 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 76 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 78 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnIndex */
-
-/* 82 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 84 */ NdrFcLong( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x5 ), /* 5 */
-/* 90 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x24 ), /* 36 */
-/* 96 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 98 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnIndex */
-
-/* 108 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 116 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowExtent */
-
-/* 120 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 122 */ NdrFcLong( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0x6 ), /* 6 */
-/* 128 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x24 ), /* 36 */
-/* 134 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 136 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 138 */ NdrFcShort( 0x0 ), /* 0 */
-/* 140 */ NdrFcShort( 0x0 ), /* 0 */
-/* 142 */ NdrFcShort( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nRowsSpanned */
-
-/* 146 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 148 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 150 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 152 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 154 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 156 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowHeaderCells */
-
-/* 158 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 160 */ NdrFcLong( 0x0 ), /* 0 */
-/* 164 */ NdrFcShort( 0x7 ), /* 7 */
-/* 166 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 168 */ NdrFcShort( 0x0 ), /* 0 */
-/* 170 */ NdrFcShort( 0x24 ), /* 36 */
-/* 172 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 174 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 176 */ NdrFcShort( 0x1 ), /* 1 */
-/* 178 */ NdrFcShort( 0x0 ), /* 0 */
-/* 180 */ NdrFcShort( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellAccessibles */
-
-/* 184 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 186 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 188 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Parameter nRowHeaderCells */
-
-/* 190 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 192 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 194 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 196 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 198 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 200 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowIndex */
-
-/* 202 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 204 */ NdrFcLong( 0x0 ), /* 0 */
-/* 208 */ NdrFcShort( 0x8 ), /* 8 */
-/* 210 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 212 */ NdrFcShort( 0x0 ), /* 0 */
-/* 214 */ NdrFcShort( 0x24 ), /* 36 */
-/* 216 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 218 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 220 */ NdrFcShort( 0x0 ), /* 0 */
-/* 222 */ NdrFcShort( 0x0 ), /* 0 */
-/* 224 */ NdrFcShort( 0x0 ), /* 0 */
-/* 226 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowIndex */
-
-/* 228 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 230 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 232 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 234 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 236 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 238 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isSelected */
-
-/* 240 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 242 */ NdrFcLong( 0x0 ), /* 0 */
-/* 246 */ NdrFcShort( 0x9 ), /* 9 */
-/* 248 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 250 */ NdrFcShort( 0x0 ), /* 0 */
-/* 252 */ NdrFcShort( 0x21 ), /* 33 */
-/* 254 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 256 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 258 */ NdrFcShort( 0x0 ), /* 0 */
-/* 260 */ NdrFcShort( 0x0 ), /* 0 */
-/* 262 */ NdrFcShort( 0x0 ), /* 0 */
-/* 264 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter isSelected */
-
-/* 266 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 268 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 270 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 272 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 274 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 276 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowColumnExtents */
-
-/* 278 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 280 */ NdrFcLong( 0x0 ), /* 0 */
-/* 284 */ NdrFcShort( 0xa ), /* 10 */
-/* 286 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 288 */ NdrFcShort( 0x0 ), /* 0 */
-/* 290 */ NdrFcShort( 0x91 ), /* 145 */
-/* 292 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x6, /* 6 */
-/* 294 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 296 */ NdrFcShort( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* 0 */
-/* 300 */ NdrFcShort( 0x0 ), /* 0 */
-/* 302 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 304 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 306 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 308 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 310 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 312 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 314 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowExtents */
-
-/* 316 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 318 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 320 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnExtents */
-
-/* 322 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 324 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 326 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 328 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 330 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 332 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 334 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 336 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 338 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_table */
-
-/* 340 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 342 */ NdrFcLong( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0xb ), /* 11 */
-/* 348 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 350 */ NdrFcShort( 0x0 ), /* 0 */
-/* 352 */ NdrFcShort( 0x8 ), /* 8 */
-/* 354 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 356 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 358 */ NdrFcShort( 0x0 ), /* 0 */
-/* 360 */ NdrFcShort( 0x0 ), /* 0 */
-/* 362 */ NdrFcShort( 0x0 ), /* 0 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter table */
-
-/* 366 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 368 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 370 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 372 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 374 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 376 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTableCell_MIDL_TYPE_FORMAT_STRING AccessibleTableCell__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0x14 ), /* Offset= 20 (32) */
-/* 14 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 16 */ NdrFcLong( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 26 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 28 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 30 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 32 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 38 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 40 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 42 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 46 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 48 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 50 */ NdrFcShort( 0xffdc ), /* Offset= -36 (14) */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 56 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 58 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 60 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (14) */
-
- 0x0
- }
- };
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTableCell, ver. 0.0,
- GUID={0x594116B1,0xC99F,0x4847,{0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTableCell_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 82,
- 120,
- 158,
- 202,
- 240,
- 278,
- 340
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTableCell_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTableCell__MIDL_ProcFormatString.Format,
- &IAccessibleTableCell_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTableCell_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTableCell__MIDL_ProcFormatString.Format,
- &IAccessibleTableCell_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(12) _IAccessibleTableCellProxyVtbl =
-{
- &IAccessibleTableCell_ProxyInfo,
- &IID_IAccessibleTableCell,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnExtent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnHeaderCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowExtent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowHeaderCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_isSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowColumnExtents */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_table */
-};
-
-const CInterfaceStubVtbl _IAccessibleTableCellStubVtbl =
-{
- &IID_IAccessibleTableCell,
- &IAccessibleTableCell_ServerInfo,
- 12,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTableCell__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTableCell_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTableCellProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTableCell_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTableCellStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTableCell_InterfaceNamesList[] =
-{
- "IAccessibleTableCell",
- 0
-};
-
-
-#define _AccessibleTableCell_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTableCell, pIID, n)
-
-int __stdcall _AccessibleTableCell_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTableCell_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTableCell_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTableCell_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTableCell_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTableCell_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTableCell_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_i.c
deleted file mode 100644
index dd4e1fe983..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTable,0x35AD8070,0xC20C,0x4fb4,0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_p.c
deleted file mode 100644
index cca4e376c8..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleTable_p.c
+++ /dev/null
@@ -1,1543 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:59 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTable.h"
-
-#define TYPE_FORMAT_STRING_SIZE 139
-#define PROC_FORMAT_STRING_SIZE 1277
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleTable_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTable_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTable_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTable_MIDL_TYPE_FORMAT_STRING AccessibleTable__MIDL_TypeFormatString;
-extern const AccessibleTable_MIDL_PROC_FORMAT_STRING AccessibleTable__MIDL_ProcFormatString;
-extern const AccessibleTable_MIDL_EXPR_FORMAT_STRING AccessibleTable__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTable_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTable_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleTable_MIDL_PROC_FORMAT_STRING AccessibleTable__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_accessibleAt */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 26 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 32 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter accessible */
-
-/* 38 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 44 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 46 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 48 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caption */
-
-/* 50 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 52 */ NdrFcLong( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x4 ), /* 4 */
-/* 58 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x8 ), /* 8 */
-/* 64 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 66 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-/* 70 */ NdrFcShort( 0x0 ), /* 0 */
-/* 72 */ NdrFcShort( 0x0 ), /* 0 */
-/* 74 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 76 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 78 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 80 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 82 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 84 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_childIndex */
-
-/* 88 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 90 */ NdrFcLong( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x5 ), /* 5 */
-/* 96 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 98 */ NdrFcShort( 0x10 ), /* 16 */
-/* 100 */ NdrFcShort( 0x24 ), /* 36 */
-/* 102 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 104 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-/* 108 */ NdrFcShort( 0x0 ), /* 0 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowIndex */
-
-/* 114 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 116 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnIndex */
-
-/* 120 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 122 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter cellIndex */
-
-/* 126 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 128 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 132 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 134 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 136 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnDescription */
-
-/* 138 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 140 */ NdrFcLong( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x6 ), /* 6 */
-/* 146 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 148 */ NdrFcShort( 0x8 ), /* 8 */
-/* 150 */ NdrFcShort( 0x8 ), /* 8 */
-/* 152 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 154 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 156 */ NdrFcShort( 0x1 ), /* 1 */
-/* 158 */ NdrFcShort( 0x0 ), /* 0 */
-/* 160 */ NdrFcShort( 0x0 ), /* 0 */
-/* 162 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 164 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 166 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 170 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 172 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 174 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 176 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 178 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 180 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnExtentAt */
-
-/* 182 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 184 */ NdrFcLong( 0x0 ), /* 0 */
-/* 188 */ NdrFcShort( 0x7 ), /* 7 */
-/* 190 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 192 */ NdrFcShort( 0x10 ), /* 16 */
-/* 194 */ NdrFcShort( 0x24 ), /* 36 */
-/* 196 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 198 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 200 */ NdrFcShort( 0x0 ), /* 0 */
-/* 202 */ NdrFcShort( 0x0 ), /* 0 */
-/* 204 */ NdrFcShort( 0x0 ), /* 0 */
-/* 206 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 208 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 210 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 212 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 214 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 216 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 218 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nColumnsSpanned */
-
-/* 220 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 222 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 224 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 226 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 228 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 230 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnHeader */
-
-/* 232 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 234 */ NdrFcLong( 0x0 ), /* 0 */
-/* 238 */ NdrFcShort( 0x8 ), /* 8 */
-/* 240 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 242 */ NdrFcShort( 0x0 ), /* 0 */
-/* 244 */ NdrFcShort( 0x24 ), /* 36 */
-/* 246 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 248 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 250 */ NdrFcShort( 0x0 ), /* 0 */
-/* 252 */ NdrFcShort( 0x0 ), /* 0 */
-/* 254 */ NdrFcShort( 0x0 ), /* 0 */
-/* 256 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessibleTable */
-
-/* 258 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 260 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 262 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter startingRowIndex */
-
-/* 264 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 266 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 268 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 270 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 272 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 274 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnIndex */
-
-/* 276 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 278 */ NdrFcLong( 0x0 ), /* 0 */
-/* 282 */ NdrFcShort( 0x9 ), /* 9 */
-/* 284 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 286 */ NdrFcShort( 0x8 ), /* 8 */
-/* 288 */ NdrFcShort( 0x24 ), /* 36 */
-/* 290 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 292 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 294 */ NdrFcShort( 0x0 ), /* 0 */
-/* 296 */ NdrFcShort( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* 0 */
-/* 300 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellIndex */
-
-/* 302 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 304 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 306 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnIndex */
-
-/* 308 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 310 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 312 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 314 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 316 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 318 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nColumns */
-
-/* 320 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 322 */ NdrFcLong( 0x0 ), /* 0 */
-/* 326 */ NdrFcShort( 0xa ), /* 10 */
-/* 328 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 330 */ NdrFcShort( 0x0 ), /* 0 */
-/* 332 */ NdrFcShort( 0x24 ), /* 36 */
-/* 334 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 336 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 338 */ NdrFcShort( 0x0 ), /* 0 */
-/* 340 */ NdrFcShort( 0x0 ), /* 0 */
-/* 342 */ NdrFcShort( 0x0 ), /* 0 */
-/* 344 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 346 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 348 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 350 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 352 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 354 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 356 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nRows */
-
-/* 358 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 360 */ NdrFcLong( 0x0 ), /* 0 */
-/* 364 */ NdrFcShort( 0xb ), /* 11 */
-/* 366 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 368 */ NdrFcShort( 0x0 ), /* 0 */
-/* 370 */ NdrFcShort( 0x24 ), /* 36 */
-/* 372 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 374 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 376 */ NdrFcShort( 0x0 ), /* 0 */
-/* 378 */ NdrFcShort( 0x0 ), /* 0 */
-/* 380 */ NdrFcShort( 0x0 ), /* 0 */
-/* 382 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 384 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 386 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 388 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 390 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 392 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 394 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedChildren */
-
-/* 396 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 398 */ NdrFcLong( 0x0 ), /* 0 */
-/* 402 */ NdrFcShort( 0xc ), /* 12 */
-/* 404 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 406 */ NdrFcShort( 0x0 ), /* 0 */
-/* 408 */ NdrFcShort( 0x24 ), /* 36 */
-/* 410 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 412 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 414 */ NdrFcShort( 0x0 ), /* 0 */
-/* 416 */ NdrFcShort( 0x0 ), /* 0 */
-/* 418 */ NdrFcShort( 0x0 ), /* 0 */
-/* 420 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellCount */
-
-/* 422 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 424 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 426 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 428 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 430 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 432 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedColumns */
-
-/* 434 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 436 */ NdrFcLong( 0x0 ), /* 0 */
-/* 440 */ NdrFcShort( 0xd ), /* 13 */
-/* 442 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 444 */ NdrFcShort( 0x0 ), /* 0 */
-/* 446 */ NdrFcShort( 0x24 ), /* 36 */
-/* 448 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 450 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 452 */ NdrFcShort( 0x0 ), /* 0 */
-/* 454 */ NdrFcShort( 0x0 ), /* 0 */
-/* 456 */ NdrFcShort( 0x0 ), /* 0 */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 460 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 462 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 464 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 466 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 468 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 470 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedRows */
-
-/* 472 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 474 */ NdrFcLong( 0x0 ), /* 0 */
-/* 478 */ NdrFcShort( 0xe ), /* 14 */
-/* 480 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 482 */ NdrFcShort( 0x0 ), /* 0 */
-/* 484 */ NdrFcShort( 0x24 ), /* 36 */
-/* 486 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 488 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 490 */ NdrFcShort( 0x0 ), /* 0 */
-/* 492 */ NdrFcShort( 0x0 ), /* 0 */
-/* 494 */ NdrFcShort( 0x0 ), /* 0 */
-/* 496 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 498 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 500 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 502 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 504 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 506 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 508 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowDescription */
-
-/* 510 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 512 */ NdrFcLong( 0x0 ), /* 0 */
-/* 516 */ NdrFcShort( 0xf ), /* 15 */
-/* 518 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 520 */ NdrFcShort( 0x8 ), /* 8 */
-/* 522 */ NdrFcShort( 0x8 ), /* 8 */
-/* 524 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 526 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 528 */ NdrFcShort( 0x1 ), /* 1 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ NdrFcShort( 0x0 ), /* 0 */
-/* 534 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 536 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 538 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 540 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 542 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 544 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 546 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 548 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 550 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 552 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowExtentAt */
-
-/* 554 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 556 */ NdrFcLong( 0x0 ), /* 0 */
-/* 560 */ NdrFcShort( 0x10 ), /* 16 */
-/* 562 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 564 */ NdrFcShort( 0x10 ), /* 16 */
-/* 566 */ NdrFcShort( 0x24 ), /* 36 */
-/* 568 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 570 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 572 */ NdrFcShort( 0x0 ), /* 0 */
-/* 574 */ NdrFcShort( 0x0 ), /* 0 */
-/* 576 */ NdrFcShort( 0x0 ), /* 0 */
-/* 578 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 580 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 582 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 584 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 586 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 588 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 590 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nRowsSpanned */
-
-/* 592 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 594 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 596 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 598 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 600 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 602 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowHeader */
-
-/* 604 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 606 */ NdrFcLong( 0x0 ), /* 0 */
-/* 610 */ NdrFcShort( 0x11 ), /* 17 */
-/* 612 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 614 */ NdrFcShort( 0x0 ), /* 0 */
-/* 616 */ NdrFcShort( 0x24 ), /* 36 */
-/* 618 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 620 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 622 */ NdrFcShort( 0x0 ), /* 0 */
-/* 624 */ NdrFcShort( 0x0 ), /* 0 */
-/* 626 */ NdrFcShort( 0x0 ), /* 0 */
-/* 628 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessibleTable */
-
-/* 630 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 632 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 634 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter startingColumnIndex */
-
-/* 636 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 638 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 640 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 642 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 644 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 646 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowIndex */
-
-/* 648 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 650 */ NdrFcLong( 0x0 ), /* 0 */
-/* 654 */ NdrFcShort( 0x12 ), /* 18 */
-/* 656 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 658 */ NdrFcShort( 0x8 ), /* 8 */
-/* 660 */ NdrFcShort( 0x24 ), /* 36 */
-/* 662 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 664 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 666 */ NdrFcShort( 0x0 ), /* 0 */
-/* 668 */ NdrFcShort( 0x0 ), /* 0 */
-/* 670 */ NdrFcShort( 0x0 ), /* 0 */
-/* 672 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellIndex */
-
-/* 674 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 676 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 678 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowIndex */
-
-/* 680 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 682 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 684 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 686 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 688 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 690 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedChildren */
-
-/* 692 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 694 */ NdrFcLong( 0x0 ), /* 0 */
-/* 698 */ NdrFcShort( 0x13 ), /* 19 */
-/* 700 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 702 */ NdrFcShort( 0x8 ), /* 8 */
-/* 704 */ NdrFcShort( 0x24 ), /* 36 */
-/* 706 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 708 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 710 */ NdrFcShort( 0x1 ), /* 1 */
-/* 712 */ NdrFcShort( 0x0 ), /* 0 */
-/* 714 */ NdrFcShort( 0x0 ), /* 0 */
-/* 716 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxChildren */
-
-/* 718 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 720 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 722 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter children */
-
-/* 724 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 726 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 728 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nChildren */
-
-/* 730 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 732 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 734 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 736 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 738 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 740 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedColumns */
-
-/* 742 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 744 */ NdrFcLong( 0x0 ), /* 0 */
-/* 748 */ NdrFcShort( 0x14 ), /* 20 */
-/* 750 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 752 */ NdrFcShort( 0x8 ), /* 8 */
-/* 754 */ NdrFcShort( 0x24 ), /* 36 */
-/* 756 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 758 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 760 */ NdrFcShort( 0x1 ), /* 1 */
-/* 762 */ NdrFcShort( 0x0 ), /* 0 */
-/* 764 */ NdrFcShort( 0x0 ), /* 0 */
-/* 766 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxColumns */
-
-/* 768 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 770 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 772 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columns */
-
-/* 774 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 776 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 778 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nColumns */
-
-/* 780 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 782 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 784 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 786 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 788 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 790 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedRows */
-
-/* 792 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 794 */ NdrFcLong( 0x0 ), /* 0 */
-/* 798 */ NdrFcShort( 0x15 ), /* 21 */
-/* 800 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 802 */ NdrFcShort( 0x8 ), /* 8 */
-/* 804 */ NdrFcShort( 0x24 ), /* 36 */
-/* 806 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 808 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 810 */ NdrFcShort( 0x1 ), /* 1 */
-/* 812 */ NdrFcShort( 0x0 ), /* 0 */
-/* 814 */ NdrFcShort( 0x0 ), /* 0 */
-/* 816 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxRows */
-
-/* 818 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 820 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 822 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rows */
-
-/* 824 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 826 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 828 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nRows */
-
-/* 830 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 832 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 834 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 836 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 838 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 840 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_summary */
-
-/* 842 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 844 */ NdrFcLong( 0x0 ), /* 0 */
-/* 848 */ NdrFcShort( 0x16 ), /* 22 */
-/* 850 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 852 */ NdrFcShort( 0x0 ), /* 0 */
-/* 854 */ NdrFcShort( 0x8 ), /* 8 */
-/* 856 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 858 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 860 */ NdrFcShort( 0x0 ), /* 0 */
-/* 862 */ NdrFcShort( 0x0 ), /* 0 */
-/* 864 */ NdrFcShort( 0x0 ), /* 0 */
-/* 866 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 868 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 870 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 872 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 874 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 876 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 878 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isColumnSelected */
-
-/* 880 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 882 */ NdrFcLong( 0x0 ), /* 0 */
-/* 886 */ NdrFcShort( 0x17 ), /* 23 */
-/* 888 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 890 */ NdrFcShort( 0x8 ), /* 8 */
-/* 892 */ NdrFcShort( 0x21 ), /* 33 */
-/* 894 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 896 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 898 */ NdrFcShort( 0x0 ), /* 0 */
-/* 900 */ NdrFcShort( 0x0 ), /* 0 */
-/* 902 */ NdrFcShort( 0x0 ), /* 0 */
-/* 904 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 906 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 908 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 910 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 912 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 914 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 916 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 918 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 920 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 922 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isRowSelected */
-
-/* 924 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 926 */ NdrFcLong( 0x0 ), /* 0 */
-/* 930 */ NdrFcShort( 0x18 ), /* 24 */
-/* 932 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 934 */ NdrFcShort( 0x8 ), /* 8 */
-/* 936 */ NdrFcShort( 0x21 ), /* 33 */
-/* 938 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 940 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 942 */ NdrFcShort( 0x0 ), /* 0 */
-/* 944 */ NdrFcShort( 0x0 ), /* 0 */
-/* 946 */ NdrFcShort( 0x0 ), /* 0 */
-/* 948 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 950 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 952 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 954 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 956 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 958 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 960 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 962 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 964 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 966 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isSelected */
-
-/* 968 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 970 */ NdrFcLong( 0x0 ), /* 0 */
-/* 974 */ NdrFcShort( 0x19 ), /* 25 */
-/* 976 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 978 */ NdrFcShort( 0x10 ), /* 16 */
-/* 980 */ NdrFcShort( 0x21 ), /* 33 */
-/* 982 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 984 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 986 */ NdrFcShort( 0x0 ), /* 0 */
-/* 988 */ NdrFcShort( 0x0 ), /* 0 */
-/* 990 */ NdrFcShort( 0x0 ), /* 0 */
-/* 992 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 994 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 996 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 998 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 1000 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1002 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1004 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 1006 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1008 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1010 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1012 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1014 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 1016 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectRow */
-
-/* 1018 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1020 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1024 */ NdrFcShort( 0x1a ), /* 26 */
-/* 1026 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1028 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1030 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1032 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1034 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1036 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1038 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1040 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1042 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 1044 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1046 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1048 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1050 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1052 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1054 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectColumn */
-
-/* 1056 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1058 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1062 */ NdrFcShort( 0x1b ), /* 27 */
-/* 1064 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1066 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1068 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1070 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1072 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1074 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1076 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1078 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1080 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 1082 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1084 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1086 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1088 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1090 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1092 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectRow */
-
-/* 1094 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1096 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1100 */ NdrFcShort( 0x1c ), /* 28 */
-/* 1102 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1104 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1106 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1108 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1110 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1112 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1114 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1116 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1118 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 1120 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1122 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1128 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectColumn */
-
-/* 1132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1138 */ NdrFcShort( 0x1d ), /* 29 */
-/* 1140 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1142 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1144 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1146 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1148 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1150 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1154 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1156 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 1158 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1160 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1164 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1166 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowColumnExtentsAtIndex */
-
-/* 1170 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1172 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1176 */ NdrFcShort( 0x1e ), /* 30 */
-/* 1178 */ NdrFcShort( 0x40 ), /* X64 Stack size/offset = 64 */
-/* 1180 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1182 */ NdrFcShort( 0x91 ), /* 145 */
-/* 1184 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x7, /* 7 */
-/* 1186 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1188 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1190 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1192 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1194 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 1196 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1198 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1200 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter row */
-
-/* 1202 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1204 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1206 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 1208 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1210 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1212 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowExtents */
-
-/* 1214 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1216 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 1218 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnExtents */
-
-/* 1220 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1222 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 1224 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 1226 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1228 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 1230 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1232 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1234 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 1236 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_modelChange */
-
-/* 1238 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1240 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1244 */ NdrFcShort( 0x1f ), /* 31 */
-/* 1246 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 1248 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1250 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1252 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 1254 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1256 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1258 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1260 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1262 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter modelChange */
-
-/* 1264 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 1266 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 1268 */ NdrFcShort( 0x7c ), /* Type Offset=124 */
-
- /* Return value */
-
-/* 1270 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1272 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 1274 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTable_MIDL_TYPE_FORMAT_STRING AccessibleTable__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
-/* 6 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 8 */ NdrFcLong( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x0 ), /* 0 */
-/* 14 */ NdrFcShort( 0x0 ), /* 0 */
-/* 16 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 18 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 20 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 22 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 24 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 26 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 28 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 30 */ NdrFcShort( 0x1c ), /* Offset= 28 (58) */
-/* 32 */
- 0x13, 0x0, /* FC_OP */
-/* 34 */ NdrFcShort( 0xe ), /* Offset= 14 (48) */
-/* 36 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 38 */ NdrFcShort( 0x2 ), /* 2 */
-/* 40 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 42 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 44 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 46 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 48 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (36) */
-/* 54 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 56 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 58 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x8 ), /* 8 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0xffde ), /* Offset= -34 (32) */
-/* 68 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 74 */ NdrFcLong( 0x35ad8070 ), /* 900563056 */
-/* 78 */ NdrFcShort( 0xc20c ), /* -15860 */
-/* 80 */ NdrFcShort( 0x4fb4 ), /* 20404 */
-/* 82 */ 0xb0, /* 176 */
- 0x94, /* 148 */
-/* 84 */ 0xf4, /* 244 */
- 0xf7, /* 247 */
-/* 86 */ 0x27, /* 39 */
- 0x5d, /* 93 */
-/* 88 */ 0xd4, /* 212 */
- 0x69, /* 105 */
-/* 90 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 92 */ NdrFcShort( 0x2 ), /* Offset= 2 (94) */
-/* 94 */
- 0x13, 0x0, /* FC_OP */
-/* 96 */ NdrFcShort( 0x2 ), /* Offset= 2 (98) */
-/* 98 */
- 0x1c, /* FC_CVARRAY */
- 0x3, /* 3 */
-/* 100 */ NdrFcShort( 0x4 ), /* 4 */
-/* 102 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 104 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 106 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 108 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 110 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 112 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 114 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 116 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 118 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 120 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 122 */ NdrFcShort( 0x2 ), /* Offset= 2 (124) */
-/* 124 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 126 */ NdrFcShort( 0x14 ), /* 20 */
-/* 128 */ NdrFcShort( 0x0 ), /* 0 */
-/* 130 */ NdrFcShort( 0x0 ), /* Offset= 0 (130) */
-/* 132 */ 0xd, /* FC_ENUM16 */
- 0x8, /* FC_LONG */
-/* 134 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 136 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTable, ver. 0.0,
- GUID={0x35AD8070,0xC20C,0x4fb4,{0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTable_FormatStringOffsetTable[] =
- {
- 0,
- 50,
- 88,
- 138,
- 182,
- 232,
- 276,
- 320,
- 358,
- 396,
- 434,
- 472,
- 510,
- 554,
- 604,
- 648,
- 692,
- 742,
- 792,
- 842,
- 880,
- 924,
- 968,
- 1018,
- 1056,
- 1094,
- 1132,
- 1170,
- 1238
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTable_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTable__MIDL_ProcFormatString.Format,
- &IAccessibleTable_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTable_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTable__MIDL_ProcFormatString.Format,
- &IAccessibleTable_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(32) _IAccessibleTableProxyVtbl =
-{
- &IAccessibleTable_ProxyInfo,
- &IID_IAccessibleTable,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_accessibleAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_caption */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_childIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnExtentAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnHeader */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedChildren */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowExtentAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowHeader */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedChildren */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_summary */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isColumnSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isRowSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::selectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::selectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::unselectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::unselectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowColumnExtentsAtIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_modelChange */
-};
-
-const CInterfaceStubVtbl _IAccessibleTableStubVtbl =
-{
- &IID_IAccessibleTable,
- &IAccessibleTable_ServerInfo,
- 32,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTable__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTable_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTableProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTable_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTableStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTable_InterfaceNamesList[] =
-{
- "IAccessibleTable",
- 0
-};
-
-
-#define _AccessibleTable_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTable, pIID, n)
-
-int __stdcall _AccessibleTable_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTable_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTable_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTable_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTable_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTable_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTable_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleText.h
deleted file mode 100644
index 9b9119629d..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText.h
+++ /dev/null
@@ -1,435 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleText_h__
-#define __AccessibleText_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleText_FWD_DEFINED__
-#define __IAccessibleText_FWD_DEFINED__
-typedef interface IAccessibleText IAccessibleText;
-#endif /* __IAccessibleText_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleText_0000_0000 */
-/* [local] */
-
-typedef struct IA2TextSegment
- {
- BSTR text;
- long start;
- long end;
- } IA2TextSegment;
-
-
-enum IA2TextBoundaryType
- { IA2_TEXT_BOUNDARY_CHAR = 0,
- IA2_TEXT_BOUNDARY_WORD = ( IA2_TEXT_BOUNDARY_CHAR + 1 ) ,
- IA2_TEXT_BOUNDARY_SENTENCE = ( IA2_TEXT_BOUNDARY_WORD + 1 ) ,
- IA2_TEXT_BOUNDARY_PARAGRAPH = ( IA2_TEXT_BOUNDARY_SENTENCE + 1 ) ,
- IA2_TEXT_BOUNDARY_LINE = ( IA2_TEXT_BOUNDARY_PARAGRAPH + 1 ) ,
- IA2_TEXT_BOUNDARY_ALL = ( IA2_TEXT_BOUNDARY_LINE + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleText_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleText_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleText_INTERFACE_DEFINED__
-#define __IAccessibleText_INTERFACE_DEFINED__
-
-/* interface IAccessibleText */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleText;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B")
- IAccessibleText : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE addSelection(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
- /* [retval][out] */ long *offset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
- /* [retval][out] */ long *nSelections) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE removeSelection(
- /* [in] */ long selectionIndex) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
- /* [in] */ long offset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setSelection(
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
- /* [retval][out] */ long *nCharacters) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
- /* [retval][out] */ IA2TextSegment *newText) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
- /* [retval][out] */ IA2TextSegment *oldText) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleText * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleText * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleText * This);
-
- HRESULT ( STDMETHODCALLTYPE *addSelection )(
- IAccessibleText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
- IAccessibleText * This,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
- IAccessibleText * This,
- /* [retval][out] */ long *nSelections);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
- IAccessibleText * This,
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
- IAccessibleText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *removeSelection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex);
-
- HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
- IAccessibleText * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *setSelection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
- IAccessibleText * This,
- /* [retval][out] */ long *nCharacters);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
- IAccessibleText * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
- IAccessibleText * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
- IAccessibleText * This,
- /* [retval][out] */ IA2TextSegment *newText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
- IAccessibleText * This,
- /* [retval][out] */ IA2TextSegment *oldText);
-
- END_INTERFACE
- } IAccessibleTextVtbl;
-
- interface IAccessibleText
- {
- CONST_VTBL struct IAccessibleTextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleText_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleText_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleText_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleText_addSelection(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
-
-#define IAccessibleText_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
- ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
-
-#define IAccessibleText_get_caretOffset(This,offset) \
- ( (This)->lpVtbl -> get_caretOffset(This,offset) )
-
-#define IAccessibleText_get_characterExtents(This,offset,coordType,x,y,width,height) \
- ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
-
-#define IAccessibleText_get_nSelections(This,nSelections) \
- ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
-
-#define IAccessibleText_get_offsetAtPoint(This,x,y,coordType,offset) \
- ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
-
-#define IAccessibleText_get_selection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleText_get_text(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_removeSelection(This,selectionIndex) \
- ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
-
-#define IAccessibleText_setCaretOffset(This,offset) \
- ( (This)->lpVtbl -> setCaretOffset(This,offset) )
-
-#define IAccessibleText_setSelection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleText_get_nCharacters(This,nCharacters) \
- ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
-
-#define IAccessibleText_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
- ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
-
-#define IAccessibleText_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
-
-#define IAccessibleText_get_newText(This,newText) \
- ( (This)->lpVtbl -> get_newText(This,newText) )
-
-#define IAccessibleText_get_oldText(This,oldText) \
- ( (This)->lpVtbl -> get_oldText(This,oldText) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleText_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_i.c
deleted file mode 100644
index 564c790b78..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleText,0x24FD2FFB,0x3AAD,0x4a08,0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_p.c
deleted file mode 100644
index b2512f74ef..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleText_p.c
+++ /dev/null
@@ -1,1203 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleText.h"
-
-#define TYPE_FORMAT_STRING_SIZE 67
-#define PROC_FORMAT_STRING_SIZE 939
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleText_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleText_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleText_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleText_MIDL_TYPE_FORMAT_STRING AccessibleText__MIDL_TypeFormatString;
-extern const AccessibleText_MIDL_PROC_FORMAT_STRING AccessibleText__MIDL_ProcFormatString;
-extern const AccessibleText_MIDL_EXPR_FORMAT_STRING AccessibleText__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleText_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleText_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleText_MIDL_PROC_FORMAT_STRING AccessibleText__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure addSelection */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 26 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 32 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 38 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 40 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 42 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_attributes */
-
-/* 44 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 46 */ NdrFcLong( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 54 */ NdrFcShort( 0x8 ), /* 8 */
-/* 56 */ NdrFcShort( 0x40 ), /* 64 */
-/* 58 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x5, /* 5 */
-/* 60 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 62 */ NdrFcShort( 0x1 ), /* 1 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 70 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 72 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 76 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 78 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 80 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 82 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter textAttributes */
-
-/* 88 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 90 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 92 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 94 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 96 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 98 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caretOffset */
-
-/* 100 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 102 */ NdrFcLong( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x5 ), /* 5 */
-/* 108 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 110 */ NdrFcShort( 0x0 ), /* 0 */
-/* 112 */ NdrFcShort( 0x24 ), /* 36 */
-/* 114 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 116 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 118 */ NdrFcShort( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x0 ), /* 0 */
-/* 122 */ NdrFcShort( 0x0 ), /* 0 */
-/* 124 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 126 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 128 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 132 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 134 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 136 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_characterExtents */
-
-/* 138 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 140 */ NdrFcLong( 0x0 ), /* 0 */
-/* 144 */ NdrFcShort( 0x6 ), /* 6 */
-/* 146 */ NdrFcShort( 0x40 ), /* X64 Stack size/offset = 64 */
-/* 148 */ NdrFcShort( 0xe ), /* 14 */
-/* 150 */ NdrFcShort( 0x78 ), /* 120 */
-/* 152 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x7, /* 7 */
-/* 154 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 156 */ NdrFcShort( 0x0 ), /* 0 */
-/* 158 */ NdrFcShort( 0x0 ), /* 0 */
-/* 160 */ NdrFcShort( 0x0 ), /* 0 */
-/* 162 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 164 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 166 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordType */
-
-/* 170 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 172 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 174 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 176 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 178 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 180 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 182 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 184 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 186 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter width */
-
-/* 188 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 190 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 192 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter height */
-
-/* 194 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 196 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 198 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 200 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 202 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 204 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelections */
-
-/* 206 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 208 */ NdrFcLong( 0x0 ), /* 0 */
-/* 212 */ NdrFcShort( 0x7 ), /* 7 */
-/* 214 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 216 */ NdrFcShort( 0x0 ), /* 0 */
-/* 218 */ NdrFcShort( 0x24 ), /* 36 */
-/* 220 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 222 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 224 */ NdrFcShort( 0x0 ), /* 0 */
-/* 226 */ NdrFcShort( 0x0 ), /* 0 */
-/* 228 */ NdrFcShort( 0x0 ), /* 0 */
-/* 230 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nSelections */
-
-/* 232 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 234 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 236 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 238 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 240 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 242 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_offsetAtPoint */
-
-/* 244 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 246 */ NdrFcLong( 0x0 ), /* 0 */
-/* 250 */ NdrFcShort( 0x8 ), /* 8 */
-/* 252 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 254 */ NdrFcShort( 0x16 ), /* 22 */
-/* 256 */ NdrFcShort( 0x24 ), /* 36 */
-/* 258 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x5, /* 5 */
-/* 260 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 262 */ NdrFcShort( 0x0 ), /* 0 */
-/* 264 */ NdrFcShort( 0x0 ), /* 0 */
-/* 266 */ NdrFcShort( 0x0 ), /* 0 */
-/* 268 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter x */
-
-/* 270 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 272 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 274 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 276 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 278 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 280 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordType */
-
-/* 282 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 284 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 286 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter offset */
-
-/* 288 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 290 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 292 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 294 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 296 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 298 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selection */
-
-/* 300 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 302 */ NdrFcLong( 0x0 ), /* 0 */
-/* 306 */ NdrFcShort( 0x9 ), /* 9 */
-/* 308 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 310 */ NdrFcShort( 0x8 ), /* 8 */
-/* 312 */ NdrFcShort( 0x40 ), /* 64 */
-/* 314 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 316 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 318 */ NdrFcShort( 0x0 ), /* 0 */
-/* 320 */ NdrFcShort( 0x0 ), /* 0 */
-/* 322 */ NdrFcShort( 0x0 ), /* 0 */
-/* 324 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 326 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 328 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 330 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 332 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 334 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 336 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 338 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 340 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 342 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 344 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 346 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 348 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_text */
-
-/* 350 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 352 */ NdrFcLong( 0x0 ), /* 0 */
-/* 356 */ NdrFcShort( 0xa ), /* 10 */
-/* 358 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 360 */ NdrFcShort( 0x10 ), /* 16 */
-/* 362 */ NdrFcShort( 0x8 ), /* 8 */
-/* 364 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 366 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 368 */ NdrFcShort( 0x1 ), /* 1 */
-/* 370 */ NdrFcShort( 0x0 ), /* 0 */
-/* 372 */ NdrFcShort( 0x0 ), /* 0 */
-/* 374 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 376 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 378 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 380 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 382 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 384 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 386 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 388 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 390 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 392 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 394 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 396 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 398 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textBeforeOffset */
-
-/* 400 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 402 */ NdrFcLong( 0x0 ), /* 0 */
-/* 406 */ NdrFcShort( 0xb ), /* 11 */
-/* 408 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 410 */ NdrFcShort( 0xe ), /* 14 */
-/* 412 */ NdrFcShort( 0x40 ), /* 64 */
-/* 414 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 416 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 418 */ NdrFcShort( 0x1 ), /* 1 */
-/* 420 */ NdrFcShort( 0x0 ), /* 0 */
-/* 422 */ NdrFcShort( 0x0 ), /* 0 */
-/* 424 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 426 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 428 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 430 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 432 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 434 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 436 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 438 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 440 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 442 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 444 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 446 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 448 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 450 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 452 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 454 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 456 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 458 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 460 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textAfterOffset */
-
-/* 462 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 464 */ NdrFcLong( 0x0 ), /* 0 */
-/* 468 */ NdrFcShort( 0xc ), /* 12 */
-/* 470 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 472 */ NdrFcShort( 0xe ), /* 14 */
-/* 474 */ NdrFcShort( 0x40 ), /* 64 */
-/* 476 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 478 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 480 */ NdrFcShort( 0x1 ), /* 1 */
-/* 482 */ NdrFcShort( 0x0 ), /* 0 */
-/* 484 */ NdrFcShort( 0x0 ), /* 0 */
-/* 486 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 488 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 490 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 492 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 494 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 496 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 498 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 500 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 502 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 504 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 506 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 508 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 510 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 512 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 514 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 516 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 518 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 520 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 522 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textAtOffset */
-
-/* 524 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 526 */ NdrFcLong( 0x0 ), /* 0 */
-/* 530 */ NdrFcShort( 0xd ), /* 13 */
-/* 532 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 534 */ NdrFcShort( 0xe ), /* 14 */
-/* 536 */ NdrFcShort( 0x40 ), /* 64 */
-/* 538 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 540 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 542 */ NdrFcShort( 0x1 ), /* 1 */
-/* 544 */ NdrFcShort( 0x0 ), /* 0 */
-/* 546 */ NdrFcShort( 0x0 ), /* 0 */
-/* 548 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 550 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 552 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 554 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 556 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 558 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 560 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 562 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 564 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 566 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 568 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 570 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 572 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 574 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 576 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 578 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 580 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 582 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 584 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure removeSelection */
-
-/* 586 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 588 */ NdrFcLong( 0x0 ), /* 0 */
-/* 592 */ NdrFcShort( 0xe ), /* 14 */
-/* 594 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 596 */ NdrFcShort( 0x8 ), /* 8 */
-/* 598 */ NdrFcShort( 0x8 ), /* 8 */
-/* 600 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 602 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 604 */ NdrFcShort( 0x0 ), /* 0 */
-/* 606 */ NdrFcShort( 0x0 ), /* 0 */
-/* 608 */ NdrFcShort( 0x0 ), /* 0 */
-/* 610 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 612 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 614 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 616 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 618 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 620 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 622 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setCaretOffset */
-
-/* 624 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 626 */ NdrFcLong( 0x0 ), /* 0 */
-/* 630 */ NdrFcShort( 0xf ), /* 15 */
-/* 632 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 634 */ NdrFcShort( 0x8 ), /* 8 */
-/* 636 */ NdrFcShort( 0x8 ), /* 8 */
-/* 638 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 640 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 642 */ NdrFcShort( 0x0 ), /* 0 */
-/* 644 */ NdrFcShort( 0x0 ), /* 0 */
-/* 646 */ NdrFcShort( 0x0 ), /* 0 */
-/* 648 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 650 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 652 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 654 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 656 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 658 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 660 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setSelection */
-
-/* 662 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 664 */ NdrFcLong( 0x0 ), /* 0 */
-/* 668 */ NdrFcShort( 0x10 ), /* 16 */
-/* 670 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 672 */ NdrFcShort( 0x18 ), /* 24 */
-/* 674 */ NdrFcShort( 0x8 ), /* 8 */
-/* 676 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 678 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 680 */ NdrFcShort( 0x0 ), /* 0 */
-/* 682 */ NdrFcShort( 0x0 ), /* 0 */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 688 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 690 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 692 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 694 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 696 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 698 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 700 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 702 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 704 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 706 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 708 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 710 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nCharacters */
-
-/* 712 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 714 */ NdrFcLong( 0x0 ), /* 0 */
-/* 718 */ NdrFcShort( 0x11 ), /* 17 */
-/* 720 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 722 */ NdrFcShort( 0x0 ), /* 0 */
-/* 724 */ NdrFcShort( 0x24 ), /* 36 */
-/* 726 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 728 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 730 */ NdrFcShort( 0x0 ), /* 0 */
-/* 732 */ NdrFcShort( 0x0 ), /* 0 */
-/* 734 */ NdrFcShort( 0x0 ), /* 0 */
-/* 736 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nCharacters */
-
-/* 738 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 740 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 742 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 744 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 746 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 748 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollSubstringTo */
-
-/* 750 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 752 */ NdrFcLong( 0x0 ), /* 0 */
-/* 756 */ NdrFcShort( 0x12 ), /* 18 */
-/* 758 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 760 */ NdrFcShort( 0x16 ), /* 22 */
-/* 762 */ NdrFcShort( 0x8 ), /* 8 */
-/* 764 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 766 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 768 */ NdrFcShort( 0x0 ), /* 0 */
-/* 770 */ NdrFcShort( 0x0 ), /* 0 */
-/* 772 */ NdrFcShort( 0x0 ), /* 0 */
-/* 774 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startIndex */
-
-/* 776 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 778 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 780 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endIndex */
-
-/* 782 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 784 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 786 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter scrollType */
-
-/* 788 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 790 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 792 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 794 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 796 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 798 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollSubstringToPoint */
-
-/* 800 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 802 */ NdrFcLong( 0x0 ), /* 0 */
-/* 806 */ NdrFcShort( 0x13 ), /* 19 */
-/* 808 */ NdrFcShort( 0x38 ), /* X64 Stack size/offset = 56 */
-/* 810 */ NdrFcShort( 0x26 ), /* 38 */
-/* 812 */ NdrFcShort( 0x8 ), /* 8 */
-/* 814 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x6, /* 6 */
-/* 816 */ 0xa, /* 10 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 818 */ NdrFcShort( 0x0 ), /* 0 */
-/* 820 */ NdrFcShort( 0x0 ), /* 0 */
-/* 822 */ NdrFcShort( 0x0 ), /* 0 */
-/* 824 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startIndex */
-
-/* 826 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 828 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 830 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endIndex */
-
-/* 832 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 834 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 836 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordinateType */
-
-/* 838 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 840 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 842 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 844 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 846 */ NdrFcShort( 0x20 ), /* X64 Stack size/offset = 32 */
-/* 848 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 850 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 852 */ NdrFcShort( 0x28 ), /* X64 Stack size/offset = 40 */
-/* 854 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 856 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 858 */ NdrFcShort( 0x30 ), /* X64 Stack size/offset = 48 */
-/* 860 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_newText */
-
-/* 862 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 864 */ NdrFcLong( 0x0 ), /* 0 */
-/* 868 */ NdrFcShort( 0x14 ), /* 20 */
-/* 870 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 872 */ NdrFcShort( 0x0 ), /* 0 */
-/* 874 */ NdrFcShort( 0x8 ), /* 8 */
-/* 876 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 878 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 880 */ NdrFcShort( 0x1 ), /* 1 */
-/* 882 */ NdrFcShort( 0x0 ), /* 0 */
-/* 884 */ NdrFcShort( 0x0 ), /* 0 */
-/* 886 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter newText */
-
-/* 888 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 890 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 892 */ NdrFcShort( 0x32 ), /* Type Offset=50 */
-
- /* Return value */
-
-/* 894 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 896 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 898 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_oldText */
-
-/* 900 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 902 */ NdrFcLong( 0x0 ), /* 0 */
-/* 906 */ NdrFcShort( 0x15 ), /* 21 */
-/* 908 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 910 */ NdrFcShort( 0x0 ), /* 0 */
-/* 912 */ NdrFcShort( 0x8 ), /* 8 */
-/* 914 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 916 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 918 */ NdrFcShort( 0x1 ), /* 1 */
-/* 920 */ NdrFcShort( 0x0 ), /* 0 */
-/* 922 */ NdrFcShort( 0x0 ), /* 0 */
-/* 924 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter oldText */
-
-/* 926 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 928 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 930 */ NdrFcShort( 0x32 ), /* Type Offset=50 */
-
- /* Return value */
-
-/* 932 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 934 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 936 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleText_MIDL_TYPE_FORMAT_STRING AccessibleText__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 8 */ NdrFcShort( 0x1c ), /* Offset= 28 (36) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0xe ), /* Offset= 14 (26) */
-/* 14 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 16 */ NdrFcShort( 0x2 ), /* 2 */
-/* 18 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 20 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 22 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 24 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 26 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 28 */ NdrFcShort( 0x8 ), /* 8 */
-/* 30 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (14) */
-/* 32 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 34 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 36 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0x8 ), /* 8 */
-/* 42 */ NdrFcShort( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0xffde ), /* Offset= -34 (10) */
-/* 46 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 52 */ NdrFcShort( 0x10 ), /* 16 */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* Offset= 0 (56) */
-/* 58 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 60 */ NdrFcShort( 0xffe8 ), /* Offset= -24 (36) */
-/* 62 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 64 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_AccessibleText_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleText, ver. 0.0,
- GUID={0x24FD2FFB,0x3AAD,0x4a08,{0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleText_FormatStringOffsetTable[] =
- {
- 0,
- 44,
- 100,
- 138,
- 206,
- 244,
- 300,
- 350,
- 400,
- 462,
- 524,
- 586,
- 624,
- 662,
- 712,
- 750,
- 800,
- 862,
- 900
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleText_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleText__MIDL_ProcFormatString.Format,
- &IAccessibleText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleText_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleText__MIDL_ProcFormatString.Format,
- &IAccessibleText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(22) _IAccessibleTextProxyVtbl =
-{
- &IAccessibleText_ProxyInfo,
- &IID_IAccessibleText,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleText::addSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_attributes */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_caretOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_characterExtents */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_nSelections */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_offsetAtPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_selection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_text */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textBeforeOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textAfterOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textAtOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::removeSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::setCaretOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::setSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_nCharacters */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::scrollSubstringTo */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::scrollSubstringToPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_newText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_oldText */
-};
-
-const CInterfaceStubVtbl _IAccessibleTextStubVtbl =
-{
- &IID_IAccessibleText,
- &IAccessibleText_ServerInfo,
- 22,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleText__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleText_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleText_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleText_InterfaceNamesList[] =
-{
- "IAccessibleText",
- 0
-};
-
-
-#define _AccessibleText_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleText, pIID, n)
-
-int __stdcall _AccessibleText_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleText_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleText_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleText_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleText_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleText_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleText_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue.h b/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue.h
deleted file mode 100644
index b27f9bb0c2..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue.h
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleValue_h__
-#define __AccessibleValue_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleValue_FWD_DEFINED__
-#define __IAccessibleValue_FWD_DEFINED__
-typedef interface IAccessibleValue IAccessibleValue;
-#endif /* __IAccessibleValue_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleValue_INTERFACE_DEFINED__
-#define __IAccessibleValue_INTERFACE_DEFINED__
-
-/* interface IAccessibleValue */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleValue;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("35855B5B-C566-4fd0-A7B1-E65465600394")
- IAccessibleValue : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_currentValue(
- /* [retval][out] */ VARIANT *currentValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setCurrentValue(
- /* [in] */ VARIANT value) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_maximumValue(
- /* [retval][out] */ VARIANT *maximumValue) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_minimumValue(
- /* [retval][out] */ VARIANT *minimumValue) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleValueVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleValue * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleValue * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_currentValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *currentValue);
-
- HRESULT ( STDMETHODCALLTYPE *setCurrentValue )(
- IAccessibleValue * This,
- /* [in] */ VARIANT value);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_maximumValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *maximumValue);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_minimumValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *minimumValue);
-
- END_INTERFACE
- } IAccessibleValueVtbl;
-
- interface IAccessibleValue
- {
- CONST_VTBL struct IAccessibleValueVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleValue_get_currentValue(This,currentValue) \
- ( (This)->lpVtbl -> get_currentValue(This,currentValue) )
-
-#define IAccessibleValue_setCurrentValue(This,value) \
- ( (This)->lpVtbl -> setCurrentValue(This,value) )
-
-#define IAccessibleValue_get_maximumValue(This,maximumValue) \
- ( (This)->lpVtbl -> get_maximumValue(This,maximumValue) )
-
-#define IAccessibleValue_get_minimumValue(This,minimumValue) \
- ( (This)->lpVtbl -> get_minimumValue(This,minimumValue) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleValue_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
-void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_i.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_i.c
deleted file mode 100644
index bc757ff1a1..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleValue,0x35855B5B,0xC566,0x4fd0,0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_p.c b/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_p.c
deleted file mode 100644
index c3fd72ceb2..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/AccessibleValue_p.c
+++ /dev/null
@@ -1,1029 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleValue.h"
-
-#define TYPE_FORMAT_STRING_SIZE 1007
-#define PROC_FORMAT_STRING_SIZE 153
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleValue_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleValue_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleValue_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleValue_MIDL_TYPE_FORMAT_STRING AccessibleValue__MIDL_TypeFormatString;
-extern const AccessibleValue_MIDL_PROC_FORMAT_STRING AccessibleValue__MIDL_ProcFormatString;
-extern const AccessibleValue_MIDL_EXPR_FORMAT_STRING AccessibleValue__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleValue_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleValue_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN64__)
-#error Invalid build platform for this stub.
-#endif
-
-static const AccessibleValue_MIDL_PROC_FORMAT_STRING AccessibleValue__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_currentValue */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter currentValue */
-
-/* 26 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 28 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 30 */ NdrFcShort( 0x3d2 ), /* Type Offset=978 */
-
- /* Return value */
-
-/* 32 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 34 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 36 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setCurrentValue */
-
-/* 38 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 40 */ NdrFcLong( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0x4 ), /* 4 */
-/* 46 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 48 */ NdrFcShort( 0x0 ), /* 0 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x2, /* 2 */
-/* 54 */ 0xa, /* 10 */
- 0x85, /* Ext Flags: new corr desc, srv corr check, has big amd64 byval param */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x1 ), /* 1 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter value */
-
-/* 64 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 66 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 68 */ NdrFcShort( 0x3e4 ), /* Type Offset=996 */
-
- /* Return value */
-
-/* 70 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 72 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 74 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_maximumValue */
-
-/* 76 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 78 */ NdrFcLong( 0x0 ), /* 0 */
-/* 82 */ NdrFcShort( 0x5 ), /* 5 */
-/* 84 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 86 */ NdrFcShort( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 92 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 94 */ NdrFcShort( 0x1 ), /* 1 */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maximumValue */
-
-/* 102 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 104 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 106 */ NdrFcShort( 0x3d2 ), /* Type Offset=978 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_minimumValue */
-
-/* 114 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 116 */ NdrFcLong( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x6 ), /* 6 */
-/* 122 */ NdrFcShort( 0x18 ), /* X64 Stack size/offset = 24 */
-/* 124 */ NdrFcShort( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0x8 ), /* 8 */
-/* 128 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 130 */ 0xa, /* 10 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 132 */ NdrFcShort( 0x1 ), /* 1 */
-/* 134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter minimumValue */
-
-/* 140 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 142 */ NdrFcShort( 0x8 ), /* X64 Stack size/offset = 8 */
-/* 144 */ NdrFcShort( 0x3d2 ), /* Type Offset=978 */
-
- /* Return value */
-
-/* 146 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 148 */ NdrFcShort( 0x10 ), /* X64 Stack size/offset = 16 */
-/* 150 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleValue_MIDL_TYPE_FORMAT_STRING AccessibleValue__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x3ce ), /* Offset= 974 (978) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0x3b6 ), /* Offset= 950 (958) */
-/* 10 */
- 0x2b, /* FC_NON_ENCAPSULATED_UNION */
- 0x9, /* FC_ULONG */
-/* 12 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 14 */ NdrFcShort( 0xfff8 ), /* -8 */
-/* 16 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 18 */ NdrFcShort( 0x2 ), /* Offset= 2 (20) */
-/* 20 */ NdrFcShort( 0x10 ), /* 16 */
-/* 22 */ NdrFcShort( 0x2f ), /* 47 */
-/* 24 */ NdrFcLong( 0x14 ), /* 20 */
-/* 28 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 30 */ NdrFcLong( 0x3 ), /* 3 */
-/* 34 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 36 */ NdrFcLong( 0x11 ), /* 17 */
-/* 40 */ NdrFcShort( 0x8001 ), /* Simple arm type: FC_BYTE */
-/* 42 */ NdrFcLong( 0x2 ), /* 2 */
-/* 46 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 48 */ NdrFcLong( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x800a ), /* Simple arm type: FC_FLOAT */
-/* 54 */ NdrFcLong( 0x5 ), /* 5 */
-/* 58 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 60 */ NdrFcLong( 0xb ), /* 11 */
-/* 64 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 66 */ NdrFcLong( 0xa ), /* 10 */
-/* 70 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 72 */ NdrFcLong( 0x6 ), /* 6 */
-/* 76 */ NdrFcShort( 0xe8 ), /* Offset= 232 (308) */
-/* 78 */ NdrFcLong( 0x7 ), /* 7 */
-/* 82 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 84 */ NdrFcLong( 0x8 ), /* 8 */
-/* 88 */ NdrFcShort( 0xe2 ), /* Offset= 226 (314) */
-/* 90 */ NdrFcLong( 0xd ), /* 13 */
-/* 94 */ NdrFcShort( 0xf6 ), /* Offset= 246 (340) */
-/* 96 */ NdrFcLong( 0x9 ), /* 9 */
-/* 100 */ NdrFcShort( 0x102 ), /* Offset= 258 (358) */
-/* 102 */ NdrFcLong( 0x2000 ), /* 8192 */
-/* 106 */ NdrFcShort( 0x10e ), /* Offset= 270 (376) */
-/* 108 */ NdrFcLong( 0x24 ), /* 36 */
-/* 112 */ NdrFcShort( 0x304 ), /* Offset= 772 (884) */
-/* 114 */ NdrFcLong( 0x4024 ), /* 16420 */
-/* 118 */ NdrFcShort( 0x2fe ), /* Offset= 766 (884) */
-/* 120 */ NdrFcLong( 0x4011 ), /* 16401 */
-/* 124 */ NdrFcShort( 0x2fc ), /* Offset= 764 (888) */
-/* 126 */ NdrFcLong( 0x4002 ), /* 16386 */
-/* 130 */ NdrFcShort( 0x2fa ), /* Offset= 762 (892) */
-/* 132 */ NdrFcLong( 0x4003 ), /* 16387 */
-/* 136 */ NdrFcShort( 0x2f8 ), /* Offset= 760 (896) */
-/* 138 */ NdrFcLong( 0x4014 ), /* 16404 */
-/* 142 */ NdrFcShort( 0x2f6 ), /* Offset= 758 (900) */
-/* 144 */ NdrFcLong( 0x4004 ), /* 16388 */
-/* 148 */ NdrFcShort( 0x2f4 ), /* Offset= 756 (904) */
-/* 150 */ NdrFcLong( 0x4005 ), /* 16389 */
-/* 154 */ NdrFcShort( 0x2f2 ), /* Offset= 754 (908) */
-/* 156 */ NdrFcLong( 0x400b ), /* 16395 */
-/* 160 */ NdrFcShort( 0x2dc ), /* Offset= 732 (892) */
-/* 162 */ NdrFcLong( 0x400a ), /* 16394 */
-/* 166 */ NdrFcShort( 0x2da ), /* Offset= 730 (896) */
-/* 168 */ NdrFcLong( 0x4006 ), /* 16390 */
-/* 172 */ NdrFcShort( 0x2e4 ), /* Offset= 740 (912) */
-/* 174 */ NdrFcLong( 0x4007 ), /* 16391 */
-/* 178 */ NdrFcShort( 0x2da ), /* Offset= 730 (908) */
-/* 180 */ NdrFcLong( 0x4008 ), /* 16392 */
-/* 184 */ NdrFcShort( 0x2dc ), /* Offset= 732 (916) */
-/* 186 */ NdrFcLong( 0x400d ), /* 16397 */
-/* 190 */ NdrFcShort( 0x2da ), /* Offset= 730 (920) */
-/* 192 */ NdrFcLong( 0x4009 ), /* 16393 */
-/* 196 */ NdrFcShort( 0x2d8 ), /* Offset= 728 (924) */
-/* 198 */ NdrFcLong( 0x6000 ), /* 24576 */
-/* 202 */ NdrFcShort( 0x2d6 ), /* Offset= 726 (928) */
-/* 204 */ NdrFcLong( 0x400c ), /* 16396 */
-/* 208 */ NdrFcShort( 0x2d4 ), /* Offset= 724 (932) */
-/* 210 */ NdrFcLong( 0x10 ), /* 16 */
-/* 214 */ NdrFcShort( 0x8002 ), /* Simple arm type: FC_CHAR */
-/* 216 */ NdrFcLong( 0x12 ), /* 18 */
-/* 220 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 222 */ NdrFcLong( 0x13 ), /* 19 */
-/* 226 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 228 */ NdrFcLong( 0x15 ), /* 21 */
-/* 232 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 234 */ NdrFcLong( 0x16 ), /* 22 */
-/* 238 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 240 */ NdrFcLong( 0x17 ), /* 23 */
-/* 244 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 246 */ NdrFcLong( 0xe ), /* 14 */
-/* 250 */ NdrFcShort( 0x2b2 ), /* Offset= 690 (940) */
-/* 252 */ NdrFcLong( 0x400e ), /* 16398 */
-/* 256 */ NdrFcShort( 0x2b6 ), /* Offset= 694 (950) */
-/* 258 */ NdrFcLong( 0x4010 ), /* 16400 */
-/* 262 */ NdrFcShort( 0x2b4 ), /* Offset= 692 (954) */
-/* 264 */ NdrFcLong( 0x4012 ), /* 16402 */
-/* 268 */ NdrFcShort( 0x270 ), /* Offset= 624 (892) */
-/* 270 */ NdrFcLong( 0x4013 ), /* 16403 */
-/* 274 */ NdrFcShort( 0x26e ), /* Offset= 622 (896) */
-/* 276 */ NdrFcLong( 0x4015 ), /* 16405 */
-/* 280 */ NdrFcShort( 0x26c ), /* Offset= 620 (900) */
-/* 282 */ NdrFcLong( 0x4016 ), /* 16406 */
-/* 286 */ NdrFcShort( 0x262 ), /* Offset= 610 (896) */
-/* 288 */ NdrFcLong( 0x4017 ), /* 16407 */
-/* 292 */ NdrFcShort( 0x25c ), /* Offset= 604 (896) */
-/* 294 */ NdrFcLong( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* Offset= 0 (298) */
-/* 300 */ NdrFcLong( 0x1 ), /* 1 */
-/* 304 */ NdrFcShort( 0x0 ), /* Offset= 0 (304) */
-/* 306 */ NdrFcShort( 0xffff ), /* Offset= -1 (305) */
-/* 308 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 310 */ NdrFcShort( 0x8 ), /* 8 */
-/* 312 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 314 */
- 0x13, 0x0, /* FC_OP */
-/* 316 */ NdrFcShort( 0xe ), /* Offset= 14 (330) */
-/* 318 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 320 */ NdrFcShort( 0x2 ), /* 2 */
-/* 322 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 324 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 326 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 328 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 330 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 332 */ NdrFcShort( 0x8 ), /* 8 */
-/* 334 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (318) */
-/* 336 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 338 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 340 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 342 */ NdrFcLong( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-/* 348 */ NdrFcShort( 0x0 ), /* 0 */
-/* 350 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 352 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 354 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 356 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 358 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 360 */ NdrFcLong( 0x20400 ), /* 132096 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-/* 366 */ NdrFcShort( 0x0 ), /* 0 */
-/* 368 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 370 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 372 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 374 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 376 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 378 */ NdrFcShort( 0x2 ), /* Offset= 2 (380) */
-/* 380 */
- 0x13, 0x0, /* FC_OP */
-/* 382 */ NdrFcShort( 0x1e4 ), /* Offset= 484 (866) */
-/* 384 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x89, /* 137 */
-/* 386 */ NdrFcShort( 0x20 ), /* 32 */
-/* 388 */ NdrFcShort( 0xa ), /* 10 */
-/* 390 */ NdrFcLong( 0x8 ), /* 8 */
-/* 394 */ NdrFcShort( 0x50 ), /* Offset= 80 (474) */
-/* 396 */ NdrFcLong( 0xd ), /* 13 */
-/* 400 */ NdrFcShort( 0x70 ), /* Offset= 112 (512) */
-/* 402 */ NdrFcLong( 0x9 ), /* 9 */
-/* 406 */ NdrFcShort( 0x90 ), /* Offset= 144 (550) */
-/* 408 */ NdrFcLong( 0xc ), /* 12 */
-/* 412 */ NdrFcShort( 0xb0 ), /* Offset= 176 (588) */
-/* 414 */ NdrFcLong( 0x24 ), /* 36 */
-/* 418 */ NdrFcShort( 0x102 ), /* Offset= 258 (676) */
-/* 420 */ NdrFcLong( 0x800d ), /* 32781 */
-/* 424 */ NdrFcShort( 0x11e ), /* Offset= 286 (710) */
-/* 426 */ NdrFcLong( 0x10 ), /* 16 */
-/* 430 */ NdrFcShort( 0x138 ), /* Offset= 312 (742) */
-/* 432 */ NdrFcLong( 0x2 ), /* 2 */
-/* 436 */ NdrFcShort( 0x14e ), /* Offset= 334 (770) */
-/* 438 */ NdrFcLong( 0x3 ), /* 3 */
-/* 442 */ NdrFcShort( 0x164 ), /* Offset= 356 (798) */
-/* 444 */ NdrFcLong( 0x14 ), /* 20 */
-/* 448 */ NdrFcShort( 0x17a ), /* Offset= 378 (826) */
-/* 450 */ NdrFcShort( 0xffff ), /* Offset= -1 (449) */
-/* 452 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 454 */ NdrFcShort( 0x0 ), /* 0 */
-/* 456 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 462 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 466 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 468 */
- 0x13, 0x0, /* FC_OP */
-/* 470 */ NdrFcShort( 0xff74 ), /* Offset= -140 (330) */
-/* 472 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 474 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 476 */ NdrFcShort( 0x10 ), /* 16 */
-/* 478 */ NdrFcShort( 0x0 ), /* 0 */
-/* 480 */ NdrFcShort( 0x6 ), /* Offset= 6 (486) */
-/* 482 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 484 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 486 */
- 0x11, 0x0, /* FC_RP */
-/* 488 */ NdrFcShort( 0xffdc ), /* Offset= -36 (452) */
-/* 490 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 492 */ NdrFcShort( 0x0 ), /* 0 */
-/* 494 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 496 */ NdrFcShort( 0x0 ), /* 0 */
-/* 498 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 500 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 504 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 506 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 508 */ NdrFcShort( 0xff58 ), /* Offset= -168 (340) */
-/* 510 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 512 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 514 */ NdrFcShort( 0x10 ), /* 16 */
-/* 516 */ NdrFcShort( 0x0 ), /* 0 */
-/* 518 */ NdrFcShort( 0x6 ), /* Offset= 6 (524) */
-/* 520 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 522 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 524 */
- 0x11, 0x0, /* FC_RP */
-/* 526 */ NdrFcShort( 0xffdc ), /* Offset= -36 (490) */
-/* 528 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 534 */ NdrFcShort( 0x0 ), /* 0 */
-/* 536 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 538 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 542 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 544 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 546 */ NdrFcShort( 0xff44 ), /* Offset= -188 (358) */
-/* 548 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 550 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 552 */ NdrFcShort( 0x10 ), /* 16 */
-/* 554 */ NdrFcShort( 0x0 ), /* 0 */
-/* 556 */ NdrFcShort( 0x6 ), /* Offset= 6 (562) */
-/* 558 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 560 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 562 */
- 0x11, 0x0, /* FC_RP */
-/* 564 */ NdrFcShort( 0xffdc ), /* Offset= -36 (528) */
-/* 566 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 568 */ NdrFcShort( 0x0 ), /* 0 */
-/* 570 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 572 */ NdrFcShort( 0x0 ), /* 0 */
-/* 574 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 576 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 580 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 582 */
- 0x13, 0x0, /* FC_OP */
-/* 584 */ NdrFcShort( 0x176 ), /* Offset= 374 (958) */
-/* 586 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 588 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 590 */ NdrFcShort( 0x10 ), /* 16 */
-/* 592 */ NdrFcShort( 0x0 ), /* 0 */
-/* 594 */ NdrFcShort( 0x6 ), /* Offset= 6 (600) */
-/* 596 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 598 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 600 */
- 0x11, 0x0, /* FC_RP */
-/* 602 */ NdrFcShort( 0xffdc ), /* Offset= -36 (566) */
-/* 604 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 606 */ NdrFcLong( 0x2f ), /* 47 */
-/* 610 */ NdrFcShort( 0x0 ), /* 0 */
-/* 612 */ NdrFcShort( 0x0 ), /* 0 */
-/* 614 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 616 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 618 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 620 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 622 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 624 */ NdrFcShort( 0x1 ), /* 1 */
-/* 626 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 628 */ NdrFcShort( 0x4 ), /* 4 */
-/* 630 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 632 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 634 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 636 */ NdrFcShort( 0x18 ), /* 24 */
-/* 638 */ NdrFcShort( 0x0 ), /* 0 */
-/* 640 */ NdrFcShort( 0xa ), /* Offset= 10 (650) */
-/* 642 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 644 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 646 */ NdrFcShort( 0xffd6 ), /* Offset= -42 (604) */
-/* 648 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 650 */
- 0x13, 0x0, /* FC_OP */
-/* 652 */ NdrFcShort( 0xffe2 ), /* Offset= -30 (622) */
-/* 654 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 656 */ NdrFcShort( 0x0 ), /* 0 */
-/* 658 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 660 */ NdrFcShort( 0x0 ), /* 0 */
-/* 662 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 664 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 668 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 670 */
- 0x13, 0x0, /* FC_OP */
-/* 672 */ NdrFcShort( 0xffda ), /* Offset= -38 (634) */
-/* 674 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 676 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 678 */ NdrFcShort( 0x10 ), /* 16 */
-/* 680 */ NdrFcShort( 0x0 ), /* 0 */
-/* 682 */ NdrFcShort( 0x6 ), /* Offset= 6 (688) */
-/* 684 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 686 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 688 */
- 0x11, 0x0, /* FC_RP */
-/* 690 */ NdrFcShort( 0xffdc ), /* Offset= -36 (654) */
-/* 692 */
- 0x1d, /* FC_SMFARRAY */
- 0x0, /* 0 */
-/* 694 */ NdrFcShort( 0x8 ), /* 8 */
-/* 696 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 698 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 700 */ NdrFcShort( 0x10 ), /* 16 */
-/* 702 */ 0x8, /* FC_LONG */
- 0x6, /* FC_SHORT */
-/* 704 */ 0x6, /* FC_SHORT */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 706 */ 0x0, /* 0 */
- NdrFcShort( 0xfff1 ), /* Offset= -15 (692) */
- 0x5b, /* FC_END */
-/* 710 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 712 */ NdrFcShort( 0x20 ), /* 32 */
-/* 714 */ NdrFcShort( 0x0 ), /* 0 */
-/* 716 */ NdrFcShort( 0xa ), /* Offset= 10 (726) */
-/* 718 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 720 */ 0x36, /* FC_POINTER */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 722 */ 0x0, /* 0 */
- NdrFcShort( 0xffe7 ), /* Offset= -25 (698) */
- 0x5b, /* FC_END */
-/* 726 */
- 0x11, 0x0, /* FC_RP */
-/* 728 */ NdrFcShort( 0xff12 ), /* Offset= -238 (490) */
-/* 730 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 732 */ NdrFcShort( 0x1 ), /* 1 */
-/* 734 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 736 */ NdrFcShort( 0x0 ), /* 0 */
-/* 738 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 740 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 742 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 744 */ NdrFcShort( 0x10 ), /* 16 */
-/* 746 */ NdrFcShort( 0x0 ), /* 0 */
-/* 748 */ NdrFcShort( 0x6 ), /* Offset= 6 (754) */
-/* 750 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 752 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 754 */
- 0x13, 0x0, /* FC_OP */
-/* 756 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (730) */
-/* 758 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 760 */ NdrFcShort( 0x2 ), /* 2 */
-/* 762 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 764 */ NdrFcShort( 0x0 ), /* 0 */
-/* 766 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 768 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 770 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 772 */ NdrFcShort( 0x10 ), /* 16 */
-/* 774 */ NdrFcShort( 0x0 ), /* 0 */
-/* 776 */ NdrFcShort( 0x6 ), /* Offset= 6 (782) */
-/* 778 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 780 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 782 */
- 0x13, 0x0, /* FC_OP */
-/* 784 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (758) */
-/* 786 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 788 */ NdrFcShort( 0x4 ), /* 4 */
-/* 790 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 792 */ NdrFcShort( 0x0 ), /* 0 */
-/* 794 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 796 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 798 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 800 */ NdrFcShort( 0x10 ), /* 16 */
-/* 802 */ NdrFcShort( 0x0 ), /* 0 */
-/* 804 */ NdrFcShort( 0x6 ), /* Offset= 6 (810) */
-/* 806 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 808 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 810 */
- 0x13, 0x0, /* FC_OP */
-/* 812 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (786) */
-/* 814 */
- 0x1b, /* FC_CARRAY */
- 0x7, /* 7 */
-/* 816 */ NdrFcShort( 0x8 ), /* 8 */
-/* 818 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 820 */ NdrFcShort( 0x0 ), /* 0 */
-/* 822 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 824 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 826 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 828 */ NdrFcShort( 0x10 ), /* 16 */
-/* 830 */ NdrFcShort( 0x0 ), /* 0 */
-/* 832 */ NdrFcShort( 0x6 ), /* Offset= 6 (838) */
-/* 834 */ 0x8, /* FC_LONG */
- 0x40, /* FC_STRUCTPAD4 */
-/* 836 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 838 */
- 0x13, 0x0, /* FC_OP */
-/* 840 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (814) */
-/* 842 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 844 */ NdrFcShort( 0x8 ), /* 8 */
-/* 846 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 848 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 850 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 852 */ NdrFcShort( 0x8 ), /* 8 */
-/* 854 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 856 */ NdrFcShort( 0xffc8 ), /* -56 */
-/* 858 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 860 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 862 */ NdrFcShort( 0xffec ), /* Offset= -20 (842) */
-/* 864 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 866 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 868 */ NdrFcShort( 0x38 ), /* 56 */
-/* 870 */ NdrFcShort( 0xffec ), /* Offset= -20 (850) */
-/* 872 */ NdrFcShort( 0x0 ), /* Offset= 0 (872) */
-/* 874 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 876 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 878 */ 0x40, /* FC_STRUCTPAD4 */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 880 */ 0x0, /* 0 */
- NdrFcShort( 0xfe0f ), /* Offset= -497 (384) */
- 0x5b, /* FC_END */
-/* 884 */
- 0x13, 0x0, /* FC_OP */
-/* 886 */ NdrFcShort( 0xff04 ), /* Offset= -252 (634) */
-/* 888 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 890 */ 0x1, /* FC_BYTE */
- 0x5c, /* FC_PAD */
-/* 892 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 894 */ 0x6, /* FC_SHORT */
- 0x5c, /* FC_PAD */
-/* 896 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 898 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 900 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 902 */ 0xb, /* FC_HYPER */
- 0x5c, /* FC_PAD */
-/* 904 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 906 */ 0xa, /* FC_FLOAT */
- 0x5c, /* FC_PAD */
-/* 908 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 910 */ 0xc, /* FC_DOUBLE */
- 0x5c, /* FC_PAD */
-/* 912 */
- 0x13, 0x0, /* FC_OP */
-/* 914 */ NdrFcShort( 0xfda2 ), /* Offset= -606 (308) */
-/* 916 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 918 */ NdrFcShort( 0xfda4 ), /* Offset= -604 (314) */
-/* 920 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 922 */ NdrFcShort( 0xfdba ), /* Offset= -582 (340) */
-/* 924 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 926 */ NdrFcShort( 0xfdc8 ), /* Offset= -568 (358) */
-/* 928 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 930 */ NdrFcShort( 0xfdd6 ), /* Offset= -554 (376) */
-/* 932 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 934 */ NdrFcShort( 0x2 ), /* Offset= 2 (936) */
-/* 936 */
- 0x13, 0x0, /* FC_OP */
-/* 938 */ NdrFcShort( 0x14 ), /* Offset= 20 (958) */
-/* 940 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 942 */ NdrFcShort( 0x10 ), /* 16 */
-/* 944 */ 0x6, /* FC_SHORT */
- 0x1, /* FC_BYTE */
-/* 946 */ 0x1, /* FC_BYTE */
- 0x8, /* FC_LONG */
-/* 948 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 950 */
- 0x13, 0x0, /* FC_OP */
-/* 952 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (940) */
-/* 954 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 956 */ 0x2, /* FC_CHAR */
- 0x5c, /* FC_PAD */
-/* 958 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x7, /* 7 */
-/* 960 */ NdrFcShort( 0x20 ), /* 32 */
-/* 962 */ NdrFcShort( 0x0 ), /* 0 */
-/* 964 */ NdrFcShort( 0x0 ), /* Offset= 0 (964) */
-/* 966 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 968 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 970 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 972 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 974 */ NdrFcShort( 0xfc3c ), /* Offset= -964 (10) */
-/* 976 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 978 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 980 */ NdrFcShort( 0x0 ), /* 0 */
-/* 982 */ NdrFcShort( 0x18 ), /* 24 */
-/* 984 */ NdrFcShort( 0x0 ), /* 0 */
-/* 986 */ NdrFcShort( 0xfc2c ), /* Offset= -980 (6) */
-/* 988 */
- 0x11, 0x0, /* FC_RP */
-/* 990 */ NdrFcShort( 0x6 ), /* Offset= 6 (996) */
-/* 992 */
- 0x12, 0x0, /* FC_UP */
-/* 994 */ NdrFcShort( 0xffdc ), /* Offset= -36 (958) */
-/* 996 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 998 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1000 */ NdrFcShort( 0x18 ), /* 24 */
-/* 1002 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1004 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (992) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- VARIANT_UserSize
- ,VARIANT_UserMarshal
- ,VARIANT_UserUnmarshal
- ,VARIANT_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleValue, ver. 0.0,
- GUID={0x35855B5B,0xC566,0x4fd0,{0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleValue_FormatStringOffsetTable[] =
- {
- 0,
- 38,
- 76,
- 114
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleValue_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleValue__MIDL_ProcFormatString.Format,
- &IAccessibleValue_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleValue_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleValue__MIDL_ProcFormatString.Format,
- &IAccessibleValue_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(7) _IAccessibleValueProxyVtbl =
-{
- &IAccessibleValue_ProxyInfo,
- &IID_IAccessibleValue,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_currentValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::setCurrentValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_maximumValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_minimumValue */
-};
-
-const CInterfaceStubVtbl _IAccessibleValueStubVtbl =
-{
- &IID_IAccessibleValue,
- &IAccessibleValue_ServerInfo,
- 7,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleValue__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleValue_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleValueProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleValue_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleValueStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleValue_InterfaceNamesList[] =
-{
- "IAccessibleValue",
- 0
-};
-
-
-#define _AccessibleValue_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleValue, pIID, n)
-
-int __stdcall _AccessibleValue_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleValue_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleValue_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleValue_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleValue_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleValue_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleValue_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/IA2CommonTypes.h b/src/3rdparty/iaccessible2/generated/amd64/IA2CommonTypes.h
deleted file mode 100644
index 5b5a313541..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/IA2CommonTypes.h
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for IA2CommonTypes.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __IA2CommonTypes_h__
-#define __IA2CommonTypes_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_IA2CommonTypes_0000_0000 */
-/* [local] */
-
-
-enum IA2ScrollType
- { IA2_SCROLL_TYPE_TOP_LEFT = 0,
- IA2_SCROLL_TYPE_BOTTOM_RIGHT = ( IA2_SCROLL_TYPE_TOP_LEFT + 1 ) ,
- IA2_SCROLL_TYPE_TOP_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_RIGHT + 1 ) ,
- IA2_SCROLL_TYPE_BOTTOM_EDGE = ( IA2_SCROLL_TYPE_TOP_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_LEFT_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_RIGHT_EDGE = ( IA2_SCROLL_TYPE_LEFT_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_ANYWHERE = ( IA2_SCROLL_TYPE_RIGHT_EDGE + 1 )
- } ;
-
-enum IA2CoordinateType
- { IA2_COORDTYPE_SCREEN_RELATIVE = 0,
- IA2_COORDTYPE_PARENT_RELATIVE = ( IA2_COORDTYPE_SCREEN_RELATIVE + 1 )
- } ;
-
-enum IA2TextSpecialOffsets
- { IA2_TEXT_OFFSET_LENGTH = -1,
- IA2_TEXT_OFFSET_CARET = -2
- } ;
-
-enum IA2TableModelChangeType
- { IA2_TABLE_MODEL_CHANGE_INSERT = 0,
- IA2_TABLE_MODEL_CHANGE_DELETE = ( IA2_TABLE_MODEL_CHANGE_INSERT + 1 ) ,
- IA2_TABLE_MODEL_CHANGE_UPDATE = ( IA2_TABLE_MODEL_CHANGE_DELETE + 1 )
- } ;
-typedef struct IA2TableModelChange
- {
- enum IA2TableModelChangeType type;
- long firstRow;
- long lastRow;
- long firstColumn;
- long lastColumn;
- } IA2TableModelChange;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_IA2CommonTypes_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_IA2CommonTypes_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.h b/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.h
deleted file mode 100644
index 31142c6b44..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.h
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for IA2TypeLibrary.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __IA2TypeLibrary_h__
-#define __IA2TypeLibrary_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_IA2TypeLibrary_0000_0000 */
-/* [local] */
-
-
-// Type Library Definitions
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_IA2TypeLibrary_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_IA2TypeLibrary_0000_0000_v0_0_s_ifspec;
-
-
-#ifndef __IAccessible2Lib_LIBRARY_DEFINED__
-#define __IAccessible2Lib_LIBRARY_DEFINED__
-
-/* library IAccessible2Lib */
-/* [hidden][version][helpstring][uuid] */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-EXTERN_C const IID LIBID_IAccessible2Lib;
-#endif /* __IAccessible2Lib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.tlb b/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.tlb
deleted file mode 100644
index 44e7cdc173..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.tlb
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary_i.c b/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary_i.c
deleted file mode 100644
index f3eabd2c49..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:54:00 2012
- */
-/* Compiler settings for IA2TypeLibrary.idl:
- Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, LIBID_IAccessible2Lib,0xc974e070,0x3787,0x490a,0x87,0xb0,0xe3,0x33,0xb0,0x6c,0xa1,0xe2);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/amd64/dlldata.c b/src/3rdparty/iaccessible2/generated/amd64/dlldata.c
deleted file mode 100644
index e1e15a1fc0..0000000000
--- a/src/3rdparty/iaccessible2/generated/amd64/dlldata.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*********************************************************
- DllData file -- generated by MIDL compiler
-
- DO NOT ALTER THIS FILE
-
- This file is regenerated by MIDL on every IDL file compile.
-
- To completely reconstruct this file, delete it and rerun MIDL
- on all the IDL files in this DLL, specifying this file for the
- /dlldata command line option
-
-*********************************************************/
-
-#define PROXY_DELEGATION
-
-#include <rpcproxy.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EXTERN_PROXY_FILE( Accessible2 )
-EXTERN_PROXY_FILE( AccessibleAction )
-EXTERN_PROXY_FILE( AccessibleApplication )
-EXTERN_PROXY_FILE( AccessibleComponent )
-EXTERN_PROXY_FILE( AccessibleEditableText )
-EXTERN_PROXY_FILE( AccessibleHyperlink )
-EXTERN_PROXY_FILE( AccessibleHypertext )
-EXTERN_PROXY_FILE( AccessibleImage )
-EXTERN_PROXY_FILE( AccessibleRelation )
-EXTERN_PROXY_FILE( AccessibleTable )
-EXTERN_PROXY_FILE( AccessibleTable2 )
-EXTERN_PROXY_FILE( AccessibleTableCell )
-EXTERN_PROXY_FILE( AccessibleText )
-EXTERN_PROXY_FILE( AccessibleValue )
-
-
-PROXYFILE_LIST_START
-/* Start of list */
- REFERENCE_PROXY_FILE( Accessible2 ),
- REFERENCE_PROXY_FILE( AccessibleAction ),
- REFERENCE_PROXY_FILE( AccessibleApplication ),
- REFERENCE_PROXY_FILE( AccessibleComponent ),
- REFERENCE_PROXY_FILE( AccessibleEditableText ),
- REFERENCE_PROXY_FILE( AccessibleHyperlink ),
- REFERENCE_PROXY_FILE( AccessibleHypertext ),
- REFERENCE_PROXY_FILE( AccessibleImage ),
- REFERENCE_PROXY_FILE( AccessibleRelation ),
- REFERENCE_PROXY_FILE( AccessibleTable ),
- REFERENCE_PROXY_FILE( AccessibleTable2 ),
- REFERENCE_PROXY_FILE( AccessibleTableCell ),
- REFERENCE_PROXY_FILE( AccessibleText ),
- REFERENCE_PROXY_FILE( AccessibleValue ),
-/* End of list */
-PROXYFILE_LIST_END
-
-
-DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
-
-#ifdef __cplusplus
-} /*extern "C" */
-#endif
-
-/* end of generated dlldata file */
diff --git a/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all.h b/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all.h
new file mode 100644
index 0000000000..4f7b7d07d7
--- /dev/null
+++ b/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all.h
@@ -0,0 +1,4667 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Mon Aug 11 14:34:44 2014
+ */
+/* Compiler settings for ia2_api_all.idl:
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING( ) */
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __ia2_api_all_h__
+#define __ia2_api_all_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IAccessibleRelation_FWD_DEFINED__
+#define __IAccessibleRelation_FWD_DEFINED__
+typedef interface IAccessibleRelation IAccessibleRelation;
+#endif /* __IAccessibleRelation_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleAction_FWD_DEFINED__
+#define __IAccessibleAction_FWD_DEFINED__
+typedef interface IAccessibleAction IAccessibleAction;
+#endif /* __IAccessibleAction_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_FWD_DEFINED__
+#define __IAccessible2_FWD_DEFINED__
+typedef interface IAccessible2 IAccessible2;
+#endif /* __IAccessible2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_FWD_DEFINED__
+#define __IAccessible2_2_FWD_DEFINED__
+typedef interface IAccessible2_2 IAccessible2_2;
+#endif /* __IAccessible2_2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleComponent_FWD_DEFINED__
+#define __IAccessibleComponent_FWD_DEFINED__
+typedef interface IAccessibleComponent IAccessibleComponent;
+#endif /* __IAccessibleComponent_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_FWD_DEFINED__
+#define __IAccessibleValue_FWD_DEFINED__
+typedef interface IAccessibleValue IAccessibleValue;
+#endif /* __IAccessibleValue_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText_FWD_DEFINED__
+#define __IAccessibleText_FWD_DEFINED__
+typedef interface IAccessibleText IAccessibleText;
+#endif /* __IAccessibleText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_FWD_DEFINED__
+#define __IAccessibleText2_FWD_DEFINED__
+typedef interface IAccessibleText2 IAccessibleText2;
+#endif /* __IAccessibleText2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_FWD_DEFINED__
+#define __IAccessibleEditableText_FWD_DEFINED__
+typedef interface IAccessibleEditableText IAccessibleEditableText;
+#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_FWD_DEFINED__
+#define __IAccessibleHyperlink_FWD_DEFINED__
+typedef interface IAccessibleHyperlink IAccessibleHyperlink;
+#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_FWD_DEFINED__
+#define __IAccessibleHypertext_FWD_DEFINED__
+typedef interface IAccessibleHypertext IAccessibleHypertext;
+#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_FWD_DEFINED__
+#define __IAccessibleHypertext2_FWD_DEFINED__
+typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
+#endif /* __IAccessibleHypertext2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_FWD_DEFINED__
+#define __IAccessibleTable_FWD_DEFINED__
+typedef interface IAccessibleTable IAccessibleTable;
+#endif /* __IAccessibleTable_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_FWD_DEFINED__
+#define __IAccessibleTable2_FWD_DEFINED__
+typedef interface IAccessibleTable2 IAccessibleTable2;
+#endif /* __IAccessibleTable2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_FWD_DEFINED__
+#define __IAccessibleTableCell_FWD_DEFINED__
+typedef interface IAccessibleTableCell IAccessibleTableCell;
+#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_FWD_DEFINED__
+#define __IAccessibleImage_FWD_DEFINED__
+typedef interface IAccessibleImage IAccessibleImage;
+#endif /* __IAccessibleImage_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleApplication_FWD_DEFINED__
+#define __IAccessibleApplication_FWD_DEFINED__
+typedef interface IAccessibleApplication IAccessibleApplication;
+#endif /* __IAccessibleApplication_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_FWD_DEFINED__
+#define __IAccessibleDocument_FWD_DEFINED__
+typedef interface IAccessibleDocument IAccessibleDocument;
+#endif /* __IAccessibleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_FWD_DEFINED__
+#define __IAccessible2_FWD_DEFINED__
+typedef interface IAccessible2 IAccessible2;
+#endif /* __IAccessible2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_FWD_DEFINED__
+#define __IAccessible2_2_FWD_DEFINED__
+typedef interface IAccessible2_2 IAccessible2_2;
+#endif /* __IAccessible2_2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleAction_FWD_DEFINED__
+#define __IAccessibleAction_FWD_DEFINED__
+typedef interface IAccessibleAction IAccessibleAction;
+#endif /* __IAccessibleAction_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleApplication_FWD_DEFINED__
+#define __IAccessibleApplication_FWD_DEFINED__
+typedef interface IAccessibleApplication IAccessibleApplication;
+#endif /* __IAccessibleApplication_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleComponent_FWD_DEFINED__
+#define __IAccessibleComponent_FWD_DEFINED__
+typedef interface IAccessibleComponent IAccessibleComponent;
+#endif /* __IAccessibleComponent_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_FWD_DEFINED__
+#define __IAccessibleDocument_FWD_DEFINED__
+typedef interface IAccessibleDocument IAccessibleDocument;
+#endif /* __IAccessibleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_FWD_DEFINED__
+#define __IAccessibleEditableText_FWD_DEFINED__
+typedef interface IAccessibleEditableText IAccessibleEditableText;
+#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_FWD_DEFINED__
+#define __IAccessibleHyperlink_FWD_DEFINED__
+typedef interface IAccessibleHyperlink IAccessibleHyperlink;
+#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText_FWD_DEFINED__
+#define __IAccessibleText_FWD_DEFINED__
+typedef interface IAccessibleText IAccessibleText;
+#endif /* __IAccessibleText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_FWD_DEFINED__
+#define __IAccessibleHypertext_FWD_DEFINED__
+typedef interface IAccessibleHypertext IAccessibleHypertext;
+#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_FWD_DEFINED__
+#define __IAccessibleHypertext2_FWD_DEFINED__
+typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
+#endif /* __IAccessibleHypertext2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_FWD_DEFINED__
+#define __IAccessibleImage_FWD_DEFINED__
+typedef interface IAccessibleImage IAccessibleImage;
+#endif /* __IAccessibleImage_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleRelation_FWD_DEFINED__
+#define __IAccessibleRelation_FWD_DEFINED__
+typedef interface IAccessibleRelation IAccessibleRelation;
+#endif /* __IAccessibleRelation_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_FWD_DEFINED__
+#define __IAccessibleTable_FWD_DEFINED__
+typedef interface IAccessibleTable IAccessibleTable;
+#endif /* __IAccessibleTable_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_FWD_DEFINED__
+#define __IAccessibleTable2_FWD_DEFINED__
+typedef interface IAccessibleTable2 IAccessibleTable2;
+#endif /* __IAccessibleTable2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_FWD_DEFINED__
+#define __IAccessibleTableCell_FWD_DEFINED__
+typedef interface IAccessibleTableCell IAccessibleTableCell;
+#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_FWD_DEFINED__
+#define __IAccessibleText2_FWD_DEFINED__
+typedef interface IAccessibleText2 IAccessibleText2;
+#endif /* __IAccessibleText2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_FWD_DEFINED__
+#define __IAccessibleValue_FWD_DEFINED__
+typedef interface IAccessibleValue IAccessibleValue;
+#endif /* __IAccessibleValue_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oaidl.h"
+#include "oleacc.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0000 */
+/* [local] */
+
+
+enum IA2ScrollType
+ { IA2_SCROLL_TYPE_TOP_LEFT = 0,
+ IA2_SCROLL_TYPE_BOTTOM_RIGHT = ( IA2_SCROLL_TYPE_TOP_LEFT + 1 ) ,
+ IA2_SCROLL_TYPE_TOP_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_RIGHT + 1 ) ,
+ IA2_SCROLL_TYPE_BOTTOM_EDGE = ( IA2_SCROLL_TYPE_TOP_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_LEFT_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_RIGHT_EDGE = ( IA2_SCROLL_TYPE_LEFT_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_ANYWHERE = ( IA2_SCROLL_TYPE_RIGHT_EDGE + 1 )
+ } ;
+
+enum IA2CoordinateType
+ { IA2_COORDTYPE_SCREEN_RELATIVE = 0,
+ IA2_COORDTYPE_PARENT_RELATIVE = ( IA2_COORDTYPE_SCREEN_RELATIVE + 1 )
+ } ;
+
+enum IA2TextSpecialOffsets
+ { IA2_TEXT_OFFSET_LENGTH = -1,
+ IA2_TEXT_OFFSET_CARET = -2
+ } ;
+
+enum IA2TableModelChangeType
+ { IA2_TABLE_MODEL_CHANGE_INSERT = 0,
+ IA2_TABLE_MODEL_CHANGE_DELETE = ( IA2_TABLE_MODEL_CHANGE_INSERT + 1 ) ,
+ IA2_TABLE_MODEL_CHANGE_UPDATE = ( IA2_TABLE_MODEL_CHANGE_DELETE + 1 )
+ } ;
+typedef struct IA2TableModelChange
+ {
+ enum IA2TableModelChangeType type;
+ long firstRow;
+ long lastRow;
+ long firstColumn;
+ long lastColumn;
+ } IA2TableModelChange;
+
+#define IA2_RELATION_CONTAINING_APPLICATION ( L"containingApplication" )
+
+#define IA2_RELATION_CONTAINING_DOCUMENT ( L"containingDocument" )
+
+#define IA2_RELATION_CONTAINING_TAB_PANE ( L"containingTabPane" )
+
+#define IA2_RELATION_CONTAINING_WINDOW ( L"containingWindow" )
+
+#define IA2_RELATION_CONTROLLED_BY ( L"controlledBy" )
+
+#define IA2_RELATION_CONTROLLER_FOR ( L"controllerFor" )
+
+#define IA2_RELATION_DESCRIBED_BY ( L"describedBy" )
+
+#define IA2_RELATION_DESCRIPTION_FOR ( L"descriptionFor" )
+
+#define IA2_RELATION_EMBEDDED_BY ( L"embeddedBy" )
+
+#define IA2_RELATION_EMBEDS ( L"embeds" )
+
+#define IA2_RELATION_FLOWS_FROM ( L"flowsFrom" )
+
+#define IA2_RELATION_FLOWS_TO ( L"flowsTo" )
+
+#define IA2_RELATION_LABEL_FOR ( L"labelFor" )
+
+#define IA2_RELATION_LABELED_BY ( L"labelledBy" )
+
+#define IA2_RELATION_LABELLED_BY ( L"labelledBy" )
+
+#define IA2_RELATION_MEMBER_OF ( L"memberOf" )
+
+#define IA2_RELATION_NEXT_TABBABLE ( L"nextTabbable" )
+
+#define IA2_RELATION_NODE_CHILD_OF ( L"nodeChildOf" )
+
+#define IA2_RELATION_NODE_PARENT_OF ( L"nodeParentOf" )
+
+#define IA2_RELATION_PARENT_WINDOW_OF ( L"parentWindowOf" )
+
+#define IA2_RELATION_POPUP_FOR ( L"popupFor" )
+
+#define IA2_RELATION_PREVIOUS_TABBABLE ( L"previousTabbable" )
+
+#define IA2_RELATION_SUBWINDOW_OF ( L"subwindowOf" )
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0000_v0_0_s_ifspec;
+
+#ifndef __IAccessibleRelation_INTERFACE_DEFINED__
+#define __IAccessibleRelation_INTERFACE_DEFINED__
+
+/* interface IAccessibleRelation */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleRelation;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7CDF86EE-C3DA-496a-BDA4-281B336E1FDC")
+ IAccessibleRelation : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationType(
+ /* [retval][out] */ BSTR *relationType) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedRelationType(
+ /* [retval][out] */ BSTR *localizedRelationType) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nTargets(
+ /* [retval][out] */ long *nTargets) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_target(
+ /* [in] */ long targetIndex,
+ /* [retval][out] */ IUnknown **target) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_targets(
+ /* [in] */ long maxTargets,
+ /* [length_is][size_is][out] */ IUnknown **targets,
+ /* [retval][out] */ long *nTargets) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleRelationVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleRelation * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleRelation * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleRelation * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationType )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ BSTR *relationType);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedRelationType )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ BSTR *localizedRelationType);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nTargets )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ long *nTargets);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_target )(
+ IAccessibleRelation * This,
+ /* [in] */ long targetIndex,
+ /* [retval][out] */ IUnknown **target);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_targets )(
+ IAccessibleRelation * This,
+ /* [in] */ long maxTargets,
+ /* [length_is][size_is][out] */ IUnknown **targets,
+ /* [retval][out] */ long *nTargets);
+
+ END_INTERFACE
+ } IAccessibleRelationVtbl;
+
+ interface IAccessibleRelation
+ {
+ CONST_VTBL struct IAccessibleRelationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleRelation_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleRelation_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleRelation_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleRelation_get_relationType(This,relationType) \
+ ( (This)->lpVtbl -> get_relationType(This,relationType) )
+
+#define IAccessibleRelation_get_localizedRelationType(This,localizedRelationType) \
+ ( (This)->lpVtbl -> get_localizedRelationType(This,localizedRelationType) )
+
+#define IAccessibleRelation_get_nTargets(This,nTargets) \
+ ( (This)->lpVtbl -> get_nTargets(This,nTargets) )
+
+#define IAccessibleRelation_get_target(This,targetIndex,target) \
+ ( (This)->lpVtbl -> get_target(This,targetIndex,target) )
+
+#define IAccessibleRelation_get_targets(This,maxTargets,targets,nTargets) \
+ ( (This)->lpVtbl -> get_targets(This,maxTargets,targets,nTargets) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleRelation_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0001 */
+/* [local] */
+
+
+enum IA2Actions
+ { IA2_ACTION_OPEN = -1,
+ IA2_ACTION_COMPLETE = -2,
+ IA2_ACTION_CLOSE = -3
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0001_v0_0_s_ifspec;
+
+#ifndef __IAccessibleAction_INTERFACE_DEFINED__
+#define __IAccessibleAction_INTERFACE_DEFINED__
+
+/* interface IAccessibleAction */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleAction;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B70D9F59-3B5A-4dba-AB9E-22012F607DF5")
+ IAccessibleAction : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE nActions(
+ /* [retval][out] */ long *nActions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE doAction(
+ /* [in] */ long actionIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_keyBinding(
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_name(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedName(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleActionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleAction * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleAction * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleAction * This);
+
+ HRESULT ( STDMETHODCALLTYPE *nActions )(
+ IAccessibleAction * This,
+ /* [retval][out] */ long *nActions);
+
+ HRESULT ( STDMETHODCALLTYPE *doAction )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName);
+
+ END_INTERFACE
+ } IAccessibleActionVtbl;
+
+ interface IAccessibleAction
+ {
+ CONST_VTBL struct IAccessibleActionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleAction_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleAction_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleAction_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleAction_nActions(This,nActions) \
+ ( (This)->lpVtbl -> nActions(This,nActions) )
+
+#define IAccessibleAction_doAction(This,actionIndex) \
+ ( (This)->lpVtbl -> doAction(This,actionIndex) )
+
+#define IAccessibleAction_get_description(This,actionIndex,description) \
+ ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
+
+#define IAccessibleAction_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
+ ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
+
+#define IAccessibleAction_get_name(This,actionIndex,name) \
+ ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
+
+#define IAccessibleAction_get_localizedName(This,actionIndex,localizedName) \
+ ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleAction_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0002 */
+/* [local] */
+
+
+enum IA2Role
+ { IA2_ROLE_UNKNOWN = 0,
+ IA2_ROLE_CANVAS = 0x401,
+ IA2_ROLE_CAPTION = ( IA2_ROLE_CANVAS + 1 ) ,
+ IA2_ROLE_CHECK_MENU_ITEM = ( IA2_ROLE_CAPTION + 1 ) ,
+ IA2_ROLE_COLOR_CHOOSER = ( IA2_ROLE_CHECK_MENU_ITEM + 1 ) ,
+ IA2_ROLE_DATE_EDITOR = ( IA2_ROLE_COLOR_CHOOSER + 1 ) ,
+ IA2_ROLE_DESKTOP_ICON = ( IA2_ROLE_DATE_EDITOR + 1 ) ,
+ IA2_ROLE_DESKTOP_PANE = ( IA2_ROLE_DESKTOP_ICON + 1 ) ,
+ IA2_ROLE_DIRECTORY_PANE = ( IA2_ROLE_DESKTOP_PANE + 1 ) ,
+ IA2_ROLE_EDITBAR = ( IA2_ROLE_DIRECTORY_PANE + 1 ) ,
+ IA2_ROLE_EMBEDDED_OBJECT = ( IA2_ROLE_EDITBAR + 1 ) ,
+ IA2_ROLE_ENDNOTE = ( IA2_ROLE_EMBEDDED_OBJECT + 1 ) ,
+ IA2_ROLE_FILE_CHOOSER = ( IA2_ROLE_ENDNOTE + 1 ) ,
+ IA2_ROLE_FONT_CHOOSER = ( IA2_ROLE_FILE_CHOOSER + 1 ) ,
+ IA2_ROLE_FOOTER = ( IA2_ROLE_FONT_CHOOSER + 1 ) ,
+ IA2_ROLE_FOOTNOTE = ( IA2_ROLE_FOOTER + 1 ) ,
+ IA2_ROLE_FORM = ( IA2_ROLE_FOOTNOTE + 1 ) ,
+ IA2_ROLE_FRAME = ( IA2_ROLE_FORM + 1 ) ,
+ IA2_ROLE_GLASS_PANE = ( IA2_ROLE_FRAME + 1 ) ,
+ IA2_ROLE_HEADER = ( IA2_ROLE_GLASS_PANE + 1 ) ,
+ IA2_ROLE_HEADING = ( IA2_ROLE_HEADER + 1 ) ,
+ IA2_ROLE_ICON = ( IA2_ROLE_HEADING + 1 ) ,
+ IA2_ROLE_IMAGE_MAP = ( IA2_ROLE_ICON + 1 ) ,
+ IA2_ROLE_INPUT_METHOD_WINDOW = ( IA2_ROLE_IMAGE_MAP + 1 ) ,
+ IA2_ROLE_INTERNAL_FRAME = ( IA2_ROLE_INPUT_METHOD_WINDOW + 1 ) ,
+ IA2_ROLE_LABEL = ( IA2_ROLE_INTERNAL_FRAME + 1 ) ,
+ IA2_ROLE_LAYERED_PANE = ( IA2_ROLE_LABEL + 1 ) ,
+ IA2_ROLE_NOTE = ( IA2_ROLE_LAYERED_PANE + 1 ) ,
+ IA2_ROLE_OPTION_PANE = ( IA2_ROLE_NOTE + 1 ) ,
+ IA2_ROLE_PAGE = ( IA2_ROLE_OPTION_PANE + 1 ) ,
+ IA2_ROLE_PARAGRAPH = ( IA2_ROLE_PAGE + 1 ) ,
+ IA2_ROLE_RADIO_MENU_ITEM = ( IA2_ROLE_PARAGRAPH + 1 ) ,
+ IA2_ROLE_REDUNDANT_OBJECT = ( IA2_ROLE_RADIO_MENU_ITEM + 1 ) ,
+ IA2_ROLE_ROOT_PANE = ( IA2_ROLE_REDUNDANT_OBJECT + 1 ) ,
+ IA2_ROLE_RULER = ( IA2_ROLE_ROOT_PANE + 1 ) ,
+ IA2_ROLE_SCROLL_PANE = ( IA2_ROLE_RULER + 1 ) ,
+ IA2_ROLE_SECTION = ( IA2_ROLE_SCROLL_PANE + 1 ) ,
+ IA2_ROLE_SHAPE = ( IA2_ROLE_SECTION + 1 ) ,
+ IA2_ROLE_SPLIT_PANE = ( IA2_ROLE_SHAPE + 1 ) ,
+ IA2_ROLE_TEAR_OFF_MENU = ( IA2_ROLE_SPLIT_PANE + 1 ) ,
+ IA2_ROLE_TERMINAL = ( IA2_ROLE_TEAR_OFF_MENU + 1 ) ,
+ IA2_ROLE_TEXT_FRAME = ( IA2_ROLE_TERMINAL + 1 ) ,
+ IA2_ROLE_TOGGLE_BUTTON = ( IA2_ROLE_TEXT_FRAME + 1 ) ,
+ IA2_ROLE_VIEW_PORT = ( IA2_ROLE_TOGGLE_BUTTON + 1 ) ,
+ IA2_ROLE_COMPLEMENTARY_CONTENT = ( IA2_ROLE_VIEW_PORT + 1 )
+ } ;
+typedef long AccessibleStates;
+
+
+enum IA2States
+ { IA2_STATE_ACTIVE = 0x1,
+ IA2_STATE_ARMED = 0x2,
+ IA2_STATE_DEFUNCT = 0x4,
+ IA2_STATE_EDITABLE = 0x8,
+ IA2_STATE_HORIZONTAL = 0x10,
+ IA2_STATE_ICONIFIED = 0x20,
+ IA2_STATE_INVALID_ENTRY = 0x40,
+ IA2_STATE_MANAGES_DESCENDANTS = 0x80,
+ IA2_STATE_MODAL = 0x100,
+ IA2_STATE_MULTI_LINE = 0x200,
+ IA2_STATE_OPAQUE = 0x400,
+ IA2_STATE_REQUIRED = 0x800,
+ IA2_STATE_SELECTABLE_TEXT = 0x1000,
+ IA2_STATE_SINGLE_LINE = 0x2000,
+ IA2_STATE_STALE = 0x4000,
+ IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
+ IA2_STATE_TRANSIENT = 0x10000,
+ IA2_STATE_VERTICAL = 0x20000,
+ IA2_STATE_CHECKABLE = 0x40000,
+ IA2_STATE_PINNED = 0x80000
+ } ;
+typedef struct IA2Locale
+ {
+ BSTR language;
+ BSTR country;
+ BSTR variant;
+ } IA2Locale;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0002_v0_0_s_ifspec;
+
+#ifndef __IAccessible2_INTERFACE_DEFINED__
+#define __IAccessible2_INTERFACE_DEFINED__
+
+/* interface IAccessible2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessible2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("E89F726E-C4F4-4c19-BB19-B647D7FA8478")
+ IAccessible2 : public IAccessible
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRelations(
+ /* [retval][out] */ long *nRelations) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relation(
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relations(
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE role(
+ /* [retval][out] */ long *role) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollTo(
+ /* [in] */ enum IA2ScrollType scrollType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollToPoint(
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_groupPosition(
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_states(
+ /* [retval][out] */ AccessibleStates *states) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedRole(
+ /* [retval][out] */ BSTR *extendedRole) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedRole(
+ /* [retval][out] */ BSTR *localizedExtendedRole) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nExtendedStates(
+ /* [retval][out] */ long *nExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedStates(
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedStates(
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_uniqueID(
+ /* [retval][out] */ long *uniqueID) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_windowHandle(
+ /* [retval][out] */ HWND *windowHandle) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_indexInParent(
+ /* [retval][out] */ long *indexInParent) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locale(
+ /* [retval][out] */ IA2Locale *locale) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
+ /* [retval][out] */ BSTR *attributes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessible2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessible2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessible2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessible2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ IAccessible2 * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ IAccessible2 * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ IAccessible2 * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [range][in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ IAccessible2 * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
+ IAccessible2 * This,
+ /* [retval][out] */ IDispatch **ppdispParent);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *pcountChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
+ IAccessible2 * This,
+ /* [in] */ VARIANT varChild,
+ /* [retval][out] */ IDispatch **ppdispChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszName);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszValue);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDescription);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarRole);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarState);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszHelp);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
+ IAccessible2 * This,
+ /* [out] */ BSTR *pszHelpFile,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ long *pidTopic);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszKeyboardShortcut);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
+ IAccessible2 * This,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
+ IAccessible2 * This,
+ /* [retval][out] */ VARIANT *pvarChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDefaultAction);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
+ IAccessible2 * This,
+ /* [in] */ long flagsSelect,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
+ IAccessible2 * This,
+ /* [out] */ long *pxLeft,
+ /* [out] */ long *pyTop,
+ /* [out] */ long *pcxWidth,
+ /* [out] */ long *pcyHeight,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
+ IAccessible2 * This,
+ /* [in] */ long navDir,
+ /* [optional][in] */ VARIANT varStart,
+ /* [retval][out] */ VARIANT *pvarEndUpAt);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
+ IAccessible2 * This,
+ /* [in] */ long xLeft,
+ /* [in] */ long yTop,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szName);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *nRelations);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
+ IAccessible2 * This,
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
+ IAccessible2 * This,
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations);
+
+ HRESULT ( STDMETHODCALLTYPE *role )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *role);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollTo )(
+ IAccessible2 * This,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
+ IAccessible2 * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
+ IAccessible2 * This,
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
+ IAccessible2 * This,
+ /* [retval][out] */ AccessibleStates *states);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *extendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *localizedExtendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
+ IAccessible2 * This,
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
+ IAccessible2 * This,
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *uniqueID);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
+ IAccessible2 * This,
+ /* [retval][out] */ HWND *windowHandle);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *indexInParent);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
+ IAccessible2 * This,
+ /* [retval][out] */ IA2Locale *locale);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *attributes);
+
+ END_INTERFACE
+ } IAccessible2Vtbl;
+
+ interface IAccessible2
+ {
+ CONST_VTBL struct IAccessible2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessible2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessible2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessible2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessible2_GetTypeInfoCount(This,pctinfo) \
+ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
+
+#define IAccessible2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
+
+#define IAccessible2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
+
+#define IAccessible2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
+
+
+#define IAccessible2_get_accParent(This,ppdispParent) \
+ ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
+
+#define IAccessible2_get_accChildCount(This,pcountChildren) \
+ ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
+
+#define IAccessible2_get_accChild(This,varChild,ppdispChild) \
+ ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
+
+#define IAccessible2_get_accName(This,varChild,pszName) \
+ ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
+
+#define IAccessible2_get_accValue(This,varChild,pszValue) \
+ ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
+
+#define IAccessible2_get_accDescription(This,varChild,pszDescription) \
+ ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
+
+#define IAccessible2_get_accRole(This,varChild,pvarRole) \
+ ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
+
+#define IAccessible2_get_accState(This,varChild,pvarState) \
+ ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
+
+#define IAccessible2_get_accHelp(This,varChild,pszHelp) \
+ ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
+
+#define IAccessible2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
+ ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
+
+#define IAccessible2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
+ ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
+
+#define IAccessible2_get_accFocus(This,pvarChild) \
+ ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
+
+#define IAccessible2_get_accSelection(This,pvarChildren) \
+ ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
+
+#define IAccessible2_get_accDefaultAction(This,varChild,pszDefaultAction) \
+ ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
+
+#define IAccessible2_accSelect(This,flagsSelect,varChild) \
+ ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
+
+#define IAccessible2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
+ ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
+
+#define IAccessible2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
+ ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
+
+#define IAccessible2_accHitTest(This,xLeft,yTop,pvarChild) \
+ ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
+
+#define IAccessible2_accDoDefaultAction(This,varChild) \
+ ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
+
+#define IAccessible2_put_accName(This,varChild,szName) \
+ ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
+
+#define IAccessible2_put_accValue(This,varChild,szValue) \
+ ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
+
+
+#define IAccessible2_get_nRelations(This,nRelations) \
+ ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
+
+#define IAccessible2_get_relation(This,relationIndex,relation) \
+ ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
+
+#define IAccessible2_get_relations(This,maxRelations,relations,nRelations) \
+ ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
+
+#define IAccessible2_role(This,role) \
+ ( (This)->lpVtbl -> role(This,role) )
+
+#define IAccessible2_scrollTo(This,scrollType) \
+ ( (This)->lpVtbl -> scrollTo(This,scrollType) )
+
+#define IAccessible2_scrollToPoint(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
+
+#define IAccessible2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
+ ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
+
+#define IAccessible2_get_states(This,states) \
+ ( (This)->lpVtbl -> get_states(This,states) )
+
+#define IAccessible2_get_extendedRole(This,extendedRole) \
+ ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
+
+#define IAccessible2_get_localizedExtendedRole(This,localizedExtendedRole) \
+ ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
+
+#define IAccessible2_get_nExtendedStates(This,nExtendedStates) \
+ ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
+
+#define IAccessible2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
+ ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
+
+#define IAccessible2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
+ ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
+
+#define IAccessible2_get_uniqueID(This,uniqueID) \
+ ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
+
+#define IAccessible2_get_windowHandle(This,windowHandle) \
+ ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
+
+#define IAccessible2_get_indexInParent(This,indexInParent) \
+ ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
+
+#define IAccessible2_get_locale(This,locale) \
+ ( (This)->lpVtbl -> get_locale(This,locale) )
+
+#define IAccessible2_get_attributes(This,attributes) \
+ ( (This)->lpVtbl -> get_attributes(This,attributes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessible2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_INTERFACE_DEFINED__
+#define __IAccessible2_2_INTERFACE_DEFINED__
+
+/* interface IAccessible2_2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessible2_2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6C9430E9-299D-4E6F-BD01-A82A1E88D3FF")
+ IAccessible2_2 : public IAccessible2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attribute(
+ /* [in] */ BSTR name,
+ /* [retval][out] */ VARIANT *attribute) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleWithCaret(
+ /* [out] */ IUnknown **accessible,
+ /* [retval][out] */ long *caretOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationTargetsOfType(
+ /* [in] */ BSTR type,
+ /* [in] */ long maxTargets,
+ /* [size_is][size_is][out] */ IUnknown ***targets,
+ /* [retval][out] */ long *nTargets) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessible2_2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessible2_2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessible2_2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessible2_2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ IAccessible2_2 * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ IAccessible2_2 * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ IAccessible2_2 * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [range][in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ IAccessible2_2 * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ IDispatch **ppdispParent);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *pcountChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
+ IAccessible2_2 * This,
+ /* [in] */ VARIANT varChild,
+ /* [retval][out] */ IDispatch **ppdispChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszName);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszValue);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDescription);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarRole);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarState);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszHelp);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
+ IAccessible2_2 * This,
+ /* [out] */ BSTR *pszHelpFile,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ long *pidTopic);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszKeyboardShortcut);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ VARIANT *pvarChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDefaultAction);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
+ IAccessible2_2 * This,
+ /* [in] */ long flagsSelect,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
+ IAccessible2_2 * This,
+ /* [out] */ long *pxLeft,
+ /* [out] */ long *pyTop,
+ /* [out] */ long *pcxWidth,
+ /* [out] */ long *pcyHeight,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
+ IAccessible2_2 * This,
+ /* [in] */ long navDir,
+ /* [optional][in] */ VARIANT varStart,
+ /* [retval][out] */ VARIANT *pvarEndUpAt);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
+ IAccessible2_2 * This,
+ /* [in] */ long xLeft,
+ /* [in] */ long yTop,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szName);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *nRelations);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
+ IAccessible2_2 * This,
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations);
+
+ HRESULT ( STDMETHODCALLTYPE *role )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *role);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollTo )(
+ IAccessible2_2 * This,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
+ IAccessible2_2 * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
+ IAccessible2_2 * This,
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ AccessibleStates *states);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *extendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *localizedExtendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *uniqueID);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ HWND *windowHandle);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *indexInParent);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ IA2Locale *locale);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *attributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attribute )(
+ IAccessible2_2 * This,
+ /* [in] */ BSTR name,
+ /* [retval][out] */ VARIANT *attribute);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleWithCaret )(
+ IAccessible2_2 * This,
+ /* [out] */ IUnknown **accessible,
+ /* [retval][out] */ long *caretOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationTargetsOfType )(
+ IAccessible2_2 * This,
+ /* [in] */ BSTR type,
+ /* [in] */ long maxTargets,
+ /* [size_is][size_is][out] */ IUnknown ***targets,
+ /* [retval][out] */ long *nTargets);
+
+ END_INTERFACE
+ } IAccessible2_2Vtbl;
+
+ interface IAccessible2_2
+ {
+ CONST_VTBL struct IAccessible2_2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessible2_2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessible2_2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessible2_2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessible2_2_GetTypeInfoCount(This,pctinfo) \
+ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
+
+#define IAccessible2_2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
+
+#define IAccessible2_2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
+
+#define IAccessible2_2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
+
+
+#define IAccessible2_2_get_accParent(This,ppdispParent) \
+ ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
+
+#define IAccessible2_2_get_accChildCount(This,pcountChildren) \
+ ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
+
+#define IAccessible2_2_get_accChild(This,varChild,ppdispChild) \
+ ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
+
+#define IAccessible2_2_get_accName(This,varChild,pszName) \
+ ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
+
+#define IAccessible2_2_get_accValue(This,varChild,pszValue) \
+ ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
+
+#define IAccessible2_2_get_accDescription(This,varChild,pszDescription) \
+ ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
+
+#define IAccessible2_2_get_accRole(This,varChild,pvarRole) \
+ ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
+
+#define IAccessible2_2_get_accState(This,varChild,pvarState) \
+ ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
+
+#define IAccessible2_2_get_accHelp(This,varChild,pszHelp) \
+ ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
+
+#define IAccessible2_2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
+ ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
+
+#define IAccessible2_2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
+ ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
+
+#define IAccessible2_2_get_accFocus(This,pvarChild) \
+ ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
+
+#define IAccessible2_2_get_accSelection(This,pvarChildren) \
+ ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
+
+#define IAccessible2_2_get_accDefaultAction(This,varChild,pszDefaultAction) \
+ ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
+
+#define IAccessible2_2_accSelect(This,flagsSelect,varChild) \
+ ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
+
+#define IAccessible2_2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
+ ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
+
+#define IAccessible2_2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
+ ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
+
+#define IAccessible2_2_accHitTest(This,xLeft,yTop,pvarChild) \
+ ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
+
+#define IAccessible2_2_accDoDefaultAction(This,varChild) \
+ ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
+
+#define IAccessible2_2_put_accName(This,varChild,szName) \
+ ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
+
+#define IAccessible2_2_put_accValue(This,varChild,szValue) \
+ ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
+
+
+#define IAccessible2_2_get_nRelations(This,nRelations) \
+ ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
+
+#define IAccessible2_2_get_relation(This,relationIndex,relation) \
+ ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
+
+#define IAccessible2_2_get_relations(This,maxRelations,relations,nRelations) \
+ ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
+
+#define IAccessible2_2_role(This,role) \
+ ( (This)->lpVtbl -> role(This,role) )
+
+#define IAccessible2_2_scrollTo(This,scrollType) \
+ ( (This)->lpVtbl -> scrollTo(This,scrollType) )
+
+#define IAccessible2_2_scrollToPoint(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
+
+#define IAccessible2_2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
+ ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
+
+#define IAccessible2_2_get_states(This,states) \
+ ( (This)->lpVtbl -> get_states(This,states) )
+
+#define IAccessible2_2_get_extendedRole(This,extendedRole) \
+ ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
+
+#define IAccessible2_2_get_localizedExtendedRole(This,localizedExtendedRole) \
+ ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
+
+#define IAccessible2_2_get_nExtendedStates(This,nExtendedStates) \
+ ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
+
+#define IAccessible2_2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
+ ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
+
+#define IAccessible2_2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
+ ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
+
+#define IAccessible2_2_get_uniqueID(This,uniqueID) \
+ ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
+
+#define IAccessible2_2_get_windowHandle(This,windowHandle) \
+ ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
+
+#define IAccessible2_2_get_indexInParent(This,indexInParent) \
+ ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
+
+#define IAccessible2_2_get_locale(This,locale) \
+ ( (This)->lpVtbl -> get_locale(This,locale) )
+
+#define IAccessible2_2_get_attributes(This,attributes) \
+ ( (This)->lpVtbl -> get_attributes(This,attributes) )
+
+
+#define IAccessible2_2_get_attribute(This,name,attribute) \
+ ( (This)->lpVtbl -> get_attribute(This,name,attribute) )
+
+#define IAccessible2_2_get_accessibleWithCaret(This,accessible,caretOffset) \
+ ( (This)->lpVtbl -> get_accessibleWithCaret(This,accessible,caretOffset) )
+
+#define IAccessible2_2_get_relationTargetsOfType(This,type,maxTargets,targets,nTargets) \
+ ( (This)->lpVtbl -> get_relationTargetsOfType(This,type,maxTargets,targets,nTargets) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessible2_2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0004 */
+/* [local] */
+
+typedef long IA2Color;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0004_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0004_v0_0_s_ifspec;
+
+#ifndef __IAccessibleComponent_INTERFACE_DEFINED__
+#define __IAccessibleComponent_INTERFACE_DEFINED__
+
+/* interface IAccessibleComponent */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleComponent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1546D4B0-4C98-4bda-89AE-9A64748BDDE4")
+ IAccessibleComponent : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locationInParent(
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_foreground(
+ /* [retval][out] */ IA2Color *foreground) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_background(
+ /* [retval][out] */ IA2Color *background) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleComponentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleComponent * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleComponent * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleComponent * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locationInParent )(
+ IAccessibleComponent * This,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_foreground )(
+ IAccessibleComponent * This,
+ /* [retval][out] */ IA2Color *foreground);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_background )(
+ IAccessibleComponent * This,
+ /* [retval][out] */ IA2Color *background);
+
+ END_INTERFACE
+ } IAccessibleComponentVtbl;
+
+ interface IAccessibleComponent
+ {
+ CONST_VTBL struct IAccessibleComponentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleComponent_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleComponent_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleComponent_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleComponent_get_locationInParent(This,x,y) \
+ ( (This)->lpVtbl -> get_locationInParent(This,x,y) )
+
+#define IAccessibleComponent_get_foreground(This,foreground) \
+ ( (This)->lpVtbl -> get_foreground(This,foreground) )
+
+#define IAccessibleComponent_get_background(This,background) \
+ ( (This)->lpVtbl -> get_background(This,background) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleComponent_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_INTERFACE_DEFINED__
+#define __IAccessibleValue_INTERFACE_DEFINED__
+
+/* interface IAccessibleValue */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleValue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("35855B5B-C566-4fd0-A7B1-E65465600394")
+ IAccessibleValue : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_currentValue(
+ /* [retval][out] */ VARIANT *currentValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setCurrentValue(
+ /* [in] */ VARIANT value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_maximumValue(
+ /* [retval][out] */ VARIANT *maximumValue) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_minimumValue(
+ /* [retval][out] */ VARIANT *minimumValue) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleValueVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleValue * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleValue * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleValue * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_currentValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *currentValue);
+
+ HRESULT ( STDMETHODCALLTYPE *setCurrentValue )(
+ IAccessibleValue * This,
+ /* [in] */ VARIANT value);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_maximumValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *maximumValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_minimumValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *minimumValue);
+
+ END_INTERFACE
+ } IAccessibleValueVtbl;
+
+ interface IAccessibleValue
+ {
+ CONST_VTBL struct IAccessibleValueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleValue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleValue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleValue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleValue_get_currentValue(This,currentValue) \
+ ( (This)->lpVtbl -> get_currentValue(This,currentValue) )
+
+#define IAccessibleValue_setCurrentValue(This,value) \
+ ( (This)->lpVtbl -> setCurrentValue(This,value) )
+
+#define IAccessibleValue_get_maximumValue(This,maximumValue) \
+ ( (This)->lpVtbl -> get_maximumValue(This,maximumValue) )
+
+#define IAccessibleValue_get_minimumValue(This,minimumValue) \
+ ( (This)->lpVtbl -> get_minimumValue(This,minimumValue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleValue_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0006 */
+/* [local] */
+
+typedef struct IA2TextSegment
+ {
+ BSTR text;
+ long start;
+ long end;
+ } IA2TextSegment;
+
+
+enum IA2TextBoundaryType
+ { IA2_TEXT_BOUNDARY_CHAR = 0,
+ IA2_TEXT_BOUNDARY_WORD = ( IA2_TEXT_BOUNDARY_CHAR + 1 ) ,
+ IA2_TEXT_BOUNDARY_SENTENCE = ( IA2_TEXT_BOUNDARY_WORD + 1 ) ,
+ IA2_TEXT_BOUNDARY_PARAGRAPH = ( IA2_TEXT_BOUNDARY_SENTENCE + 1 ) ,
+ IA2_TEXT_BOUNDARY_LINE = ( IA2_TEXT_BOUNDARY_PARAGRAPH + 1 ) ,
+ IA2_TEXT_BOUNDARY_ALL = ( IA2_TEXT_BOUNDARY_LINE + 1 )
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0006_v0_0_s_ifspec;
+
+#ifndef __IAccessibleText_INTERFACE_DEFINED__
+#define __IAccessibleText_INTERFACE_DEFINED__
+
+/* interface IAccessibleText */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleText;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B")
+ IAccessibleText : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE addSelection(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
+ /* [retval][out] */ long *offset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
+ /* [retval][out] */ long *nSelections) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE removeSelection(
+ /* [in] */ long selectionIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
+ /* [in] */ long offset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setSelection(
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
+ /* [retval][out] */ long *nCharacters) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
+ /* [retval][out] */ IA2TextSegment *newText) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
+ /* [retval][out] */ IA2TextSegment *oldText) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleText * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleText * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleText * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleText * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleText * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleText * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleText * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleText * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ END_INTERFACE
+ } IAccessibleTextVtbl;
+
+ interface IAccessibleText
+ {
+ CONST_VTBL struct IAccessibleTextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleText_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleText_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleText_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleText_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleText_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleText_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleText_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleText_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleText_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleText_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleText_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleText_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleText_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleText_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleText_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleText_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleText_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_INTERFACE_DEFINED__
+#define __IAccessibleText2_INTERFACE_DEFINED__
+
+/* interface IAccessibleText2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleText2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9690A9CC-5C80-4DF5-852E-2D5AE4189A54")
+ IAccessibleText2 : public IAccessibleText
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributeRange(
+ /* [in] */ long offset,
+ /* [in] */ BSTR filter,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *attributeValues) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleText2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleText2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleText2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleText2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleText2 * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleText2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleText2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleText2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributeRange )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ BSTR filter,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *attributeValues);
+
+ END_INTERFACE
+ } IAccessibleText2Vtbl;
+
+ interface IAccessibleText2
+ {
+ CONST_VTBL struct IAccessibleText2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleText2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleText2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleText2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleText2_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleText2_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleText2_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleText2_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleText2_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleText2_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleText2_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText2_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleText2_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleText2_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText2_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleText2_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleText2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleText2_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleText2_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleText2_get_attributeRange(This,offset,filter,startOffset,endOffset,attributeValues) \
+ ( (This)->lpVtbl -> get_attributeRange(This,offset,filter,startOffset,endOffset,attributeValues) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleText2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_INTERFACE_DEFINED__
+#define __IAccessibleEditableText_INTERFACE_DEFINED__
+
+/* interface IAccessibleEditableText */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleEditableText;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("A59AA09A-7011-4b65-939D-32B1FB5547E3")
+ IAccessibleEditableText : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE copyText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE deleteText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE insertText(
+ /* [in] */ long offset,
+ /* [in] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE cutText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE pasteText(
+ /* [in] */ long offset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE replaceText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setAttributes(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *attributes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleEditableTextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleEditableText * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleEditableText * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleEditableText * This);
+
+ HRESULT ( STDMETHODCALLTYPE *copyText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *deleteText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *insertText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long offset,
+ /* [in] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *cutText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *pasteText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *replaceText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *setAttributes )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *attributes);
+
+ END_INTERFACE
+ } IAccessibleEditableTextVtbl;
+
+ interface IAccessibleEditableText
+ {
+ CONST_VTBL struct IAccessibleEditableTextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleEditableText_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleEditableText_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleEditableText_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleEditableText_copyText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> copyText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_deleteText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> deleteText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_insertText(This,offset,text) \
+ ( (This)->lpVtbl -> insertText(This,offset,text) )
+
+#define IAccessibleEditableText_cutText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> cutText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_pasteText(This,offset) \
+ ( (This)->lpVtbl -> pasteText(This,offset) )
+
+#define IAccessibleEditableText_replaceText(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> replaceText(This,startOffset,endOffset,text) )
+
+#define IAccessibleEditableText_setAttributes(This,startOffset,endOffset,attributes) \
+ ( (This)->lpVtbl -> setAttributes(This,startOffset,endOffset,attributes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleEditableText_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_INTERFACE_DEFINED__
+#define __IAccessibleHyperlink_INTERFACE_DEFINED__
+
+/* interface IAccessibleHyperlink */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHyperlink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("01C20F2B-3DD2-400f-949F-AD00BDAB1D41")
+ IAccessibleHyperlink : public IAccessibleAction
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchor(
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchor) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchorTarget) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_startIndex(
+ /* [retval][out] */ long *index) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_endIndex(
+ /* [retval][out] */ long *index) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_valid(
+ /* [retval][out] */ boolean *valid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHyperlinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHyperlink * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHyperlink * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHyperlink * This);
+
+ HRESULT ( STDMETHODCALLTYPE *nActions )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *nActions);
+
+ HRESULT ( STDMETHODCALLTYPE *doAction )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchor )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchor);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchorTarget);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_startIndex )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *index);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_endIndex )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *index);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_valid )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ boolean *valid);
+
+ END_INTERFACE
+ } IAccessibleHyperlinkVtbl;
+
+ interface IAccessibleHyperlink
+ {
+ CONST_VTBL struct IAccessibleHyperlinkVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHyperlink_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHyperlink_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHyperlink_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHyperlink_nActions(This,nActions) \
+ ( (This)->lpVtbl -> nActions(This,nActions) )
+
+#define IAccessibleHyperlink_doAction(This,actionIndex) \
+ ( (This)->lpVtbl -> doAction(This,actionIndex) )
+
+#define IAccessibleHyperlink_get_description(This,actionIndex,description) \
+ ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
+
+#define IAccessibleHyperlink_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
+ ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
+
+#define IAccessibleHyperlink_get_name(This,actionIndex,name) \
+ ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
+
+#define IAccessibleHyperlink_get_localizedName(This,actionIndex,localizedName) \
+ ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
+
+
+#define IAccessibleHyperlink_get_anchor(This,index,anchor) \
+ ( (This)->lpVtbl -> get_anchor(This,index,anchor) )
+
+#define IAccessibleHyperlink_get_anchorTarget(This,index,anchorTarget) \
+ ( (This)->lpVtbl -> get_anchorTarget(This,index,anchorTarget) )
+
+#define IAccessibleHyperlink_get_startIndex(This,index) \
+ ( (This)->lpVtbl -> get_startIndex(This,index) )
+
+#define IAccessibleHyperlink_get_endIndex(This,index) \
+ ( (This)->lpVtbl -> get_endIndex(This,index) )
+
+#define IAccessibleHyperlink_get_valid(This,valid) \
+ ( (This)->lpVtbl -> get_valid(This,valid) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHyperlink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_INTERFACE_DEFINED__
+#define __IAccessibleHypertext_INTERFACE_DEFINED__
+
+/* interface IAccessibleHypertext */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHypertext;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6B4F8BBF-F1F2-418a-B35E-A195BC4103B9")
+ IAccessibleHypertext : public IAccessibleText
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nHyperlinks(
+ /* [retval][out] */ long *hyperlinkCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlink(
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinkIndex(
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHypertextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHypertext * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHypertext * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHypertext * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleHypertext * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *hyperlinkCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
+ IAccessibleHypertext * This,
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
+ IAccessibleHypertext * This,
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex);
+
+ END_INTERFACE
+ } IAccessibleHypertextVtbl;
+
+ interface IAccessibleHypertext
+ {
+ CONST_VTBL struct IAccessibleHypertextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHypertext_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHypertext_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHypertext_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHypertext_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleHypertext_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleHypertext_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleHypertext_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleHypertext_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleHypertext_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleHypertext_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleHypertext_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleHypertext_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleHypertext_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleHypertext_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleHypertext_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleHypertext_get_nHyperlinks(This,hyperlinkCount) \
+ ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
+
+#define IAccessibleHypertext_get_hyperlink(This,index,hyperlink) \
+ ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
+
+#define IAccessibleHypertext_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
+ ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHypertext_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_INTERFACE_DEFINED__
+#define __IAccessibleHypertext2_INTERFACE_DEFINED__
+
+/* interface IAccessibleHypertext2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHypertext2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("CF64D89F-8287-4B44-8501-A827453A6077")
+ IAccessibleHypertext2 : public IAccessibleHypertext
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinks(
+ /* [size_is][size_is][out] */ IAccessibleHyperlink ***hyperlinks,
+ /* [retval][out] */ long *nHyperlinks) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHypertext2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHypertext2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHypertext2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *hyperlinkCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinks )(
+ IAccessibleHypertext2 * This,
+ /* [size_is][size_is][out] */ IAccessibleHyperlink ***hyperlinks,
+ /* [retval][out] */ long *nHyperlinks);
+
+ END_INTERFACE
+ } IAccessibleHypertext2Vtbl;
+
+ interface IAccessibleHypertext2
+ {
+ CONST_VTBL struct IAccessibleHypertext2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHypertext2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHypertext2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHypertext2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHypertext2_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleHypertext2_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleHypertext2_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleHypertext2_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleHypertext2_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleHypertext2_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleHypertext2_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleHypertext2_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleHypertext2_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleHypertext2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleHypertext2_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleHypertext2_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleHypertext2_get_nHyperlinks(This,hyperlinkCount) \
+ ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
+
+#define IAccessibleHypertext2_get_hyperlink(This,index,hyperlink) \
+ ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
+
+#define IAccessibleHypertext2_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
+ ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
+
+
+#define IAccessibleHypertext2_get_hyperlinks(This,hyperlinks,nHyperlinks) \
+ ( (This)->lpVtbl -> get_hyperlinks(This,hyperlinks,nHyperlinks) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHypertext2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_INTERFACE_DEFINED__
+#define __IAccessibleTable_INTERFACE_DEFINED__
+
+/* interface IAccessibleTable */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("35AD8070-C20C-4fb4-B094-F4F7275DD469")
+ IAccessibleTable : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_childIndex(
+ /* [in] */ long rowIndex,
+ /* [in] */ long columnIndex,
+ /* [retval][out] */ long *cellIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtentAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nColumnsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeader(
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingRowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *columnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedChildren(
+ /* [retval][out] */ long *cellCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtentAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nRowsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeader(
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingColumnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *rowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedChildren(
+ /* [in] */ long maxChildren,
+ /* [length_is][length_is][size_is][size_is][out] */ long **children,
+ /* [retval][out] */ long *nChildren) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
+ /* [in] */ long maxColumns,
+ /* [length_is][length_is][size_is][size_is][out] */ long **columns,
+ /* [retval][out] */ long *nColumns) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
+ /* [in] */ long maxRows,
+ /* [length_is][length_is][size_is][size_is][out] */ long **rows,
+ /* [retval][out] */ long *nRows) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtentsAtIndex(
+ /* [in] */ long index,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
+ /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTableVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTable * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTable * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTable * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_childIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long rowIndex,
+ /* [in] */ long columnIndex,
+ /* [retval][out] */ long *cellIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
+ IAccessibleTable * This,
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtentAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nColumnsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeader )(
+ IAccessibleTable * This,
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingRowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *columnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedChildren )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *cellCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtentAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nRowsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeader )(
+ IAccessibleTable * This,
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingColumnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *rowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedChildren )(
+ IAccessibleTable * This,
+ /* [in] */ long maxChildren,
+ /* [length_is][length_is][size_is][size_is][out] */ long **children,
+ /* [retval][out] */ long *nChildren);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
+ IAccessibleTable * This,
+ /* [in] */ long maxColumns,
+ /* [length_is][length_is][size_is][size_is][out] */ long **columns,
+ /* [retval][out] */ long *nColumns);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
+ IAccessibleTable * This,
+ /* [in] */ long maxRows,
+ /* [length_is][length_is][size_is][size_is][out] */ long **rows,
+ /* [retval][out] */ long *nRows);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ HRESULT ( STDMETHODCALLTYPE *selectRow )(
+ IAccessibleTable * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *selectColumn )(
+ IAccessibleTable * This,
+ /* [in] */ long column);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectRow )(
+ IAccessibleTable * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
+ IAccessibleTable * This,
+ /* [in] */ long column);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtentsAtIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long index,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IA2TableModelChange *modelChange);
+
+ END_INTERFACE
+ } IAccessibleTableVtbl;
+
+ interface IAccessibleTable
+ {
+ CONST_VTBL struct IAccessibleTableVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTable_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTable_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTable_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTable_get_accessibleAt(This,row,column,accessible) \
+ ( (This)->lpVtbl -> get_accessibleAt(This,row,column,accessible) )
+
+#define IAccessibleTable_get_caption(This,accessible) \
+ ( (This)->lpVtbl -> get_caption(This,accessible) )
+
+#define IAccessibleTable_get_childIndex(This,rowIndex,columnIndex,cellIndex) \
+ ( (This)->lpVtbl -> get_childIndex(This,rowIndex,columnIndex,cellIndex) )
+
+#define IAccessibleTable_get_columnDescription(This,column,description) \
+ ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
+
+#define IAccessibleTable_get_columnExtentAt(This,row,column,nColumnsSpanned) \
+ ( (This)->lpVtbl -> get_columnExtentAt(This,row,column,nColumnsSpanned) )
+
+#define IAccessibleTable_get_columnHeader(This,accessibleTable,startingRowIndex) \
+ ( (This)->lpVtbl -> get_columnHeader(This,accessibleTable,startingRowIndex) )
+
+#define IAccessibleTable_get_columnIndex(This,cellIndex,columnIndex) \
+ ( (This)->lpVtbl -> get_columnIndex(This,cellIndex,columnIndex) )
+
+#define IAccessibleTable_get_nColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
+
+#define IAccessibleTable_get_nRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nRows(This,rowCount) )
+
+#define IAccessibleTable_get_nSelectedChildren(This,cellCount) \
+ ( (This)->lpVtbl -> get_nSelectedChildren(This,cellCount) )
+
+#define IAccessibleTable_get_nSelectedColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
+
+#define IAccessibleTable_get_nSelectedRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
+
+#define IAccessibleTable_get_rowDescription(This,row,description) \
+ ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
+
+#define IAccessibleTable_get_rowExtentAt(This,row,column,nRowsSpanned) \
+ ( (This)->lpVtbl -> get_rowExtentAt(This,row,column,nRowsSpanned) )
+
+#define IAccessibleTable_get_rowHeader(This,accessibleTable,startingColumnIndex) \
+ ( (This)->lpVtbl -> get_rowHeader(This,accessibleTable,startingColumnIndex) )
+
+#define IAccessibleTable_get_rowIndex(This,cellIndex,rowIndex) \
+ ( (This)->lpVtbl -> get_rowIndex(This,cellIndex,rowIndex) )
+
+#define IAccessibleTable_get_selectedChildren(This,maxChildren,children,nChildren) \
+ ( (This)->lpVtbl -> get_selectedChildren(This,maxChildren,children,nChildren) )
+
+#define IAccessibleTable_get_selectedColumns(This,maxColumns,columns,nColumns) \
+ ( (This)->lpVtbl -> get_selectedColumns(This,maxColumns,columns,nColumns) )
+
+#define IAccessibleTable_get_selectedRows(This,maxRows,rows,nRows) \
+ ( (This)->lpVtbl -> get_selectedRows(This,maxRows,rows,nRows) )
+
+#define IAccessibleTable_get_summary(This,accessible) \
+ ( (This)->lpVtbl -> get_summary(This,accessible) )
+
+#define IAccessibleTable_get_isColumnSelected(This,column,isSelected) \
+ ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
+
+#define IAccessibleTable_get_isRowSelected(This,row,isSelected) \
+ ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
+
+#define IAccessibleTable_get_isSelected(This,row,column,isSelected) \
+ ( (This)->lpVtbl -> get_isSelected(This,row,column,isSelected) )
+
+#define IAccessibleTable_selectRow(This,row) \
+ ( (This)->lpVtbl -> selectRow(This,row) )
+
+#define IAccessibleTable_selectColumn(This,column) \
+ ( (This)->lpVtbl -> selectColumn(This,column) )
+
+#define IAccessibleTable_unselectRow(This,row) \
+ ( (This)->lpVtbl -> unselectRow(This,row) )
+
+#define IAccessibleTable_unselectColumn(This,column) \
+ ( (This)->lpVtbl -> unselectColumn(This,column) )
+
+#define IAccessibleTable_get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) \
+ ( (This)->lpVtbl -> get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) )
+
+#define IAccessibleTable_get_modelChange(This,modelChange) \
+ ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTable_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_INTERFACE_DEFINED__
+#define __IAccessibleTable2_INTERFACE_DEFINED__
+
+/* interface IAccessibleTable2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTable2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6167f295-06f0-4cdd-a1fa-02e25153d869")
+ IAccessibleTable2 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_cellAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **cell) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedCells(
+ /* [retval][out] */ long *cellCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedCells(
+ /* [size_is][size_is][out] */ IUnknown ***cells,
+ /* [retval][out] */ long *nSelectedCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
+ /* [size_is][size_is][out] */ long **selectedColumns,
+ /* [retval][out] */ long *nColumns) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
+ /* [size_is][size_is][out] */ long **selectedRows,
+ /* [retval][out] */ long *nRows) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
+ /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTable2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTable2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTable2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTable2 * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_cellAt )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **cell);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedCells )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *cellCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedCells )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ IUnknown ***cells,
+ /* [retval][out] */ long *nSelectedCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ long **selectedColumns,
+ /* [retval][out] */ long *nColumns);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ long **selectedRows,
+ /* [retval][out] */ long *nRows);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected);
+
+ HRESULT ( STDMETHODCALLTYPE *selectRow )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *selectColumn )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectRow )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IA2TableModelChange *modelChange);
+
+ END_INTERFACE
+ } IAccessibleTable2Vtbl;
+
+ interface IAccessibleTable2
+ {
+ CONST_VTBL struct IAccessibleTable2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTable2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTable2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTable2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTable2_get_cellAt(This,row,column,cell) \
+ ( (This)->lpVtbl -> get_cellAt(This,row,column,cell) )
+
+#define IAccessibleTable2_get_caption(This,accessible) \
+ ( (This)->lpVtbl -> get_caption(This,accessible) )
+
+#define IAccessibleTable2_get_columnDescription(This,column,description) \
+ ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
+
+#define IAccessibleTable2_get_nColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
+
+#define IAccessibleTable2_get_nRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nRows(This,rowCount) )
+
+#define IAccessibleTable2_get_nSelectedCells(This,cellCount) \
+ ( (This)->lpVtbl -> get_nSelectedCells(This,cellCount) )
+
+#define IAccessibleTable2_get_nSelectedColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
+
+#define IAccessibleTable2_get_nSelectedRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
+
+#define IAccessibleTable2_get_rowDescription(This,row,description) \
+ ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
+
+#define IAccessibleTable2_get_selectedCells(This,cells,nSelectedCells) \
+ ( (This)->lpVtbl -> get_selectedCells(This,cells,nSelectedCells) )
+
+#define IAccessibleTable2_get_selectedColumns(This,selectedColumns,nColumns) \
+ ( (This)->lpVtbl -> get_selectedColumns(This,selectedColumns,nColumns) )
+
+#define IAccessibleTable2_get_selectedRows(This,selectedRows,nRows) \
+ ( (This)->lpVtbl -> get_selectedRows(This,selectedRows,nRows) )
+
+#define IAccessibleTable2_get_summary(This,accessible) \
+ ( (This)->lpVtbl -> get_summary(This,accessible) )
+
+#define IAccessibleTable2_get_isColumnSelected(This,column,isSelected) \
+ ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
+
+#define IAccessibleTable2_get_isRowSelected(This,row,isSelected) \
+ ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
+
+#define IAccessibleTable2_selectRow(This,row) \
+ ( (This)->lpVtbl -> selectRow(This,row) )
+
+#define IAccessibleTable2_selectColumn(This,column) \
+ ( (This)->lpVtbl -> selectColumn(This,column) )
+
+#define IAccessibleTable2_unselectRow(This,row) \
+ ( (This)->lpVtbl -> unselectRow(This,row) )
+
+#define IAccessibleTable2_unselectColumn(This,column) \
+ ( (This)->lpVtbl -> unselectColumn(This,column) )
+
+#define IAccessibleTable2_get_modelChange(This,modelChange) \
+ ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTable2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_INTERFACE_DEFINED__
+#define __IAccessibleTableCell_INTERFACE_DEFINED__
+
+/* interface IAccessibleTableCell */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTableCell;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("594116B1-C99F-4847-AD06-0A7A86ECE645")
+ IAccessibleTableCell : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtent(
+ /* [retval][out] */ long *nColumnsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeaderCells(
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nColumnHeaderCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
+ /* [retval][out] */ long *columnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtent(
+ /* [retval][out] */ long *nRowsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeaderCells(
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nRowHeaderCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
+ /* [retval][out] */ long *rowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtents(
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_table(
+ /* [retval][out] */ IUnknown **table) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTableCellVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTableCell * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTableCell * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTableCell * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtent )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *nColumnsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeaderCells )(
+ IAccessibleTableCell * This,
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nColumnHeaderCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *columnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtent )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *nRowsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeaderCells )(
+ IAccessibleTableCell * This,
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nRowHeaderCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *rowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtents )(
+ IAccessibleTableCell * This,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_table )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ IUnknown **table);
+
+ END_INTERFACE
+ } IAccessibleTableCellVtbl;
+
+ interface IAccessibleTableCell
+ {
+ CONST_VTBL struct IAccessibleTableCellVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTableCell_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTableCell_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTableCell_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTableCell_get_columnExtent(This,nColumnsSpanned) \
+ ( (This)->lpVtbl -> get_columnExtent(This,nColumnsSpanned) )
+
+#define IAccessibleTableCell_get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) \
+ ( (This)->lpVtbl -> get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) )
+
+#define IAccessibleTableCell_get_columnIndex(This,columnIndex) \
+ ( (This)->lpVtbl -> get_columnIndex(This,columnIndex) )
+
+#define IAccessibleTableCell_get_rowExtent(This,nRowsSpanned) \
+ ( (This)->lpVtbl -> get_rowExtent(This,nRowsSpanned) )
+
+#define IAccessibleTableCell_get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) \
+ ( (This)->lpVtbl -> get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) )
+
+#define IAccessibleTableCell_get_rowIndex(This,rowIndex) \
+ ( (This)->lpVtbl -> get_rowIndex(This,rowIndex) )
+
+#define IAccessibleTableCell_get_isSelected(This,isSelected) \
+ ( (This)->lpVtbl -> get_isSelected(This,isSelected) )
+
+#define IAccessibleTableCell_get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) \
+ ( (This)->lpVtbl -> get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) )
+
+#define IAccessibleTableCell_get_table(This,table) \
+ ( (This)->lpVtbl -> get_table(This,table) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTableCell_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_INTERFACE_DEFINED__
+#define __IAccessibleImage_INTERFACE_DEFINED__
+
+/* interface IAccessibleImage */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleImage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE")
+ IAccessibleImage : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imagePosition(
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imageSize(
+ /* [out] */ long *height,
+ /* [retval][out] */ long *width) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleImageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleImage * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleImage * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleImage * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleImage * This,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imagePosition )(
+ IAccessibleImage * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageSize )(
+ IAccessibleImage * This,
+ /* [out] */ long *height,
+ /* [retval][out] */ long *width);
+
+ END_INTERFACE
+ } IAccessibleImageVtbl;
+
+ interface IAccessibleImage
+ {
+ CONST_VTBL struct IAccessibleImageVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleImage_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleImage_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleImage_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleImage_get_description(This,description) \
+ ( (This)->lpVtbl -> get_description(This,description) )
+
+#define IAccessibleImage_get_imagePosition(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> get_imagePosition(This,coordinateType,x,y) )
+
+#define IAccessibleImage_get_imageSize(This,height,width) \
+ ( (This)->lpVtbl -> get_imageSize(This,height,width) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleImage_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0016 */
+/* [local] */
+
+
+enum IA2EventID
+ { IA2_EVENT_ACTION_CHANGED = 0x101,
+ IA2_EVENT_ACTIVE_DECENDENT_CHANGED = ( IA2_EVENT_ACTION_CHANGED + 1 ) ,
+ IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
+ IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED = ( IA2_EVENT_ACTIVE_DESCENDANT_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_CONTENT_CHANGED = ( IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_LOAD_COMPLETE = ( IA2_EVENT_DOCUMENT_CONTENT_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_LOAD_STOPPED = ( IA2_EVENT_DOCUMENT_LOAD_COMPLETE + 1 ) ,
+ IA2_EVENT_DOCUMENT_RELOAD = ( IA2_EVENT_DOCUMENT_LOAD_STOPPED + 1 ) ,
+ IA2_EVENT_HYPERLINK_END_INDEX_CHANGED = ( IA2_EVENT_DOCUMENT_RELOAD + 1 ) ,
+ IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED = ( IA2_EVENT_HYPERLINK_END_INDEX_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED = ( IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_LINK_ACTIVATED = ( IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_LINK_SELECTED = ( IA2_EVENT_HYPERTEXT_LINK_ACTIVATED + 1 ) ,
+ IA2_EVENT_HYPERLINK_START_INDEX_CHANGED = ( IA2_EVENT_HYPERTEXT_LINK_SELECTED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_CHANGED = ( IA2_EVENT_HYPERLINK_START_INDEX_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_NLINKS_CHANGED = ( IA2_EVENT_HYPERTEXT_CHANGED + 1 ) ,
+ IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED = ( IA2_EVENT_HYPERTEXT_NLINKS_CHANGED + 1 ) ,
+ IA2_EVENT_PAGE_CHANGED = ( IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_SECTION_CHANGED = ( IA2_EVENT_PAGE_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_CAPTION_CHANGED = ( IA2_EVENT_SECTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_CAPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED = ( IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_MODEL_CHANGED = ( IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_MODEL_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_ROW_HEADER_CHANGED = ( IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_SUMMARY_CHANGED = ( IA2_EVENT_TABLE_ROW_HEADER_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_ATTRIBUTE_CHANGED = ( IA2_EVENT_TABLE_SUMMARY_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_CARET_MOVED = ( IA2_EVENT_TEXT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_CHANGED = ( IA2_EVENT_TEXT_CARET_MOVED + 1 ) ,
+ IA2_EVENT_TEXT_COLUMN_CHANGED = ( IA2_EVENT_TEXT_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_INSERTED = ( IA2_EVENT_TEXT_COLUMN_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_REMOVED = ( IA2_EVENT_TEXT_INSERTED + 1 ) ,
+ IA2_EVENT_TEXT_UPDATED = ( IA2_EVENT_TEXT_REMOVED + 1 ) ,
+ IA2_EVENT_TEXT_SELECTION_CHANGED = ( IA2_EVENT_TEXT_UPDATED + 1 ) ,
+ IA2_EVENT_VISIBLE_DATA_CHANGED = ( IA2_EVENT_TEXT_SELECTION_CHANGED + 1 )
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0016_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0016_v0_0_s_ifspec;
+
+#ifndef __IAccessibleApplication_INTERFACE_DEFINED__
+#define __IAccessibleApplication_INTERFACE_DEFINED__
+
+/* interface IAccessibleApplication */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleApplication;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("D49DED83-5B25-43F4-9B95-93B44595979E")
+ IAccessibleApplication : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appName(
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appVersion(
+ /* [retval][out] */ BSTR *version) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitName(
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitVersion(
+ /* [retval][out] */ BSTR *version) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleApplicationVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleApplication * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleApplication * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleApplication * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appName )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appVersion )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *version);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitName )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitVersion )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *version);
+
+ END_INTERFACE
+ } IAccessibleApplicationVtbl;
+
+ interface IAccessibleApplication
+ {
+ CONST_VTBL struct IAccessibleApplicationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleApplication_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleApplication_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleApplication_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleApplication_get_appName(This,name) \
+ ( (This)->lpVtbl -> get_appName(This,name) )
+
+#define IAccessibleApplication_get_appVersion(This,version) \
+ ( (This)->lpVtbl -> get_appVersion(This,version) )
+
+#define IAccessibleApplication_get_toolkitName(This,name) \
+ ( (This)->lpVtbl -> get_toolkitName(This,name) )
+
+#define IAccessibleApplication_get_toolkitVersion(This,version) \
+ ( (This)->lpVtbl -> get_toolkitVersion(This,version) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleApplication_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_INTERFACE_DEFINED__
+#define __IAccessibleDocument_INTERFACE_DEFINED__
+
+/* interface IAccessibleDocument */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleDocument;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("C48C7FCF-4AB5-4056-AFA6-902D6E1D1149")
+ IAccessibleDocument : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleDocumentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleDocument * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleDocument * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleDocument * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
+ IAccessibleDocument * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ END_INTERFACE
+ } IAccessibleDocumentVtbl;
+
+ interface IAccessibleDocument
+ {
+ CONST_VTBL struct IAccessibleDocumentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleDocument_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleDocument_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleDocument_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleDocument_get_anchorTarget(This,accessible) \
+ ( (This)->lpVtbl -> get_anchorTarget(This,accessible) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleDocument_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0018 */
+/* [local] */
+
+
+// Type Library Definitions
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0018_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0018_v0_0_s_ifspec;
+
+
+#ifndef __IAccessible2Lib_LIBRARY_DEFINED__
+#define __IAccessible2Lib_LIBRARY_DEFINED__
+
+/* library IAccessible2Lib */
+/* [hidden][version][helpstring][uuid] */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EXTERN_C const IID LIBID_IAccessible2Lib;
+#endif /* __IAccessible2Lib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
+unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
+unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
+void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long *, unsigned long , HWND * );
+unsigned char * __RPC_USER HWND_UserMarshal( unsigned long *, unsigned char *, HWND * );
+unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * );
+void __RPC_USER HWND_UserFree( unsigned long *, HWND * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
+void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all_i.c b/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all_i.c
new file mode 100644
index 0000000000..e04a5dcb69
--- /dev/null
+++ b/src/3rdparty/iaccessible2/generated/amd64/ia2_api_all_i.c
@@ -0,0 +1,133 @@
+
+
+/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Mon Aug 11 14:34:44 2014
+ */
+/* Compiler settings for ia2_api_all.idl:
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 7.00.0555
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING( ) */
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else // !_MIDL_USE_GUIDDEF_
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+ unsigned long x;
+ unsigned short s1;
+ unsigned short s2;
+ unsigned char c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif !_MIDL_USE_GUIDDEF_
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleRelation,0x7CDF86EE,0xC3DA,0x496a,0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleAction,0xB70D9F59,0x3B5A,0x4dba,0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessible2,0xE89F726E,0xC4F4,0x4c19,0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessible2_2,0x6C9430E9,0x299D,0x4E6F,0xBD,0x01,0xA8,0x2A,0x1E,0x88,0xD3,0xFF);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleComponent,0x1546D4B0,0x4C98,0x4bda,0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleValue,0x35855B5B,0xC566,0x4fd0,0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleText,0x24FD2FFB,0x3AAD,0x4a08,0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleText2,0x9690A9CC,0x5C80,0x4DF5,0x85,0x2E,0x2D,0x5A,0xE4,0x18,0x9A,0x54);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleEditableText,0xA59AA09A,0x7011,0x4b65,0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHyperlink,0x01C20F2B,0x3DD2,0x400f,0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext,0x6B4F8BBF,0xF1F2,0x418a,0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext2,0xCF64D89F,0x8287,0x4B44,0x85,0x01,0xA8,0x27,0x45,0x3A,0x60,0x77);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTable,0x35AD8070,0xC20C,0x4fb4,0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTable2,0x6167f295,0x06f0,0x4cdd,0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTableCell,0x594116B1,0xC99F,0x4847,0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleImage,0xFE5ABB3D,0x615E,0x4f7b,0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleApplication,0xD49DED83,0x5B25,0x43F4,0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleDocument,0xC48C7FCF,0x4AB5,0x4056,0xAF,0xA6,0x90,0x2D,0x6E,0x1D,0x11,0x49);
+
+
+MIDL_DEFINE_GUID(IID, LIBID_IAccessible2Lib,0xCE3F726E,0xD1D3,0x44FE,0xB9,0x95,0xFF,0x1D,0xB3,0xB4,0x8B,0x2B);
+
+#undef MIDL_DEFINE_GUID
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
diff --git a/src/3rdparty/iaccessible2/generated/x86/Accessible2.h b/src/3rdparty/iaccessible2/generated/x86/Accessible2.h
deleted file mode 100644
index dcf13c0d32..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/Accessible2.h
+++ /dev/null
@@ -1,585 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __Accessible2_h__
-#define __Accessible2_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessible2_FWD_DEFINED__
-#define __IAccessible2_FWD_DEFINED__
-typedef interface IAccessible2 IAccessible2;
-#endif /* __IAccessible2_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleRelation.h"
-#include "AccessibleStates.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_Accessible2_0000_0000 */
-/* [local] */
-
-typedef struct IA2Locale
- {
- BSTR language;
- BSTR country;
- BSTR variant;
- } IA2Locale;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_Accessible2_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_Accessible2_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessible2_INTERFACE_DEFINED__
-#define __IAccessible2_INTERFACE_DEFINED__
-
-/* interface IAccessible2 */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessible2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("E89F726E-C4F4-4c19-BB19-B647D7FA8478")
- IAccessible2 : public IAccessible
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRelations(
- /* [retval][out] */ long *nRelations) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relation(
- /* [in] */ long relationIndex,
- /* [retval][out] */ IAccessibleRelation **relation) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relations(
- /* [in] */ long maxRelations,
- /* [length_is][size_is][out] */ IAccessibleRelation **relations,
- /* [retval][out] */ long *nRelations) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE role(
- /* [retval][out] */ long *role) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollTo(
- /* [in] */ enum IA2ScrollType scrollType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollToPoint(
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_groupPosition(
- /* [out] */ long *groupLevel,
- /* [out] */ long *similarItemsInGroup,
- /* [retval][out] */ long *positionInGroup) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_states(
- /* [retval][out] */ AccessibleStates *states) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedRole(
- /* [retval][out] */ BSTR *extendedRole) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedRole(
- /* [retval][out] */ BSTR *localizedExtendedRole) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nExtendedStates(
- /* [retval][out] */ long *nExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedStates(
- /* [in] */ long maxExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
- /* [retval][out] */ long *nExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedStates(
- /* [in] */ long maxLocalizedExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
- /* [retval][out] */ long *nLocalizedExtendedStates) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_uniqueID(
- /* [retval][out] */ long *uniqueID) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_windowHandle(
- /* [retval][out] */ HWND *windowHandle) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_indexInParent(
- /* [retval][out] */ long *indexInParent) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locale(
- /* [retval][out] */ IA2Locale *locale) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
- /* [retval][out] */ BSTR *attributes) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessible2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessible2 * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessible2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessible2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
- IAccessible2 * This,
- /* [out] */ UINT *pctinfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
- IAccessible2 * This,
- /* [in] */ UINT iTInfo,
- /* [in] */ LCID lcid,
- /* [out] */ ITypeInfo **ppTInfo);
-
- HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
- IAccessible2 * This,
- /* [in] */ REFIID riid,
- /* [size_is][in] */ LPOLESTR *rgszNames,
- /* [range][in] */ UINT cNames,
- /* [in] */ LCID lcid,
- /* [size_is][out] */ DISPID *rgDispId);
-
- /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
- IAccessible2 * This,
- /* [in] */ DISPID dispIdMember,
- /* [in] */ REFIID riid,
- /* [in] */ LCID lcid,
- /* [in] */ WORD wFlags,
- /* [out][in] */ DISPPARAMS *pDispParams,
- /* [out] */ VARIANT *pVarResult,
- /* [out] */ EXCEPINFO *pExcepInfo,
- /* [out] */ UINT *puArgErr);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
- IAccessible2 * This,
- /* [retval][out] */ IDispatch **ppdispParent);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
- IAccessible2 * This,
- /* [retval][out] */ long *pcountChildren);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
- IAccessible2 * This,
- /* [in] */ VARIANT varChild,
- /* [retval][out] */ IDispatch **ppdispChild);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszName);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszValue);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszDescription);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ VARIANT *pvarRole);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ VARIANT *pvarState);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszHelp);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
- IAccessible2 * This,
- /* [out] */ BSTR *pszHelpFile,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ long *pidTopic);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszKeyboardShortcut);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
- IAccessible2 * This,
- /* [retval][out] */ VARIANT *pvarChild);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
- IAccessible2 * This,
- /* [retval][out] */ VARIANT *pvarChildren);
-
- /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [retval][out] */ BSTR *pszDefaultAction);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
- IAccessible2 * This,
- /* [in] */ long flagsSelect,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
- IAccessible2 * This,
- /* [out] */ long *pxLeft,
- /* [out] */ long *pyTop,
- /* [out] */ long *pcxWidth,
- /* [out] */ long *pcyHeight,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
- IAccessible2 * This,
- /* [in] */ long navDir,
- /* [optional][in] */ VARIANT varStart,
- /* [retval][out] */ VARIANT *pvarEndUpAt);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
- IAccessible2 * This,
- /* [in] */ long xLeft,
- /* [in] */ long yTop,
- /* [retval][out] */ VARIANT *pvarChild);
-
- /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild);
-
- /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [in] */ BSTR szName);
-
- /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
- IAccessible2 * This,
- /* [optional][in] */ VARIANT varChild,
- /* [in] */ BSTR szValue);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
- IAccessible2 * This,
- /* [retval][out] */ long *nRelations);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
- IAccessible2 * This,
- /* [in] */ long relationIndex,
- /* [retval][out] */ IAccessibleRelation **relation);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
- IAccessible2 * This,
- /* [in] */ long maxRelations,
- /* [length_is][size_is][out] */ IAccessibleRelation **relations,
- /* [retval][out] */ long *nRelations);
-
- HRESULT ( STDMETHODCALLTYPE *role )(
- IAccessible2 * This,
- /* [retval][out] */ long *role);
-
- HRESULT ( STDMETHODCALLTYPE *scrollTo )(
- IAccessible2 * This,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
- IAccessible2 * This,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
- IAccessible2 * This,
- /* [out] */ long *groupLevel,
- /* [out] */ long *similarItemsInGroup,
- /* [retval][out] */ long *positionInGroup);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
- IAccessible2 * This,
- /* [retval][out] */ AccessibleStates *states);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *extendedRole);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *localizedExtendedRole);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
- IAccessible2 * This,
- /* [retval][out] */ long *nExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
- IAccessible2 * This,
- /* [in] */ long maxExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
- /* [retval][out] */ long *nExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
- IAccessible2 * This,
- /* [in] */ long maxLocalizedExtendedStates,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
- /* [retval][out] */ long *nLocalizedExtendedStates);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
- IAccessible2 * This,
- /* [retval][out] */ long *uniqueID);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
- IAccessible2 * This,
- /* [retval][out] */ HWND *windowHandle);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
- IAccessible2 * This,
- /* [retval][out] */ long *indexInParent);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
- IAccessible2 * This,
- /* [retval][out] */ IA2Locale *locale);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessible2 * This,
- /* [retval][out] */ BSTR *attributes);
-
- END_INTERFACE
- } IAccessible2Vtbl;
-
- interface IAccessible2
- {
- CONST_VTBL struct IAccessible2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessible2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessible2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessible2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessible2_GetTypeInfoCount(This,pctinfo) \
- ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
-
-#define IAccessible2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
- ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
-
-#define IAccessible2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
- ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
-
-#define IAccessible2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
- ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
-
-
-#define IAccessible2_get_accParent(This,ppdispParent) \
- ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
-
-#define IAccessible2_get_accChildCount(This,pcountChildren) \
- ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
-
-#define IAccessible2_get_accChild(This,varChild,ppdispChild) \
- ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
-
-#define IAccessible2_get_accName(This,varChild,pszName) \
- ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
-
-#define IAccessible2_get_accValue(This,varChild,pszValue) \
- ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
-
-#define IAccessible2_get_accDescription(This,varChild,pszDescription) \
- ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
-
-#define IAccessible2_get_accRole(This,varChild,pvarRole) \
- ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
-
-#define IAccessible2_get_accState(This,varChild,pvarState) \
- ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
-
-#define IAccessible2_get_accHelp(This,varChild,pszHelp) \
- ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
-
-#define IAccessible2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
- ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
-
-#define IAccessible2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
- ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
-
-#define IAccessible2_get_accFocus(This,pvarChild) \
- ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
-
-#define IAccessible2_get_accSelection(This,pvarChildren) \
- ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
-
-#define IAccessible2_get_accDefaultAction(This,varChild,pszDefaultAction) \
- ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
-
-#define IAccessible2_accSelect(This,flagsSelect,varChild) \
- ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
-
-#define IAccessible2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
- ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
-
-#define IAccessible2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
- ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
-
-#define IAccessible2_accHitTest(This,xLeft,yTop,pvarChild) \
- ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
-
-#define IAccessible2_accDoDefaultAction(This,varChild) \
- ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
-
-#define IAccessible2_put_accName(This,varChild,szName) \
- ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
-
-#define IAccessible2_put_accValue(This,varChild,szValue) \
- ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
-
-
-#define IAccessible2_get_nRelations(This,nRelations) \
- ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
-
-#define IAccessible2_get_relation(This,relationIndex,relation) \
- ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
-
-#define IAccessible2_get_relations(This,maxRelations,relations,nRelations) \
- ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
-
-#define IAccessible2_role(This,role) \
- ( (This)->lpVtbl -> role(This,role) )
-
-#define IAccessible2_scrollTo(This,scrollType) \
- ( (This)->lpVtbl -> scrollTo(This,scrollType) )
-
-#define IAccessible2_scrollToPoint(This,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
-
-#define IAccessible2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
- ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
-
-#define IAccessible2_get_states(This,states) \
- ( (This)->lpVtbl -> get_states(This,states) )
-
-#define IAccessible2_get_extendedRole(This,extendedRole) \
- ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
-
-#define IAccessible2_get_localizedExtendedRole(This,localizedExtendedRole) \
- ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
-
-#define IAccessible2_get_nExtendedStates(This,nExtendedStates) \
- ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
-
-#define IAccessible2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
- ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
-
-#define IAccessible2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
- ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
-
-#define IAccessible2_get_uniqueID(This,uniqueID) \
- ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
-
-#define IAccessible2_get_windowHandle(This,windowHandle) \
- ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
-
-#define IAccessible2_get_indexInParent(This,indexInParent) \
- ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
-
-#define IAccessible2_get_locale(This,locale) \
- ( (This)->lpVtbl -> get_locale(This,locale) )
-
-#define IAccessible2_get_attributes(This,attributes) \
- ( (This)->lpVtbl -> get_attributes(This,attributes) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessible2_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-unsigned long __RPC_USER HWND_UserSize( unsigned long *, unsigned long , HWND * );
-unsigned char * __RPC_USER HWND_UserMarshal( unsigned long *, unsigned char *, HWND * );
-unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * );
-void __RPC_USER HWND_UserFree( unsigned long *, HWND * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/Accessible2_i.c b/src/3rdparty/iaccessible2/generated/x86/Accessible2_i.c
deleted file mode 100644
index df0f94063e..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/Accessible2_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessible2,0xE89F726E,0xC4F4,0x4c19,0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/Accessible2_p.c b/src/3rdparty/iaccessible2/generated/x86/Accessible2_p.c
deleted file mode 100644
index abb5883868..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/Accessible2_p.c
+++ /dev/null
@@ -1,1190 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for Accessible2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "Accessible2.h"
-
-#define TYPE_FORMAT_STRING_SIZE 189
-#define PROC_FORMAT_STRING_SIZE 715
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 2
-
-typedef struct _Accessible2_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _Accessible2_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _Accessible2_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } Accessible2_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const Accessible2_MIDL_TYPE_FORMAT_STRING Accessible2__MIDL_TypeFormatString;
-extern const Accessible2_MIDL_PROC_FORMAT_STRING Accessible2__MIDL_ProcFormatString;
-extern const Accessible2_MIDL_EXPR_FORMAT_STRING Accessible2__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessible2_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessible2_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const Accessible2_MIDL_PROC_FORMAT_STRING Accessible2__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_nRelations */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x1c ), /* 28 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nRelations */
-
-/* 24 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_relation */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x1d ), /* 29 */
-/* 44 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 46 */ NdrFcShort( 0x8 ), /* 8 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 52 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter relationIndex */
-
-/* 60 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter relation */
-
-/* 66 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Return value */
-
-/* 72 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 74 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_relations */
-
-/* 78 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 80 */ NdrFcLong( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x1e ), /* 30 */
-/* 86 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ NdrFcShort( 0x24 ), /* 36 */
-/* 92 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 94 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 96 */ NdrFcShort( 0x1 ), /* 1 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxRelations */
-
-/* 102 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 104 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter relations */
-
-/* 108 */ NdrFcShort( 0x113 ), /* Flags: must size, must free, out, simple ref, */
-/* 110 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 112 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Parameter nRelations */
-
-/* 114 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure role */
-
-/* 126 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 128 */ NdrFcLong( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x1f ), /* 31 */
-/* 134 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x24 ), /* 36 */
-/* 140 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 142 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-/* 146 */ NdrFcShort( 0x0 ), /* 0 */
-/* 148 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter role */
-
-/* 150 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 152 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 154 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 156 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 158 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollTo */
-
-/* 162 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 164 */ NdrFcLong( 0x0 ), /* 0 */
-/* 168 */ NdrFcShort( 0x20 ), /* 32 */
-/* 170 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 172 */ NdrFcShort( 0x6 ), /* 6 */
-/* 174 */ NdrFcShort( 0x8 ), /* 8 */
-/* 176 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 178 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 180 */ NdrFcShort( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x0 ), /* 0 */
-/* 184 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter scrollType */
-
-/* 186 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 188 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 190 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 192 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 194 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollToPoint */
-
-/* 198 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 200 */ NdrFcLong( 0x0 ), /* 0 */
-/* 204 */ NdrFcShort( 0x21 ), /* 33 */
-/* 206 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 208 */ NdrFcShort( 0x16 ), /* 22 */
-/* 210 */ NdrFcShort( 0x8 ), /* 8 */
-/* 212 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 214 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 216 */ NdrFcShort( 0x0 ), /* 0 */
-/* 218 */ NdrFcShort( 0x0 ), /* 0 */
-/* 220 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter coordinateType */
-
-/* 222 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 224 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 226 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 228 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 230 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 232 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 234 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 236 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 238 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 240 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 242 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 244 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_groupPosition */
-
-/* 246 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 248 */ NdrFcLong( 0x0 ), /* 0 */
-/* 252 */ NdrFcShort( 0x22 ), /* 34 */
-/* 254 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 256 */ NdrFcShort( 0x0 ), /* 0 */
-/* 258 */ NdrFcShort( 0x5c ), /* 92 */
-/* 260 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 262 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 264 */ NdrFcShort( 0x0 ), /* 0 */
-/* 266 */ NdrFcShort( 0x0 ), /* 0 */
-/* 268 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter groupLevel */
-
-/* 270 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 272 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 274 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter similarItemsInGroup */
-
-/* 276 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 278 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 280 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter positionInGroup */
-
-/* 282 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 284 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 286 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 288 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 290 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 292 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_states */
-
-/* 294 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 296 */ NdrFcLong( 0x0 ), /* 0 */
-/* 300 */ NdrFcShort( 0x23 ), /* 35 */
-/* 302 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 304 */ NdrFcShort( 0x0 ), /* 0 */
-/* 306 */ NdrFcShort( 0x24 ), /* 36 */
-/* 308 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 310 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 312 */ NdrFcShort( 0x0 ), /* 0 */
-/* 314 */ NdrFcShort( 0x0 ), /* 0 */
-/* 316 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter states */
-
-/* 318 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 320 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 322 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 324 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 326 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 328 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_extendedRole */
-
-/* 330 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 332 */ NdrFcLong( 0x0 ), /* 0 */
-/* 336 */ NdrFcShort( 0x24 ), /* 36 */
-/* 338 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 340 */ NdrFcShort( 0x0 ), /* 0 */
-/* 342 */ NdrFcShort( 0x8 ), /* 8 */
-/* 344 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 346 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 348 */ NdrFcShort( 0x1 ), /* 1 */
-/* 350 */ NdrFcShort( 0x0 ), /* 0 */
-/* 352 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter extendedRole */
-
-/* 354 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 356 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 358 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 360 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 362 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 364 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedExtendedRole */
-
-/* 366 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 368 */ NdrFcLong( 0x0 ), /* 0 */
-/* 372 */ NdrFcShort( 0x25 ), /* 37 */
-/* 374 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 376 */ NdrFcShort( 0x0 ), /* 0 */
-/* 378 */ NdrFcShort( 0x8 ), /* 8 */
-/* 380 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 382 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 384 */ NdrFcShort( 0x1 ), /* 1 */
-/* 386 */ NdrFcShort( 0x0 ), /* 0 */
-/* 388 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter localizedExtendedRole */
-
-/* 390 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 392 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 394 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 396 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 398 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 400 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nExtendedStates */
-
-/* 402 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 404 */ NdrFcLong( 0x0 ), /* 0 */
-/* 408 */ NdrFcShort( 0x26 ), /* 38 */
-/* 410 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 412 */ NdrFcShort( 0x0 ), /* 0 */
-/* 414 */ NdrFcShort( 0x24 ), /* 36 */
-/* 416 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 418 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 420 */ NdrFcShort( 0x0 ), /* 0 */
-/* 422 */ NdrFcShort( 0x0 ), /* 0 */
-/* 424 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nExtendedStates */
-
-/* 426 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 428 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 430 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 432 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 434 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 436 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_extendedStates */
-
-/* 438 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 440 */ NdrFcLong( 0x0 ), /* 0 */
-/* 444 */ NdrFcShort( 0x27 ), /* 39 */
-/* 446 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 448 */ NdrFcShort( 0x8 ), /* 8 */
-/* 450 */ NdrFcShort( 0x24 ), /* 36 */
-/* 452 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 454 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 456 */ NdrFcShort( 0x1 ), /* 1 */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxExtendedStates */
-
-/* 462 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 464 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 466 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter extendedStates */
-
-/* 468 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 470 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 472 */ NdrFcShort( 0x5e ), /* Type Offset=94 */
-
- /* Parameter nExtendedStates */
-
-/* 474 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 476 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 478 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 480 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 482 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 484 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedExtendedStates */
-
-/* 486 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 488 */ NdrFcLong( 0x0 ), /* 0 */
-/* 492 */ NdrFcShort( 0x28 ), /* 40 */
-/* 494 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 496 */ NdrFcShort( 0x8 ), /* 8 */
-/* 498 */ NdrFcShort( 0x24 ), /* 36 */
-/* 500 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 502 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 504 */ NdrFcShort( 0x1 ), /* 1 */
-/* 506 */ NdrFcShort( 0x0 ), /* 0 */
-/* 508 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxLocalizedExtendedStates */
-
-/* 510 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 512 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 514 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter localizedExtendedStates */
-
-/* 516 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 518 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 520 */ NdrFcShort( 0x5e ), /* Type Offset=94 */
-
- /* Parameter nLocalizedExtendedStates */
-
-/* 522 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 524 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 526 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 528 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 530 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 532 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_uniqueID */
-
-/* 534 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 536 */ NdrFcLong( 0x0 ), /* 0 */
-/* 540 */ NdrFcShort( 0x29 ), /* 41 */
-/* 542 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 544 */ NdrFcShort( 0x0 ), /* 0 */
-/* 546 */ NdrFcShort( 0x24 ), /* 36 */
-/* 548 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 550 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 552 */ NdrFcShort( 0x0 ), /* 0 */
-/* 554 */ NdrFcShort( 0x0 ), /* 0 */
-/* 556 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter uniqueID */
-
-/* 558 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 560 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 562 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 564 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 566 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 568 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_windowHandle */
-
-/* 570 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 572 */ NdrFcLong( 0x0 ), /* 0 */
-/* 576 */ NdrFcShort( 0x2a ), /* 42 */
-/* 578 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 580 */ NdrFcShort( 0x0 ), /* 0 */
-/* 582 */ NdrFcShort( 0x8 ), /* 8 */
-/* 584 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 586 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 588 */ NdrFcShort( 0x1 ), /* 1 */
-/* 590 */ NdrFcShort( 0x0 ), /* 0 */
-/* 592 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter windowHandle */
-
-/* 594 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 596 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 598 */ NdrFcShort( 0x98 ), /* Type Offset=152 */
-
- /* Return value */
-
-/* 600 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 602 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 604 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_indexInParent */
-
-/* 606 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 608 */ NdrFcLong( 0x0 ), /* 0 */
-/* 612 */ NdrFcShort( 0x2b ), /* 43 */
-/* 614 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 616 */ NdrFcShort( 0x0 ), /* 0 */
-/* 618 */ NdrFcShort( 0x24 ), /* 36 */
-/* 620 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 622 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 624 */ NdrFcShort( 0x0 ), /* 0 */
-/* 626 */ NdrFcShort( 0x0 ), /* 0 */
-/* 628 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter indexInParent */
-
-/* 630 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 632 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 634 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 636 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 638 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 640 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_locale */
-
-/* 642 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 644 */ NdrFcLong( 0x0 ), /* 0 */
-/* 648 */ NdrFcShort( 0x2c ), /* 44 */
-/* 650 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 652 */ NdrFcShort( 0x0 ), /* 0 */
-/* 654 */ NdrFcShort( 0x8 ), /* 8 */
-/* 656 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 658 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 660 */ NdrFcShort( 0x1 ), /* 1 */
-/* 662 */ NdrFcShort( 0x0 ), /* 0 */
-/* 664 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter locale */
-
-/* 666 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 668 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 670 */ NdrFcShort( 0xa6 ), /* Type Offset=166 */
-
- /* Return value */
-
-/* 672 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 674 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 676 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_attributes */
-
-/* 678 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 680 */ NdrFcLong( 0x0 ), /* 0 */
-/* 684 */ NdrFcShort( 0x2d ), /* 45 */
-/* 686 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 688 */ NdrFcShort( 0x0 ), /* 0 */
-/* 690 */ NdrFcShort( 0x8 ), /* 8 */
-/* 692 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 694 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 696 */ NdrFcShort( 0x1 ), /* 1 */
-/* 698 */ NdrFcShort( 0x0 ), /* 0 */
-/* 700 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter attributes */
-
-/* 702 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 704 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 706 */ NdrFcShort( 0x54 ), /* Type Offset=84 */
-
- /* Return value */
-
-/* 708 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 710 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 712 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const Accessible2_MIDL_TYPE_FORMAT_STRING Accessible2__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 12 */ NdrFcLong( 0x7cdf86ee ), /* 2095023854 */
-/* 16 */ NdrFcShort( 0xc3da ), /* -15398 */
-/* 18 */ NdrFcShort( 0x496a ), /* 18794 */
-/* 20 */ 0xbd, /* 189 */
- 0xa4, /* 164 */
-/* 22 */ 0x28, /* 40 */
- 0x1b, /* 27 */
-/* 24 */ 0x33, /* 51 */
- 0x6e, /* 110 */
-/* 26 */ 0x1f, /* 31 */
- 0xdc, /* 220 */
-/* 28 */
- 0x11, 0x0, /* FC_RP */
-/* 30 */ NdrFcShort( 0x2 ), /* Offset= 2 (32) */
-/* 32 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 38 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 40 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 42 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 44 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 46 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 48 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 50 */ NdrFcShort( 0xffd8 ), /* Offset= -40 (10) */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 56 */ NdrFcShort( 0x1c ), /* Offset= 28 (84) */
-/* 58 */
- 0x13, 0x0, /* FC_OP */
-/* 60 */ NdrFcShort( 0xe ), /* Offset= 14 (74) */
-/* 62 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 64 */ NdrFcShort( 0x2 ), /* 2 */
-/* 66 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 68 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 70 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 72 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 74 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 76 */ NdrFcShort( 0x8 ), /* 8 */
-/* 78 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (62) */
-/* 80 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 82 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 84 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 86 */ NdrFcShort( 0x0 ), /* 0 */
-/* 88 */ NdrFcShort( 0x4 ), /* 4 */
-/* 90 */ NdrFcShort( 0x0 ), /* 0 */
-/* 92 */ NdrFcShort( 0xffde ), /* Offset= -34 (58) */
-/* 94 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 96 */ NdrFcShort( 0x2 ), /* Offset= 2 (98) */
-/* 98 */
- 0x13, 0x0, /* FC_OP */
-/* 100 */ NdrFcShort( 0x2 ), /* Offset= 2 (102) */
-/* 102 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 108 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 110 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 112 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 114 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 116 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 118 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 120 */ NdrFcShort( 0xffdc ), /* Offset= -36 (84) */
-/* 122 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 124 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 126 */ NdrFcShort( 0x1a ), /* Offset= 26 (152) */
-/* 128 */
- 0x13, 0x0, /* FC_OP */
-/* 130 */ NdrFcShort( 0x2 ), /* Offset= 2 (132) */
-/* 132 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x48, /* 72 */
-/* 134 */ NdrFcShort( 0x4 ), /* 4 */
-/* 136 */ NdrFcShort( 0x2 ), /* 2 */
-/* 138 */ NdrFcLong( 0x48746457 ), /* 1215587415 */
-/* 142 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 144 */ NdrFcLong( 0x52746457 ), /* 1383359575 */
-/* 148 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 150 */ NdrFcShort( 0xffff ), /* Offset= -1 (149) */
-/* 152 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 154 */ NdrFcShort( 0x1 ), /* 1 */
-/* 156 */ NdrFcShort( 0x4 ), /* 4 */
-/* 158 */ NdrFcShort( 0x0 ), /* 0 */
-/* 160 */ NdrFcShort( 0xffe0 ), /* Offset= -32 (128) */
-/* 162 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 164 */ NdrFcShort( 0x2 ), /* Offset= 2 (166) */
-/* 166 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 168 */ NdrFcShort( 0xc ), /* 12 */
-/* 170 */ NdrFcShort( 0x0 ), /* 0 */
-/* 172 */ NdrFcShort( 0x0 ), /* Offset= 0 (172) */
-/* 174 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 176 */ NdrFcShort( 0xffa4 ), /* Offset= -92 (84) */
-/* 178 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 180 */ NdrFcShort( 0xffa0 ), /* Offset= -96 (84) */
-/* 182 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 184 */ NdrFcShort( 0xff9c ), /* Offset= -100 (84) */
-/* 186 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- },
- {
- HWND_UserSize
- ,HWND_UserMarshal
- ,HWND_UserUnmarshal
- ,HWND_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_Accessible2_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IDispatch, ver. 0.0,
- GUID={0x00020400,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessible, ver. 0.0,
- GUID={0x618736e0,0x3c3d,0x11cf,{0x81,0x0c,0x00,0xaa,0x00,0x38,0x9b,0x71}} */
-
-
-/* Object interface: IAccessible2, ver. 0.0,
- GUID={0xE89F726E,0xC4F4,0x4c19,{0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessible2_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 36,
- 78,
- 126,
- 162,
- 198,
- 246,
- 294,
- 330,
- 366,
- 402,
- 438,
- 486,
- 534,
- 570,
- 606,
- 642,
- 678
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessible2_ProxyInfo =
- {
- &Object_StubDesc,
- Accessible2__MIDL_ProcFormatString.Format,
- &IAccessible2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessible2_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- Accessible2__MIDL_ProcFormatString.Format,
- &IAccessible2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(46) _IAccessible2ProxyVtbl =
-{
- &IAccessible2_ProxyInfo,
- &IID_IAccessible2,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IDispatch::GetTypeInfoCount */ ,
- 0 /* IDispatch::GetTypeInfo */ ,
- 0 /* IDispatch::GetIDsOfNames */ ,
- 0 /* IDispatch_Invoke_Proxy */ ,
- 0 /* IAccessible::get_accParent */ ,
- 0 /* IAccessible::get_accChildCount */ ,
- 0 /* IAccessible::get_accChild */ ,
- 0 /* IAccessible::get_accName */ ,
- 0 /* IAccessible::get_accValue */ ,
- 0 /* IAccessible::get_accDescription */ ,
- 0 /* IAccessible::get_accRole */ ,
- 0 /* IAccessible::get_accState */ ,
- 0 /* IAccessible::get_accHelp */ ,
- 0 /* IAccessible::get_accHelpTopic */ ,
- 0 /* IAccessible::get_accKeyboardShortcut */ ,
- 0 /* IAccessible::get_accFocus */ ,
- 0 /* IAccessible::get_accSelection */ ,
- 0 /* IAccessible::get_accDefaultAction */ ,
- 0 /* IAccessible::accSelect */ ,
- 0 /* IAccessible::accLocation */ ,
- 0 /* IAccessible::accNavigate */ ,
- 0 /* IAccessible::accHitTest */ ,
- 0 /* IAccessible::accDoDefaultAction */ ,
- 0 /* IAccessible::put_accName */ ,
- 0 /* IAccessible::put_accValue */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_nRelations */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_relation */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_relations */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::role */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::scrollTo */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::scrollToPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_groupPosition */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_states */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_extendedRole */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_localizedExtendedRole */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_nExtendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_extendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_localizedExtendedStates */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_uniqueID */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_windowHandle */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_indexInParent */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_locale */ ,
- (void *) (INT_PTR) -1 /* IAccessible2::get_attributes */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessible2_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessible2StubVtbl =
-{
- &IID_IAccessible2,
- &IAccessible2_ServerInfo,
- 46,
- &IAccessible2_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- Accessible2__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _Accessible2_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessible2ProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _Accessible2_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessible2StubVtbl,
- 0
-};
-
-PCInterfaceName const _Accessible2_InterfaceNamesList[] =
-{
- "IAccessible2",
- 0
-};
-
-const IID * const _Accessible2_BaseIIDList[] =
-{
- &IID_IAccessible,
- 0
-};
-
-
-#define _Accessible2_CHECK_IID(n) IID_GENERIC_CHECK_IID( _Accessible2, pIID, n)
-
-int __stdcall _Accessible2_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_Accessible2_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo Accessible2_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _Accessible2_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _Accessible2_StubVtblList,
- (const PCInterfaceName * ) & _Accessible2_InterfaceNamesList,
- (const IID ** ) & _Accessible2_BaseIIDList,
- & _Accessible2_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleAction.h
deleted file mode 100644
index c1ebabb899..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction.h
+++ /dev/null
@@ -1,220 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleAction_h__
-#define __AccessibleAction_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleAction_FWD_DEFINED__
-#define __IAccessibleAction_FWD_DEFINED__
-typedef interface IAccessibleAction IAccessibleAction;
-#endif /* __IAccessibleAction_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleAction_INTERFACE_DEFINED__
-#define __IAccessibleAction_INTERFACE_DEFINED__
-
-/* interface IAccessibleAction */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleAction;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("B70D9F59-3B5A-4dba-AB9E-22012F607DF5")
- IAccessibleAction : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE nActions(
- /* [retval][out] */ long *nActions) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE doAction(
- /* [in] */ long actionIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_keyBinding(
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_name(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedName(
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleActionVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleAction * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleAction * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleAction * This);
-
- HRESULT ( STDMETHODCALLTYPE *nActions )(
- IAccessibleAction * This,
- /* [retval][out] */ long *nActions);
-
- HRESULT ( STDMETHODCALLTYPE *doAction )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
- IAccessibleAction * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName);
-
- END_INTERFACE
- } IAccessibleActionVtbl;
-
- interface IAccessibleAction
- {
- CONST_VTBL struct IAccessibleActionVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleAction_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleAction_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleAction_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleAction_nActions(This,nActions) \
- ( (This)->lpVtbl -> nActions(This,nActions) )
-
-#define IAccessibleAction_doAction(This,actionIndex) \
- ( (This)->lpVtbl -> doAction(This,actionIndex) )
-
-#define IAccessibleAction_get_description(This,actionIndex,description) \
- ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
-
-#define IAccessibleAction_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
- ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
-
-#define IAccessibleAction_get_name(This,actionIndex,name) \
- ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
-
-#define IAccessibleAction_get_localizedName(This,actionIndex,localizedName) \
- ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleAction_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_i.c
deleted file mode 100644
index ea097ef5d6..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleAction,0xB70D9F59,0x3B5A,0x4dba,0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_p.c
deleted file mode 100644
index 41854575bd..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleAction_p.c
+++ /dev/null
@@ -1,563 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:51 2012
- */
-/* Compiler settings for AccessibleAction.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleAction.h"
-
-#define TYPE_FORMAT_STRING_SIZE 77
-#define PROC_FORMAT_STRING_SIZE 253
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleAction_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleAction_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleAction_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleAction_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleAction_MIDL_TYPE_FORMAT_STRING AccessibleAction__MIDL_TypeFormatString;
-extern const AccessibleAction_MIDL_PROC_FORMAT_STRING AccessibleAction__MIDL_ProcFormatString;
-extern const AccessibleAction_MIDL_EXPR_FORMAT_STRING AccessibleAction__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleAction_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleAction_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleAction_MIDL_PROC_FORMAT_STRING AccessibleAction__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure nActions */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nActions */
-
-/* 24 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure doAction */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 46 */ NdrFcShort( 0x8 ), /* 8 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 52 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 60 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 66 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_description */
-
-/* 72 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 74 */ NdrFcLong( 0x0 ), /* 0 */
-/* 78 */ NdrFcShort( 0x5 ), /* 5 */
-/* 80 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 82 */ NdrFcShort( 0x8 ), /* 8 */
-/* 84 */ NdrFcShort( 0x8 ), /* 8 */
-/* 86 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 88 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 90 */ NdrFcShort( 0x1 ), /* 1 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 96 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 98 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 100 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 102 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 104 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 106 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_keyBinding */
-
-/* 114 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 116 */ NdrFcLong( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x6 ), /* 6 */
-/* 122 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 124 */ NdrFcShort( 0x10 ), /* 16 */
-/* 126 */ NdrFcShort( 0x24 ), /* 36 */
-/* 128 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x5, /* 5 */
-/* 130 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 132 */ NdrFcShort( 0x1 ), /* 1 */
-/* 134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 138 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 140 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 142 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nMaxBindings */
-
-/* 144 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 146 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 148 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter keyBindings */
-
-/* 150 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 152 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 154 */ NdrFcShort( 0x2e ), /* Type Offset=46 */
-
- /* Parameter nBindings */
-
-/* 156 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 158 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 162 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 164 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 166 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_name */
-
-/* 168 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 170 */ NdrFcLong( 0x0 ), /* 0 */
-/* 174 */ NdrFcShort( 0x7 ), /* 7 */
-/* 176 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 178 */ NdrFcShort( 0x8 ), /* 8 */
-/* 180 */ NdrFcShort( 0x8 ), /* 8 */
-/* 182 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 184 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 186 */ NdrFcShort( 0x1 ), /* 1 */
-/* 188 */ NdrFcShort( 0x0 ), /* 0 */
-/* 190 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 192 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 194 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter name */
-
-/* 198 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 200 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 202 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 204 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 206 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 208 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedName */
-
-/* 210 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 212 */ NdrFcLong( 0x0 ), /* 0 */
-/* 216 */ NdrFcShort( 0x8 ), /* 8 */
-/* 218 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 220 */ NdrFcShort( 0x8 ), /* 8 */
-/* 222 */ NdrFcShort( 0x8 ), /* 8 */
-/* 224 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 226 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 228 */ NdrFcShort( 0x1 ), /* 1 */
-/* 230 */ NdrFcShort( 0x0 ), /* 0 */
-/* 232 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter actionIndex */
-
-/* 234 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 236 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 238 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter localizedName */
-
-/* 240 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 242 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 244 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 246 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 248 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 250 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleAction_MIDL_TYPE_FORMAT_STRING AccessibleAction__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 8 */ NdrFcShort( 0x1c ), /* Offset= 28 (36) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0xe ), /* Offset= 14 (26) */
-/* 14 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 16 */ NdrFcShort( 0x2 ), /* 2 */
-/* 18 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 20 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 22 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 24 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 26 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 28 */ NdrFcShort( 0x8 ), /* 8 */
-/* 30 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (14) */
-/* 32 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 34 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 36 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0x4 ), /* 4 */
-/* 42 */ NdrFcShort( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0xffde ), /* Offset= -34 (10) */
-/* 46 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x13, 0x0, /* FC_OP */
-/* 52 */ NdrFcShort( 0x2 ), /* Offset= 2 (54) */
-/* 54 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 60 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 62 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 64 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 66 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 68 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 70 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 72 */ NdrFcShort( 0xffdc ), /* Offset= -36 (36) */
-/* 74 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleAction, ver. 0.0,
- GUID={0xB70D9F59,0x3B5A,0x4dba,{0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleAction_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 72,
- 114,
- 168,
- 210
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleAction_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleAction__MIDL_ProcFormatString.Format,
- &IAccessibleAction_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleAction_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleAction__MIDL_ProcFormatString.Format,
- &IAccessibleAction_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(9) _IAccessibleActionProxyVtbl =
-{
- &IAccessibleAction_ProxyInfo,
- &IID_IAccessibleAction,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::nActions */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::doAction */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_description */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_keyBinding */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_name */ ,
- (void *) (INT_PTR) -1 /* IAccessibleAction::get_localizedName */
-};
-
-const CInterfaceStubVtbl _IAccessibleActionStubVtbl =
-{
- &IID_IAccessibleAction,
- &IAccessibleAction_ServerInfo,
- 9,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleAction__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleAction_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleActionProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleAction_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleActionStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleAction_InterfaceNamesList[] =
-{
- "IAccessibleAction",
- 0
-};
-
-
-#define _AccessibleAction_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleAction, pIID, n)
-
-int __stdcall _AccessibleAction_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleAction_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleAction_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleAction_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleAction_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleAction_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleAction_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication.h
deleted file mode 100644
index e14096869c..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication.h
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleApplication_h__
-#define __AccessibleApplication_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleApplication_FWD_DEFINED__
-#define __IAccessibleApplication_FWD_DEFINED__
-typedef interface IAccessibleApplication IAccessibleApplication;
-#endif /* __IAccessibleApplication_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleApplication_INTERFACE_DEFINED__
-#define __IAccessibleApplication_INTERFACE_DEFINED__
-
-/* interface IAccessibleApplication */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleApplication;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("D49DED83-5B25-43F4-9B95-93B44595979E")
- IAccessibleApplication : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appName(
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appVersion(
- /* [retval][out] */ BSTR *version) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitName(
- /* [retval][out] */ BSTR *name) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitVersion(
- /* [retval][out] */ BSTR *version) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleApplicationVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleApplication * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleApplication * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleApplication * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appName )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appVersion )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *version);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitName )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitVersion )(
- IAccessibleApplication * This,
- /* [retval][out] */ BSTR *version);
-
- END_INTERFACE
- } IAccessibleApplicationVtbl;
-
- interface IAccessibleApplication
- {
- CONST_VTBL struct IAccessibleApplicationVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleApplication_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleApplication_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleApplication_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleApplication_get_appName(This,name) \
- ( (This)->lpVtbl -> get_appName(This,name) )
-
-#define IAccessibleApplication_get_appVersion(This,version) \
- ( (This)->lpVtbl -> get_appVersion(This,version) )
-
-#define IAccessibleApplication_get_toolkitName(This,name) \
- ( (This)->lpVtbl -> get_toolkitName(This,name) )
-
-#define IAccessibleApplication_get_toolkitVersion(This,version) \
- ( (This)->lpVtbl -> get_toolkitVersion(This,version) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleApplication_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_i.c
deleted file mode 100644
index daa0c1f7d3..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleApplication,0xD49DED83,0x5B25,0x43F4,0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_p.c
deleted file mode 100644
index 4e51a63fff..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleApplication_p.c
+++ /dev/null
@@ -1,428 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleApplication.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleApplication.h"
-
-#define TYPE_FORMAT_STRING_SIZE 43
-#define PROC_FORMAT_STRING_SIZE 145
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleApplication_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleApplication_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleApplication_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleApplication_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleApplication_MIDL_TYPE_FORMAT_STRING AccessibleApplication__MIDL_TypeFormatString;
-extern const AccessibleApplication_MIDL_PROC_FORMAT_STRING AccessibleApplication__MIDL_ProcFormatString;
-extern const AccessibleApplication_MIDL_EXPR_FORMAT_STRING AccessibleApplication__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleApplication_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleApplication_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleApplication_MIDL_PROC_FORMAT_STRING AccessibleApplication__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_appName */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter name */
-
-/* 24 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_appVersion */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 46 */ NdrFcShort( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 52 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 54 */ NdrFcShort( 0x1 ), /* 1 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter version */
-
-/* 60 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 66 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_toolkitName */
-
-/* 72 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 74 */ NdrFcLong( 0x0 ), /* 0 */
-/* 78 */ NdrFcShort( 0x5 ), /* 5 */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ NdrFcShort( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x8 ), /* 8 */
-/* 86 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 88 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 90 */ NdrFcShort( 0x1 ), /* 1 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter name */
-
-/* 96 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 98 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 100 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 102 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 104 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_toolkitVersion */
-
-/* 108 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 110 */ NdrFcLong( 0x0 ), /* 0 */
-/* 114 */ NdrFcShort( 0x6 ), /* 6 */
-/* 116 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 118 */ NdrFcShort( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x8 ), /* 8 */
-/* 122 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 124 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 126 */ NdrFcShort( 0x1 ), /* 1 */
-/* 128 */ NdrFcShort( 0x0 ), /* 0 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter version */
-
-/* 132 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 134 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 136 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 138 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 140 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 142 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleApplication_MIDL_TYPE_FORMAT_STRING AccessibleApplication__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x4 ), /* 4 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleApplication, ver. 0.0,
- GUID={0xD49DED83,0x5B25,0x43F4,{0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleApplication_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 72,
- 108
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleApplication_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleApplication__MIDL_ProcFormatString.Format,
- &IAccessibleApplication_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleApplication_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleApplication__MIDL_ProcFormatString.Format,
- &IAccessibleApplication_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(7) _IAccessibleApplicationProxyVtbl =
-{
- &IAccessibleApplication_ProxyInfo,
- &IID_IAccessibleApplication,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_appName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_appVersion */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_toolkitName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleApplication::get_toolkitVersion */
-};
-
-const CInterfaceStubVtbl _IAccessibleApplicationStubVtbl =
-{
- &IID_IAccessibleApplication,
- &IAccessibleApplication_ServerInfo,
- 7,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleApplication__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleApplication_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleApplicationProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleApplication_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleApplicationStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleApplication_InterfaceNamesList[] =
-{
- "IAccessibleApplication",
- 0
-};
-
-
-#define _AccessibleApplication_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleApplication, pIID, n)
-
-int __stdcall _AccessibleApplication_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleApplication_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleApplication_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleApplication_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleApplication_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleApplication_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleApplication_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent.h
deleted file mode 100644
index a5d6fa625b..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent.h
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleComponent_h__
-#define __AccessibleComponent_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleComponent_FWD_DEFINED__
-#define __IAccessibleComponent_FWD_DEFINED__
-typedef interface IAccessibleComponent IAccessibleComponent;
-#endif /* __IAccessibleComponent_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleComponent_0000_0000 */
-/* [local] */
-
-typedef long IA2Color;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleComponent_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleComponent_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleComponent_INTERFACE_DEFINED__
-#define __IAccessibleComponent_INTERFACE_DEFINED__
-
-/* interface IAccessibleComponent */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleComponent;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("1546D4B0-4C98-4bda-89AE-9A64748BDDE4")
- IAccessibleComponent : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locationInParent(
- /* [out] */ long *x,
- /* [retval][out] */ long *y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_foreground(
- /* [retval][out] */ IA2Color *foreground) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_background(
- /* [retval][out] */ IA2Color *background) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleComponentVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleComponent * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleComponent * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleComponent * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locationInParent )(
- IAccessibleComponent * This,
- /* [out] */ long *x,
- /* [retval][out] */ long *y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_foreground )(
- IAccessibleComponent * This,
- /* [retval][out] */ IA2Color *foreground);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_background )(
- IAccessibleComponent * This,
- /* [retval][out] */ IA2Color *background);
-
- END_INTERFACE
- } IAccessibleComponentVtbl;
-
- interface IAccessibleComponent
- {
- CONST_VTBL struct IAccessibleComponentVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleComponent_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleComponent_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleComponent_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleComponent_get_locationInParent(This,x,y) \
- ( (This)->lpVtbl -> get_locationInParent(This,x,y) )
-
-#define IAccessibleComponent_get_foreground(This,foreground) \
- ( (This)->lpVtbl -> get_foreground(This,foreground) )
-
-#define IAccessibleComponent_get_background(This,background) \
- ( (This)->lpVtbl -> get_background(This,background) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleComponent_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_i.c
deleted file mode 100644
index b48fee274b..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleComponent,0x1546D4B0,0x4C98,0x4bda,0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_p.c
deleted file mode 100644
index 23230ff0ac..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleComponent_p.c
+++ /dev/null
@@ -1,369 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:52 2012
- */
-/* Compiler settings for AccessibleComponent.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleComponent.h"
-
-#define TYPE_FORMAT_STRING_SIZE 7
-#define PROC_FORMAT_STRING_SIZE 115
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleComponent_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleComponent_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleComponent_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleComponent_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleComponent_MIDL_TYPE_FORMAT_STRING AccessibleComponent__MIDL_TypeFormatString;
-extern const AccessibleComponent_MIDL_PROC_FORMAT_STRING AccessibleComponent__MIDL_ProcFormatString;
-extern const AccessibleComponent_MIDL_EXPR_FORMAT_STRING AccessibleComponent__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleComponent_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleComponent_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleComponent_MIDL_PROC_FORMAT_STRING AccessibleComponent__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_locationInParent */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x40 ), /* 64 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter x */
-
-/* 24 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 30 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 36 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_foreground */
-
-/* 42 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 44 */ NdrFcLong( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x4 ), /* 4 */
-/* 50 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 52 */ NdrFcShort( 0x0 ), /* 0 */
-/* 54 */ NdrFcShort( 0x24 ), /* 36 */
-/* 56 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 58 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter foreground */
-
-/* 66 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 68 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 72 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 74 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_background */
-
-/* 78 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 80 */ NdrFcLong( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x5 ), /* 5 */
-/* 86 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 88 */ NdrFcShort( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x24 ), /* 36 */
-/* 92 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 94 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter background */
-
-/* 102 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 104 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleComponent_MIDL_TYPE_FORMAT_STRING AccessibleComponent__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-
-/* Standard interface: __MIDL_itf_AccessibleComponent_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleComponent, ver. 0.0,
- GUID={0x1546D4B0,0x4C98,0x4bda,{0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleComponent_FormatStringOffsetTable[] =
- {
- 0,
- 42,
- 78
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleComponent_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleComponent__MIDL_ProcFormatString.Format,
- &IAccessibleComponent_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleComponent_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleComponent__MIDL_ProcFormatString.Format,
- &IAccessibleComponent_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(6) _IAccessibleComponentProxyVtbl =
-{
- &IAccessibleComponent_ProxyInfo,
- &IID_IAccessibleComponent,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_locationInParent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_foreground */ ,
- (void *) (INT_PTR) -1 /* IAccessibleComponent::get_background */
-};
-
-const CInterfaceStubVtbl _IAccessibleComponentStubVtbl =
-{
- &IID_IAccessibleComponent,
- &IAccessibleComponent_ServerInfo,
- 6,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleComponent__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleComponent_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleComponentProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleComponent_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleComponentStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleComponent_InterfaceNamesList[] =
-{
- "IAccessibleComponent",
- 0
-};
-
-
-#define _AccessibleComponent_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleComponent, pIID, n)
-
-int __stdcall _AccessibleComponent_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleComponent_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleComponent_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleComponent_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleComponent_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleComponent_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleComponent_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText.h
deleted file mode 100644
index 3afeefbac0..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText.h
+++ /dev/null
@@ -1,235 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleEditableText_h__
-#define __AccessibleEditableText_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleEditableText_FWD_DEFINED__
-#define __IAccessibleEditableText_FWD_DEFINED__
-typedef interface IAccessibleEditableText IAccessibleEditableText;
-#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleEditableText_INTERFACE_DEFINED__
-#define __IAccessibleEditableText_INTERFACE_DEFINED__
-
-/* interface IAccessibleEditableText */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleEditableText;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("A59AA09A-7011-4b65-939D-32B1FB5547E3")
- IAccessibleEditableText : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE copyText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE deleteText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE insertText(
- /* [in] */ long offset,
- /* [in] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE cutText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE pasteText(
- /* [in] */ long offset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE replaceText(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setAttributes(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *attributes) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleEditableTextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleEditableText * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleEditableText * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleEditableText * This);
-
- HRESULT ( STDMETHODCALLTYPE *copyText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *deleteText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *insertText )(
- IAccessibleEditableText * This,
- /* [in] */ long offset,
- /* [in] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *cutText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- HRESULT ( STDMETHODCALLTYPE *pasteText )(
- IAccessibleEditableText * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *replaceText )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *setAttributes )(
- IAccessibleEditableText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [in] */ BSTR *attributes);
-
- END_INTERFACE
- } IAccessibleEditableTextVtbl;
-
- interface IAccessibleEditableText
- {
- CONST_VTBL struct IAccessibleEditableTextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleEditableText_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleEditableText_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleEditableText_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleEditableText_copyText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> copyText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_deleteText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> deleteText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_insertText(This,offset,text) \
- ( (This)->lpVtbl -> insertText(This,offset,text) )
-
-#define IAccessibleEditableText_cutText(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> cutText(This,startOffset,endOffset) )
-
-#define IAccessibleEditableText_pasteText(This,offset) \
- ( (This)->lpVtbl -> pasteText(This,offset) )
-
-#define IAccessibleEditableText_replaceText(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> replaceText(This,startOffset,endOffset,text) )
-
-#define IAccessibleEditableText_setAttributes(This,startOffset,endOffset,attributes) \
- ( (This)->lpVtbl -> setAttributes(This,startOffset,endOffset,attributes) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleEditableText_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_i.c
deleted file mode 100644
index c578bf5078..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleEditableText,0xA59AA09A,0x7011,0x4b65,0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_p.c
deleted file mode 100644
index 28d1e4b333..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleEditableText_p.c
+++ /dev/null
@@ -1,584 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleEditableText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleEditableText.h"
-
-#define TYPE_FORMAT_STRING_SIZE 43
-#define PROC_FORMAT_STRING_SIZE 301
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleEditableText_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleEditableText_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleEditableText_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleEditableText_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleEditableText_MIDL_TYPE_FORMAT_STRING AccessibleEditableText__MIDL_TypeFormatString;
-extern const AccessibleEditableText_MIDL_PROC_FORMAT_STRING AccessibleEditableText__MIDL_ProcFormatString;
-extern const AccessibleEditableText_MIDL_EXPR_FORMAT_STRING AccessibleEditableText__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleEditableText_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleEditableText_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleEditableText_MIDL_PROC_FORMAT_STRING AccessibleEditableText__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure copyText */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 24 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 36 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure deleteText */
-
-/* 42 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 44 */ NdrFcLong( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x4 ), /* 4 */
-/* 50 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 52 */ NdrFcShort( 0x10 ), /* 16 */
-/* 54 */ NdrFcShort( 0x8 ), /* 8 */
-/* 56 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 58 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 66 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 68 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 72 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 74 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 78 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure insertText */
-
-/* 84 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 86 */ NdrFcLong( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x5 ), /* 5 */
-/* 92 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 94 */ NdrFcShort( 0x8 ), /* 8 */
-/* 96 */ NdrFcShort( 0x8 ), /* 8 */
-/* 98 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x3, /* 3 */
-/* 100 */ 0x8, /* 8 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x1 ), /* 1 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 108 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 110 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 114 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 116 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 118 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure cutText */
-
-/* 126 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 128 */ NdrFcLong( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x6 ), /* 6 */
-/* 134 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 136 */ NdrFcShort( 0x10 ), /* 16 */
-/* 138 */ NdrFcShort( 0x8 ), /* 8 */
-/* 140 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 142 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-/* 146 */ NdrFcShort( 0x0 ), /* 0 */
-/* 148 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 150 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 152 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 154 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 156 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 158 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 162 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 164 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 166 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure pasteText */
-
-/* 168 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 170 */ NdrFcLong( 0x0 ), /* 0 */
-/* 174 */ NdrFcShort( 0x7 ), /* 7 */
-/* 176 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 178 */ NdrFcShort( 0x8 ), /* 8 */
-/* 180 */ NdrFcShort( 0x8 ), /* 8 */
-/* 182 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 184 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 186 */ NdrFcShort( 0x0 ), /* 0 */
-/* 188 */ NdrFcShort( 0x0 ), /* 0 */
-/* 190 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 192 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 194 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 198 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 200 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 202 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure replaceText */
-
-/* 204 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 206 */ NdrFcLong( 0x0 ), /* 0 */
-/* 210 */ NdrFcShort( 0x8 ), /* 8 */
-/* 212 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 214 */ NdrFcShort( 0x10 ), /* 16 */
-/* 216 */ NdrFcShort( 0x8 ), /* 8 */
-/* 218 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x4, /* 4 */
-/* 220 */ 0x8, /* 8 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 222 */ NdrFcShort( 0x0 ), /* 0 */
-/* 224 */ NdrFcShort( 0x1 ), /* 1 */
-/* 226 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 228 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 230 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 232 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 234 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 236 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 238 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 240 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 242 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 244 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 246 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 248 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 250 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setAttributes */
-
-/* 252 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 254 */ NdrFcLong( 0x0 ), /* 0 */
-/* 258 */ NdrFcShort( 0x9 ), /* 9 */
-/* 260 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 262 */ NdrFcShort( 0x10 ), /* 16 */
-/* 264 */ NdrFcShort( 0x8 ), /* 8 */
-/* 266 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x4, /* 4 */
-/* 268 */ 0x8, /* 8 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 270 */ NdrFcShort( 0x0 ), /* 0 */
-/* 272 */ NdrFcShort( 0x1 ), /* 1 */
-/* 274 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 276 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 278 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 280 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 282 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 284 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 286 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter attributes */
-
-/* 288 */ NdrFcShort( 0x10b ), /* Flags: must size, must free, in, simple ref, */
-/* 290 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 292 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 294 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 296 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 298 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleEditableText_MIDL_TYPE_FORMAT_STRING AccessibleEditableText__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x0, /* FC_RP */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x12, 0x0, /* FC_UP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x4 ), /* 4 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleEditableText, ver. 0.0,
- GUID={0xA59AA09A,0x7011,0x4b65,{0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleEditableText_FormatStringOffsetTable[] =
- {
- 0,
- 42,
- 84,
- 126,
- 168,
- 204,
- 252
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleEditableText_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleEditableText__MIDL_ProcFormatString.Format,
- &IAccessibleEditableText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleEditableText_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleEditableText__MIDL_ProcFormatString.Format,
- &IAccessibleEditableText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(10) _IAccessibleEditableTextProxyVtbl =
-{
- &IAccessibleEditableText_ProxyInfo,
- &IID_IAccessibleEditableText,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::copyText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::deleteText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::insertText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::cutText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::pasteText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::replaceText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleEditableText::setAttributes */
-};
-
-const CInterfaceStubVtbl _IAccessibleEditableTextStubVtbl =
-{
- &IID_IAccessibleEditableText,
- &IAccessibleEditableText_ServerInfo,
- 10,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleEditableText__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleEditableText_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleEditableTextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleEditableText_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleEditableTextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleEditableText_InterfaceNamesList[] =
-{
- "IAccessibleEditableText",
- 0
-};
-
-
-#define _AccessibleEditableText_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleEditableText, pIID, n)
-
-int __stdcall _AccessibleEditableText_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleEditableText_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleEditableText_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleEditableText_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleEditableText_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleEditableText_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleEditableText_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleEventID.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleEventID.h
deleted file mode 100644
index 252375d0c6..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleEventID.h
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleEventID.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleEventID_h__
-#define __AccessibleEventID_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleEventID_0000_0000 */
-/* [local] */
-
-
-enum IA2EventID
- { IA2_EVENT_ACTION_CHANGED = 0x101,
- IA2_EVENT_ACTIVE_DECENDENT_CHANGED = ( IA2_EVENT_ACTION_CHANGED + 1 ) ,
- IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
- IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED = ( IA2_EVENT_ACTIVE_DESCENDANT_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_CONTENT_CHANGED = ( IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_LOAD_COMPLETE = ( IA2_EVENT_DOCUMENT_CONTENT_CHANGED + 1 ) ,
- IA2_EVENT_DOCUMENT_LOAD_STOPPED = ( IA2_EVENT_DOCUMENT_LOAD_COMPLETE + 1 ) ,
- IA2_EVENT_DOCUMENT_RELOAD = ( IA2_EVENT_DOCUMENT_LOAD_STOPPED + 1 ) ,
- IA2_EVENT_HYPERLINK_END_INDEX_CHANGED = ( IA2_EVENT_DOCUMENT_RELOAD + 1 ) ,
- IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED = ( IA2_EVENT_HYPERLINK_END_INDEX_CHANGED + 1 ) ,
- IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED = ( IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_LINK_ACTIVATED = ( IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_LINK_SELECTED = ( IA2_EVENT_HYPERTEXT_LINK_ACTIVATED + 1 ) ,
- IA2_EVENT_HYPERLINK_START_INDEX_CHANGED = ( IA2_EVENT_HYPERTEXT_LINK_SELECTED + 1 ) ,
- IA2_EVENT_HYPERTEXT_CHANGED = ( IA2_EVENT_HYPERLINK_START_INDEX_CHANGED + 1 ) ,
- IA2_EVENT_HYPERTEXT_NLINKS_CHANGED = ( IA2_EVENT_HYPERTEXT_CHANGED + 1 ) ,
- IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED = ( IA2_EVENT_HYPERTEXT_NLINKS_CHANGED + 1 ) ,
- IA2_EVENT_PAGE_CHANGED = ( IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_SECTION_CHANGED = ( IA2_EVENT_PAGE_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_CAPTION_CHANGED = ( IA2_EVENT_SECTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_CAPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED = ( IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_MODEL_CHANGED = ( IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_MODEL_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_ROW_HEADER_CHANGED = ( IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED + 1 ) ,
- IA2_EVENT_TABLE_SUMMARY_CHANGED = ( IA2_EVENT_TABLE_ROW_HEADER_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_ATTRIBUTE_CHANGED = ( IA2_EVENT_TABLE_SUMMARY_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_CARET_MOVED = ( IA2_EVENT_TEXT_ATTRIBUTE_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_CHANGED = ( IA2_EVENT_TEXT_CARET_MOVED + 1 ) ,
- IA2_EVENT_TEXT_COLUMN_CHANGED = ( IA2_EVENT_TEXT_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_INSERTED = ( IA2_EVENT_TEXT_COLUMN_CHANGED + 1 ) ,
- IA2_EVENT_TEXT_REMOVED = ( IA2_EVENT_TEXT_INSERTED + 1 ) ,
- IA2_EVENT_TEXT_UPDATED = ( IA2_EVENT_TEXT_REMOVED + 1 ) ,
- IA2_EVENT_TEXT_SELECTION_CHANGED = ( IA2_EVENT_TEXT_UPDATED + 1 ) ,
- IA2_EVENT_VISIBLE_DATA_CHANGED = ( IA2_EVENT_TEXT_SELECTION_CHANGED + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleEventID_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleEventID_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink.h
deleted file mode 100644
index 858e6bbd9a..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink.h
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleHyperlink_h__
-#define __AccessibleHyperlink_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleHyperlink_FWD_DEFINED__
-#define __IAccessibleHyperlink_FWD_DEFINED__
-typedef interface IAccessibleHyperlink IAccessibleHyperlink;
-#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleAction.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleHyperlink_INTERFACE_DEFINED__
-#define __IAccessibleHyperlink_INTERFACE_DEFINED__
-
-/* interface IAccessibleHyperlink */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleHyperlink;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("01C20F2B-3DD2-400f-949F-AD00BDAB1D41")
- IAccessibleHyperlink : public IAccessibleAction
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchor(
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchor) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchorTarget) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_startIndex(
- /* [retval][out] */ long *index) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_endIndex(
- /* [retval][out] */ long *index) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_valid(
- /* [retval][out] */ boolean *valid) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleHyperlinkVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleHyperlink * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleHyperlink * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleHyperlink * This);
-
- HRESULT ( STDMETHODCALLTYPE *nActions )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *nActions);
-
- HRESULT ( STDMETHODCALLTYPE *doAction )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [in] */ long nMaxBindings,
- /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
- /* [retval][out] */ long *nBindings);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *name);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
- IAccessibleHyperlink * This,
- /* [in] */ long actionIndex,
- /* [retval][out] */ BSTR *localizedName);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchor )(
- IAccessibleHyperlink * This,
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchor);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
- IAccessibleHyperlink * This,
- /* [in] */ long index,
- /* [retval][out] */ VARIANT *anchorTarget);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_startIndex )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *index);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_endIndex )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ long *index);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_valid )(
- IAccessibleHyperlink * This,
- /* [retval][out] */ boolean *valid);
-
- END_INTERFACE
- } IAccessibleHyperlinkVtbl;
-
- interface IAccessibleHyperlink
- {
- CONST_VTBL struct IAccessibleHyperlinkVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleHyperlink_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleHyperlink_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleHyperlink_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleHyperlink_nActions(This,nActions) \
- ( (This)->lpVtbl -> nActions(This,nActions) )
-
-#define IAccessibleHyperlink_doAction(This,actionIndex) \
- ( (This)->lpVtbl -> doAction(This,actionIndex) )
-
-#define IAccessibleHyperlink_get_description(This,actionIndex,description) \
- ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
-
-#define IAccessibleHyperlink_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
- ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
-
-#define IAccessibleHyperlink_get_name(This,actionIndex,name) \
- ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
-
-#define IAccessibleHyperlink_get_localizedName(This,actionIndex,localizedName) \
- ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
-
-
-#define IAccessibleHyperlink_get_anchor(This,index,anchor) \
- ( (This)->lpVtbl -> get_anchor(This,index,anchor) )
-
-#define IAccessibleHyperlink_get_anchorTarget(This,index,anchorTarget) \
- ( (This)->lpVtbl -> get_anchorTarget(This,index,anchorTarget) )
-
-#define IAccessibleHyperlink_get_startIndex(This,index) \
- ( (This)->lpVtbl -> get_startIndex(This,index) )
-
-#define IAccessibleHyperlink_get_endIndex(This,index) \
- ( (This)->lpVtbl -> get_endIndex(This,index) )
-
-#define IAccessibleHyperlink_get_valid(This,valid) \
- ( (This)->lpVtbl -> get_valid(This,valid) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleHyperlink_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
-void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_i.c
deleted file mode 100644
index ef0921fe4c..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleHyperlink,0x01C20F2B,0x3DD2,0x400f,0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_p.c
deleted file mode 100644
index c608123261..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHyperlink_p.c
+++ /dev/null
@@ -1,1191 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHyperlink.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleHyperlink.h"
-
-#define TYPE_FORMAT_STRING_SIZE 1047
-#define PROC_FORMAT_STRING_SIZE 193
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleHyperlink_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING AccessibleHyperlink__MIDL_TypeFormatString;
-extern const AccessibleHyperlink_MIDL_PROC_FORMAT_STRING AccessibleHyperlink__MIDL_ProcFormatString;
-extern const AccessibleHyperlink_MIDL_EXPR_FORMAT_STRING AccessibleHyperlink__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleHyperlink_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleHyperlink_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleHyperlink_MIDL_PROC_FORMAT_STRING AccessibleHyperlink__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_anchor */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x9 ), /* 9 */
-/* 8 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 10 */ NdrFcShort( 0x8 ), /* 8 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 24 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter anchor */
-
-/* 30 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ NdrFcShort( 0x404 ), /* Type Offset=1028 */
-
- /* Return value */
-
-/* 36 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_anchorTarget */
-
-/* 42 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 44 */ NdrFcLong( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0xa ), /* 10 */
-/* 50 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 52 */ NdrFcShort( 0x8 ), /* 8 */
-/* 54 */ NdrFcShort( 0x8 ), /* 8 */
-/* 56 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 58 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 60 */ NdrFcShort( 0x1 ), /* 1 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 66 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 68 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter anchorTarget */
-
-/* 72 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 74 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 76 */ NdrFcShort( 0x404 ), /* Type Offset=1028 */
-
- /* Return value */
-
-/* 78 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_startIndex */
-
-/* 84 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 86 */ NdrFcLong( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0xb ), /* 11 */
-/* 92 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-/* 96 */ NdrFcShort( 0x24 ), /* 36 */
-/* 98 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 100 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 108 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 116 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_endIndex */
-
-/* 120 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 122 */ NdrFcLong( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0xc ), /* 12 */
-/* 128 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x24 ), /* 36 */
-/* 134 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 136 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 138 */ NdrFcShort( 0x0 ), /* 0 */
-/* 140 */ NdrFcShort( 0x0 ), /* 0 */
-/* 142 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 144 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 146 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 148 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 150 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 152 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 154 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_valid */
-
-/* 156 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 158 */ NdrFcLong( 0x0 ), /* 0 */
-/* 162 */ NdrFcShort( 0xd ), /* 13 */
-/* 164 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 166 */ NdrFcShort( 0x0 ), /* 0 */
-/* 168 */ NdrFcShort( 0x21 ), /* 33 */
-/* 170 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 172 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 174 */ NdrFcShort( 0x0 ), /* 0 */
-/* 176 */ NdrFcShort( 0x0 ), /* 0 */
-/* 178 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter valid */
-
-/* 180 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 182 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 184 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 186 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 188 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 190 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleHyperlink_MIDL_TYPE_FORMAT_STRING AccessibleHyperlink__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x400 ), /* Offset= 1024 (1028) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0x3e8 ), /* Offset= 1000 (1008) */
-/* 10 */
- 0x2b, /* FC_NON_ENCAPSULATED_UNION */
- 0x9, /* FC_ULONG */
-/* 12 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 14 */ NdrFcShort( 0xfff8 ), /* -8 */
-/* 16 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 18 */ NdrFcShort( 0x2 ), /* Offset= 2 (20) */
-/* 20 */ NdrFcShort( 0x10 ), /* 16 */
-/* 22 */ NdrFcShort( 0x2f ), /* 47 */
-/* 24 */ NdrFcLong( 0x14 ), /* 20 */
-/* 28 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 30 */ NdrFcLong( 0x3 ), /* 3 */
-/* 34 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 36 */ NdrFcLong( 0x11 ), /* 17 */
-/* 40 */ NdrFcShort( 0x8001 ), /* Simple arm type: FC_BYTE */
-/* 42 */ NdrFcLong( 0x2 ), /* 2 */
-/* 46 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 48 */ NdrFcLong( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x800a ), /* Simple arm type: FC_FLOAT */
-/* 54 */ NdrFcLong( 0x5 ), /* 5 */
-/* 58 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 60 */ NdrFcLong( 0xb ), /* 11 */
-/* 64 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 66 */ NdrFcLong( 0xa ), /* 10 */
-/* 70 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 72 */ NdrFcLong( 0x6 ), /* 6 */
-/* 76 */ NdrFcShort( 0xe8 ), /* Offset= 232 (308) */
-/* 78 */ NdrFcLong( 0x7 ), /* 7 */
-/* 82 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 84 */ NdrFcLong( 0x8 ), /* 8 */
-/* 88 */ NdrFcShort( 0xe2 ), /* Offset= 226 (314) */
-/* 90 */ NdrFcLong( 0xd ), /* 13 */
-/* 94 */ NdrFcShort( 0xf6 ), /* Offset= 246 (340) */
-/* 96 */ NdrFcLong( 0x9 ), /* 9 */
-/* 100 */ NdrFcShort( 0x102 ), /* Offset= 258 (358) */
-/* 102 */ NdrFcLong( 0x2000 ), /* 8192 */
-/* 106 */ NdrFcShort( 0x10e ), /* Offset= 270 (376) */
-/* 108 */ NdrFcLong( 0x24 ), /* 36 */
-/* 112 */ NdrFcShort( 0x336 ), /* Offset= 822 (934) */
-/* 114 */ NdrFcLong( 0x4024 ), /* 16420 */
-/* 118 */ NdrFcShort( 0x330 ), /* Offset= 816 (934) */
-/* 120 */ NdrFcLong( 0x4011 ), /* 16401 */
-/* 124 */ NdrFcShort( 0x32e ), /* Offset= 814 (938) */
-/* 126 */ NdrFcLong( 0x4002 ), /* 16386 */
-/* 130 */ NdrFcShort( 0x32c ), /* Offset= 812 (942) */
-/* 132 */ NdrFcLong( 0x4003 ), /* 16387 */
-/* 136 */ NdrFcShort( 0x32a ), /* Offset= 810 (946) */
-/* 138 */ NdrFcLong( 0x4014 ), /* 16404 */
-/* 142 */ NdrFcShort( 0x328 ), /* Offset= 808 (950) */
-/* 144 */ NdrFcLong( 0x4004 ), /* 16388 */
-/* 148 */ NdrFcShort( 0x326 ), /* Offset= 806 (954) */
-/* 150 */ NdrFcLong( 0x4005 ), /* 16389 */
-/* 154 */ NdrFcShort( 0x324 ), /* Offset= 804 (958) */
-/* 156 */ NdrFcLong( 0x400b ), /* 16395 */
-/* 160 */ NdrFcShort( 0x30e ), /* Offset= 782 (942) */
-/* 162 */ NdrFcLong( 0x400a ), /* 16394 */
-/* 166 */ NdrFcShort( 0x30c ), /* Offset= 780 (946) */
-/* 168 */ NdrFcLong( 0x4006 ), /* 16390 */
-/* 172 */ NdrFcShort( 0x316 ), /* Offset= 790 (962) */
-/* 174 */ NdrFcLong( 0x4007 ), /* 16391 */
-/* 178 */ NdrFcShort( 0x30c ), /* Offset= 780 (958) */
-/* 180 */ NdrFcLong( 0x4008 ), /* 16392 */
-/* 184 */ NdrFcShort( 0x30e ), /* Offset= 782 (966) */
-/* 186 */ NdrFcLong( 0x400d ), /* 16397 */
-/* 190 */ NdrFcShort( 0x30c ), /* Offset= 780 (970) */
-/* 192 */ NdrFcLong( 0x4009 ), /* 16393 */
-/* 196 */ NdrFcShort( 0x30a ), /* Offset= 778 (974) */
-/* 198 */ NdrFcLong( 0x6000 ), /* 24576 */
-/* 202 */ NdrFcShort( 0x308 ), /* Offset= 776 (978) */
-/* 204 */ NdrFcLong( 0x400c ), /* 16396 */
-/* 208 */ NdrFcShort( 0x306 ), /* Offset= 774 (982) */
-/* 210 */ NdrFcLong( 0x10 ), /* 16 */
-/* 214 */ NdrFcShort( 0x8002 ), /* Simple arm type: FC_CHAR */
-/* 216 */ NdrFcLong( 0x12 ), /* 18 */
-/* 220 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 222 */ NdrFcLong( 0x13 ), /* 19 */
-/* 226 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 228 */ NdrFcLong( 0x15 ), /* 21 */
-/* 232 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 234 */ NdrFcLong( 0x16 ), /* 22 */
-/* 238 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 240 */ NdrFcLong( 0x17 ), /* 23 */
-/* 244 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 246 */ NdrFcLong( 0xe ), /* 14 */
-/* 250 */ NdrFcShort( 0x2e4 ), /* Offset= 740 (990) */
-/* 252 */ NdrFcLong( 0x400e ), /* 16398 */
-/* 256 */ NdrFcShort( 0x2e8 ), /* Offset= 744 (1000) */
-/* 258 */ NdrFcLong( 0x4010 ), /* 16400 */
-/* 262 */ NdrFcShort( 0x2e6 ), /* Offset= 742 (1004) */
-/* 264 */ NdrFcLong( 0x4012 ), /* 16402 */
-/* 268 */ NdrFcShort( 0x2a2 ), /* Offset= 674 (942) */
-/* 270 */ NdrFcLong( 0x4013 ), /* 16403 */
-/* 274 */ NdrFcShort( 0x2a0 ), /* Offset= 672 (946) */
-/* 276 */ NdrFcLong( 0x4015 ), /* 16405 */
-/* 280 */ NdrFcShort( 0x29e ), /* Offset= 670 (950) */
-/* 282 */ NdrFcLong( 0x4016 ), /* 16406 */
-/* 286 */ NdrFcShort( 0x294 ), /* Offset= 660 (946) */
-/* 288 */ NdrFcLong( 0x4017 ), /* 16407 */
-/* 292 */ NdrFcShort( 0x28e ), /* Offset= 654 (946) */
-/* 294 */ NdrFcLong( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* Offset= 0 (298) */
-/* 300 */ NdrFcLong( 0x1 ), /* 1 */
-/* 304 */ NdrFcShort( 0x0 ), /* Offset= 0 (304) */
-/* 306 */ NdrFcShort( 0xffff ), /* Offset= -1 (305) */
-/* 308 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 310 */ NdrFcShort( 0x8 ), /* 8 */
-/* 312 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 314 */
- 0x13, 0x0, /* FC_OP */
-/* 316 */ NdrFcShort( 0xe ), /* Offset= 14 (330) */
-/* 318 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 320 */ NdrFcShort( 0x2 ), /* 2 */
-/* 322 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 324 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 326 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 328 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 330 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 332 */ NdrFcShort( 0x8 ), /* 8 */
-/* 334 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (318) */
-/* 336 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 338 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 340 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 342 */ NdrFcLong( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-/* 348 */ NdrFcShort( 0x0 ), /* 0 */
-/* 350 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 352 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 354 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 356 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 358 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 360 */ NdrFcLong( 0x20400 ), /* 132096 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-/* 366 */ NdrFcShort( 0x0 ), /* 0 */
-/* 368 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 370 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 372 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 374 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 376 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 378 */ NdrFcShort( 0x2 ), /* Offset= 2 (380) */
-/* 380 */
- 0x13, 0x0, /* FC_OP */
-/* 382 */ NdrFcShort( 0x216 ), /* Offset= 534 (916) */
-/* 384 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x49, /* 73 */
-/* 386 */ NdrFcShort( 0x18 ), /* 24 */
-/* 388 */ NdrFcShort( 0xa ), /* 10 */
-/* 390 */ NdrFcLong( 0x8 ), /* 8 */
-/* 394 */ NdrFcShort( 0x5a ), /* Offset= 90 (484) */
-/* 396 */ NdrFcLong( 0xd ), /* 13 */
-/* 400 */ NdrFcShort( 0x7e ), /* Offset= 126 (526) */
-/* 402 */ NdrFcLong( 0x9 ), /* 9 */
-/* 406 */ NdrFcShort( 0x9e ), /* Offset= 158 (564) */
-/* 408 */ NdrFcLong( 0xc ), /* 12 */
-/* 412 */ NdrFcShort( 0xc8 ), /* Offset= 200 (612) */
-/* 414 */ NdrFcLong( 0x24 ), /* 36 */
-/* 418 */ NdrFcShort( 0x124 ), /* Offset= 292 (710) */
-/* 420 */ NdrFcLong( 0x800d ), /* 32781 */
-/* 424 */ NdrFcShort( 0x140 ), /* Offset= 320 (744) */
-/* 426 */ NdrFcLong( 0x10 ), /* 16 */
-/* 430 */ NdrFcShort( 0x15a ), /* Offset= 346 (776) */
-/* 432 */ NdrFcLong( 0x2 ), /* 2 */
-/* 436 */ NdrFcShort( 0x174 ), /* Offset= 372 (808) */
-/* 438 */ NdrFcLong( 0x3 ), /* 3 */
-/* 442 */ NdrFcShort( 0x18e ), /* Offset= 398 (840) */
-/* 444 */ NdrFcLong( 0x14 ), /* 20 */
-/* 448 */ NdrFcShort( 0x1a8 ), /* Offset= 424 (872) */
-/* 450 */ NdrFcShort( 0xffff ), /* Offset= -1 (449) */
-/* 452 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 454 */ NdrFcShort( 0x4 ), /* 4 */
-/* 456 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 462 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 464 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 466 */ NdrFcShort( 0x4 ), /* 4 */
-/* 468 */ NdrFcShort( 0x0 ), /* 0 */
-/* 470 */ NdrFcShort( 0x1 ), /* 1 */
-/* 472 */ NdrFcShort( 0x0 ), /* 0 */
-/* 474 */ NdrFcShort( 0x0 ), /* 0 */
-/* 476 */ 0x13, 0x0, /* FC_OP */
-/* 478 */ NdrFcShort( 0xff6c ), /* Offset= -148 (330) */
-/* 480 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 482 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 484 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 486 */ NdrFcShort( 0x8 ), /* 8 */
-/* 488 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 490 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 492 */ NdrFcShort( 0x4 ), /* 4 */
-/* 494 */ NdrFcShort( 0x4 ), /* 4 */
-/* 496 */ 0x11, 0x0, /* FC_RP */
-/* 498 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (452) */
-/* 500 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 502 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 504 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 506 */ NdrFcShort( 0x0 ), /* 0 */
-/* 508 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 510 */ NdrFcShort( 0x0 ), /* 0 */
-/* 512 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 514 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 518 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 520 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 522 */ NdrFcShort( 0xff4a ), /* Offset= -182 (340) */
-/* 524 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 526 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 528 */ NdrFcShort( 0x8 ), /* 8 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ NdrFcShort( 0x6 ), /* Offset= 6 (538) */
-/* 534 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 536 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 538 */
- 0x11, 0x0, /* FC_RP */
-/* 540 */ NdrFcShort( 0xffdc ), /* Offset= -36 (504) */
-/* 542 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 544 */ NdrFcShort( 0x0 ), /* 0 */
-/* 546 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 548 */ NdrFcShort( 0x0 ), /* 0 */
-/* 550 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 552 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 556 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 558 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 560 */ NdrFcShort( 0xff36 ), /* Offset= -202 (358) */
-/* 562 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 564 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 566 */ NdrFcShort( 0x8 ), /* 8 */
-/* 568 */ NdrFcShort( 0x0 ), /* 0 */
-/* 570 */ NdrFcShort( 0x6 ), /* Offset= 6 (576) */
-/* 572 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 574 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 576 */
- 0x11, 0x0, /* FC_RP */
-/* 578 */ NdrFcShort( 0xffdc ), /* Offset= -36 (542) */
-/* 580 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 582 */ NdrFcShort( 0x4 ), /* 4 */
-/* 584 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 586 */ NdrFcShort( 0x0 ), /* 0 */
-/* 588 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 590 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 592 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 594 */ NdrFcShort( 0x4 ), /* 4 */
-/* 596 */ NdrFcShort( 0x0 ), /* 0 */
-/* 598 */ NdrFcShort( 0x1 ), /* 1 */
-/* 600 */ NdrFcShort( 0x0 ), /* 0 */
-/* 602 */ NdrFcShort( 0x0 ), /* 0 */
-/* 604 */ 0x13, 0x0, /* FC_OP */
-/* 606 */ NdrFcShort( 0x192 ), /* Offset= 402 (1008) */
-/* 608 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 610 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 612 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 614 */ NdrFcShort( 0x8 ), /* 8 */
-/* 616 */ NdrFcShort( 0x0 ), /* 0 */
-/* 618 */ NdrFcShort( 0x6 ), /* Offset= 6 (624) */
-/* 620 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 622 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 624 */
- 0x11, 0x0, /* FC_RP */
-/* 626 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (580) */
-/* 628 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 630 */ NdrFcLong( 0x2f ), /* 47 */
-/* 634 */ NdrFcShort( 0x0 ), /* 0 */
-/* 636 */ NdrFcShort( 0x0 ), /* 0 */
-/* 638 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 640 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 642 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 644 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 646 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 648 */ NdrFcShort( 0x1 ), /* 1 */
-/* 650 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 652 */ NdrFcShort( 0x4 ), /* 4 */
-/* 654 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 656 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 658 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 660 */ NdrFcShort( 0x10 ), /* 16 */
-/* 662 */ NdrFcShort( 0x0 ), /* 0 */
-/* 664 */ NdrFcShort( 0xa ), /* Offset= 10 (674) */
-/* 666 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 668 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 670 */ NdrFcShort( 0xffd6 ), /* Offset= -42 (628) */
-/* 672 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 674 */
- 0x13, 0x0, /* FC_OP */
-/* 676 */ NdrFcShort( 0xffe2 ), /* Offset= -30 (646) */
-/* 678 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 680 */ NdrFcShort( 0x4 ), /* 4 */
-/* 682 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 688 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 690 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 692 */ NdrFcShort( 0x4 ), /* 4 */
-/* 694 */ NdrFcShort( 0x0 ), /* 0 */
-/* 696 */ NdrFcShort( 0x1 ), /* 1 */
-/* 698 */ NdrFcShort( 0x0 ), /* 0 */
-/* 700 */ NdrFcShort( 0x0 ), /* 0 */
-/* 702 */ 0x13, 0x0, /* FC_OP */
-/* 704 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (658) */
-/* 706 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 708 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 710 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 712 */ NdrFcShort( 0x8 ), /* 8 */
-/* 714 */ NdrFcShort( 0x0 ), /* 0 */
-/* 716 */ NdrFcShort( 0x6 ), /* Offset= 6 (722) */
-/* 718 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 720 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 722 */
- 0x11, 0x0, /* FC_RP */
-/* 724 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (678) */
-/* 726 */
- 0x1d, /* FC_SMFARRAY */
- 0x0, /* 0 */
-/* 728 */ NdrFcShort( 0x8 ), /* 8 */
-/* 730 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 732 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 734 */ NdrFcShort( 0x10 ), /* 16 */
-/* 736 */ 0x8, /* FC_LONG */
- 0x6, /* FC_SHORT */
-/* 738 */ 0x6, /* FC_SHORT */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 740 */ 0x0, /* 0 */
- NdrFcShort( 0xfff1 ), /* Offset= -15 (726) */
- 0x5b, /* FC_END */
-/* 744 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 746 */ NdrFcShort( 0x18 ), /* 24 */
-/* 748 */ NdrFcShort( 0x0 ), /* 0 */
-/* 750 */ NdrFcShort( 0xa ), /* Offset= 10 (760) */
-/* 752 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 754 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 756 */ NdrFcShort( 0xffe8 ), /* Offset= -24 (732) */
-/* 758 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 760 */
- 0x11, 0x0, /* FC_RP */
-/* 762 */ NdrFcShort( 0xfefe ), /* Offset= -258 (504) */
-/* 764 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 766 */ NdrFcShort( 0x1 ), /* 1 */
-/* 768 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 770 */ NdrFcShort( 0x0 ), /* 0 */
-/* 772 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 774 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 776 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 778 */ NdrFcShort( 0x8 ), /* 8 */
-/* 780 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 782 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 784 */ NdrFcShort( 0x4 ), /* 4 */
-/* 786 */ NdrFcShort( 0x4 ), /* 4 */
-/* 788 */ 0x13, 0x0, /* FC_OP */
-/* 790 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (764) */
-/* 792 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 794 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 796 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 798 */ NdrFcShort( 0x2 ), /* 2 */
-/* 800 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 802 */ NdrFcShort( 0x0 ), /* 0 */
-/* 804 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 806 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 808 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 810 */ NdrFcShort( 0x8 ), /* 8 */
-/* 812 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 814 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 816 */ NdrFcShort( 0x4 ), /* 4 */
-/* 818 */ NdrFcShort( 0x4 ), /* 4 */
-/* 820 */ 0x13, 0x0, /* FC_OP */
-/* 822 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (796) */
-/* 824 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 826 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 828 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 830 */ NdrFcShort( 0x4 ), /* 4 */
-/* 832 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 834 */ NdrFcShort( 0x0 ), /* 0 */
-/* 836 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 838 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 840 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 842 */ NdrFcShort( 0x8 ), /* 8 */
-/* 844 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 846 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 848 */ NdrFcShort( 0x4 ), /* 4 */
-/* 850 */ NdrFcShort( 0x4 ), /* 4 */
-/* 852 */ 0x13, 0x0, /* FC_OP */
-/* 854 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (828) */
-/* 856 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 858 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 860 */
- 0x1b, /* FC_CARRAY */
- 0x7, /* 7 */
-/* 862 */ NdrFcShort( 0x8 ), /* 8 */
-/* 864 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 866 */ NdrFcShort( 0x0 ), /* 0 */
-/* 868 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 870 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 872 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 874 */ NdrFcShort( 0x8 ), /* 8 */
-/* 876 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 878 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 880 */ NdrFcShort( 0x4 ), /* 4 */
-/* 882 */ NdrFcShort( 0x4 ), /* 4 */
-/* 884 */ 0x13, 0x0, /* FC_OP */
-/* 886 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (860) */
-/* 888 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 890 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 892 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 894 */ NdrFcShort( 0x8 ), /* 8 */
-/* 896 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 898 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 900 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 902 */ NdrFcShort( 0x8 ), /* 8 */
-/* 904 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 906 */ NdrFcShort( 0xffd8 ), /* -40 */
-/* 908 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 910 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 912 */ NdrFcShort( 0xffec ), /* Offset= -20 (892) */
-/* 914 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 916 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 918 */ NdrFcShort( 0x28 ), /* 40 */
-/* 920 */ NdrFcShort( 0xffec ), /* Offset= -20 (900) */
-/* 922 */ NdrFcShort( 0x0 ), /* Offset= 0 (922) */
-/* 924 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 926 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 928 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 930 */ NdrFcShort( 0xfdde ), /* Offset= -546 (384) */
-/* 932 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 934 */
- 0x13, 0x0, /* FC_OP */
-/* 936 */ NdrFcShort( 0xfeea ), /* Offset= -278 (658) */
-/* 938 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 940 */ 0x1, /* FC_BYTE */
- 0x5c, /* FC_PAD */
-/* 942 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 944 */ 0x6, /* FC_SHORT */
- 0x5c, /* FC_PAD */
-/* 946 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 948 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 950 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 952 */ 0xb, /* FC_HYPER */
- 0x5c, /* FC_PAD */
-/* 954 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 956 */ 0xa, /* FC_FLOAT */
- 0x5c, /* FC_PAD */
-/* 958 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 960 */ 0xc, /* FC_DOUBLE */
- 0x5c, /* FC_PAD */
-/* 962 */
- 0x13, 0x0, /* FC_OP */
-/* 964 */ NdrFcShort( 0xfd70 ), /* Offset= -656 (308) */
-/* 966 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 968 */ NdrFcShort( 0xfd72 ), /* Offset= -654 (314) */
-/* 970 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 972 */ NdrFcShort( 0xfd88 ), /* Offset= -632 (340) */
-/* 974 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 976 */ NdrFcShort( 0xfd96 ), /* Offset= -618 (358) */
-/* 978 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 980 */ NdrFcShort( 0xfda4 ), /* Offset= -604 (376) */
-/* 982 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 984 */ NdrFcShort( 0x2 ), /* Offset= 2 (986) */
-/* 986 */
- 0x13, 0x0, /* FC_OP */
-/* 988 */ NdrFcShort( 0x14 ), /* Offset= 20 (1008) */
-/* 990 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 992 */ NdrFcShort( 0x10 ), /* 16 */
-/* 994 */ 0x6, /* FC_SHORT */
- 0x1, /* FC_BYTE */
-/* 996 */ 0x1, /* FC_BYTE */
- 0x8, /* FC_LONG */
-/* 998 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 1000 */
- 0x13, 0x0, /* FC_OP */
-/* 1002 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (990) */
-/* 1004 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 1006 */ 0x2, /* FC_CHAR */
- 0x5c, /* FC_PAD */
-/* 1008 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x7, /* 7 */
-/* 1010 */ NdrFcShort( 0x20 ), /* 32 */
-/* 1012 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1014 */ NdrFcShort( 0x0 ), /* Offset= 0 (1014) */
-/* 1016 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 1018 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 1020 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 1022 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 1024 */ NdrFcShort( 0xfc0a ), /* Offset= -1014 (10) */
-/* 1026 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 1028 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 1030 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1032 */ NdrFcShort( 0x10 ), /* 16 */
-/* 1034 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1036 */ NdrFcShort( 0xfbfa ), /* Offset= -1030 (6) */
-/* 1038 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 1040 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 1042 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 1044 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- VARIANT_UserSize
- ,VARIANT_UserMarshal
- ,VARIANT_UserUnmarshal
- ,VARIANT_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleAction, ver. 0.0,
- GUID={0xB70D9F59,0x3B5A,0x4dba,{0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5}} */
-
-
-/* Object interface: IAccessibleHyperlink, ver. 0.0,
- GUID={0x01C20F2B,0x3DD2,0x400f,{0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleHyperlink_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 42,
- 84,
- 120,
- 156
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleHyperlink_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleHyperlink__MIDL_ProcFormatString.Format,
- &IAccessibleHyperlink_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleHyperlink_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleHyperlink__MIDL_ProcFormatString.Format,
- &IAccessibleHyperlink_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(14) _IAccessibleHyperlinkProxyVtbl =
-{
- &IAccessibleHyperlink_ProxyInfo,
- &IID_IAccessibleHyperlink,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IAccessibleAction::nActions */ ,
- 0 /* IAccessibleAction::doAction */ ,
- 0 /* IAccessibleAction::get_description */ ,
- 0 /* IAccessibleAction::get_keyBinding */ ,
- 0 /* IAccessibleAction::get_name */ ,
- 0 /* IAccessibleAction::get_localizedName */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_anchor */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_anchorTarget */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_startIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_endIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHyperlink::get_valid */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessibleHyperlink_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessibleHyperlinkStubVtbl =
-{
- &IID_IAccessibleHyperlink,
- &IAccessibleHyperlink_ServerInfo,
- 14,
- &IAccessibleHyperlink_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleHyperlink__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleHyperlink_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleHyperlinkProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleHyperlink_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleHyperlinkStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleHyperlink_InterfaceNamesList[] =
-{
- "IAccessibleHyperlink",
- 0
-};
-
-const IID * const _AccessibleHyperlink_BaseIIDList[] =
-{
- &IID_IAccessibleAction,
- 0
-};
-
-
-#define _AccessibleHyperlink_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleHyperlink, pIID, n)
-
-int __stdcall _AccessibleHyperlink_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleHyperlink_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleHyperlink_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleHyperlink_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleHyperlink_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleHyperlink_InterfaceNamesList,
- (const IID ** ) & _AccessibleHyperlink_BaseIIDList,
- & _AccessibleHyperlink_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext.h
deleted file mode 100644
index 180fb394b6..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext.h
+++ /dev/null
@@ -1,349 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleHypertext_h__
-#define __AccessibleHypertext_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleHypertext_FWD_DEFINED__
-#define __IAccessibleHypertext_FWD_DEFINED__
-typedef interface IAccessibleHypertext IAccessibleHypertext;
-#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "AccessibleText.h"
-#include "AccessibleHyperlink.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleHypertext_INTERFACE_DEFINED__
-#define __IAccessibleHypertext_INTERFACE_DEFINED__
-
-/* interface IAccessibleHypertext */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleHypertext;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("6B4F8BBF-F1F2-418a-B35E-A195BC4103B9")
- IAccessibleHypertext : public IAccessibleText
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nHyperlinks(
- /* [retval][out] */ long *hyperlinkCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlink(
- /* [in] */ long index,
- /* [retval][out] */ IAccessibleHyperlink **hyperlink) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinkIndex(
- /* [in] */ long charIndex,
- /* [retval][out] */ long *hyperlinkIndex) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleHypertextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleHypertext * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleHypertext * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleHypertext * This);
-
- HRESULT ( STDMETHODCALLTYPE *addSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *nSelections);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
- IAccessibleHypertext * This,
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
- IAccessibleHypertext * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *removeSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex);
-
- HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
- IAccessibleHypertext * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *setSelection )(
- IAccessibleHypertext * This,
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *nCharacters);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
- IAccessibleHypertext * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
- IAccessibleHypertext * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
- IAccessibleHypertext * This,
- /* [retval][out] */ IA2TextSegment *newText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
- IAccessibleHypertext * This,
- /* [retval][out] */ IA2TextSegment *oldText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
- IAccessibleHypertext * This,
- /* [retval][out] */ long *hyperlinkCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
- IAccessibleHypertext * This,
- /* [in] */ long index,
- /* [retval][out] */ IAccessibleHyperlink **hyperlink);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
- IAccessibleHypertext * This,
- /* [in] */ long charIndex,
- /* [retval][out] */ long *hyperlinkIndex);
-
- END_INTERFACE
- } IAccessibleHypertextVtbl;
-
- interface IAccessibleHypertext
- {
- CONST_VTBL struct IAccessibleHypertextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleHypertext_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleHypertext_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleHypertext_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleHypertext_addSelection(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
- ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
-
-#define IAccessibleHypertext_get_caretOffset(This,offset) \
- ( (This)->lpVtbl -> get_caretOffset(This,offset) )
-
-#define IAccessibleHypertext_get_characterExtents(This,offset,coordType,x,y,width,height) \
- ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
-
-#define IAccessibleHypertext_get_nSelections(This,nSelections) \
- ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
-
-#define IAccessibleHypertext_get_offsetAtPoint(This,x,y,coordType,offset) \
- ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
-
-#define IAccessibleHypertext_get_selection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_text(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleHypertext_removeSelection(This,selectionIndex) \
- ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
-
-#define IAccessibleHypertext_setCaretOffset(This,offset) \
- ( (This)->lpVtbl -> setCaretOffset(This,offset) )
-
-#define IAccessibleHypertext_setSelection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleHypertext_get_nCharacters(This,nCharacters) \
- ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
-
-#define IAccessibleHypertext_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
- ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
-
-#define IAccessibleHypertext_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
-
-#define IAccessibleHypertext_get_newText(This,newText) \
- ( (This)->lpVtbl -> get_newText(This,newText) )
-
-#define IAccessibleHypertext_get_oldText(This,oldText) \
- ( (This)->lpVtbl -> get_oldText(This,oldText) )
-
-
-#define IAccessibleHypertext_get_nHyperlinks(This,hyperlinkCount) \
- ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
-
-#define IAccessibleHypertext_get_hyperlink(This,index,hyperlink) \
- ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
-
-#define IAccessibleHypertext_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
- ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleHypertext_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_i.c
deleted file mode 100644
index e6edec9fe7..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext,0x6B4F8BBF,0xF1F2,0x418a,0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_p.c
deleted file mode 100644
index 40eddde608..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleHypertext_p.c
+++ /dev/null
@@ -1,463 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleHypertext.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleHypertext.h"
-
-#define TYPE_FORMAT_STRING_SIZE 29
-#define PROC_FORMAT_STRING_SIZE 121
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleHypertext_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleHypertext_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleHypertext_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleHypertext_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleHypertext_MIDL_TYPE_FORMAT_STRING AccessibleHypertext__MIDL_TypeFormatString;
-extern const AccessibleHypertext_MIDL_PROC_FORMAT_STRING AccessibleHypertext__MIDL_ProcFormatString;
-extern const AccessibleHypertext_MIDL_EXPR_FORMAT_STRING AccessibleHypertext__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleHypertext_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleHypertext_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleHypertext_MIDL_PROC_FORMAT_STRING AccessibleHypertext__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_nHyperlinks */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x16 ), /* 22 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter hyperlinkCount */
-
-/* 24 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_hyperlink */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x17 ), /* 23 */
-/* 44 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 46 */ NdrFcShort( 0x8 ), /* 8 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 52 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 60 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter hyperlink */
-
-/* 66 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Return value */
-
-/* 72 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 74 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_hyperlinkIndex */
-
-/* 78 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 80 */ NdrFcLong( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x18 ), /* 24 */
-/* 86 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 88 */ NdrFcShort( 0x8 ), /* 8 */
-/* 90 */ NdrFcShort( 0x24 ), /* 36 */
-/* 92 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 94 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter charIndex */
-
-/* 102 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 104 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter hyperlinkIndex */
-
-/* 108 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 114 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 116 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleHypertext_MIDL_TYPE_FORMAT_STRING AccessibleHypertext__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 12 */ NdrFcLong( 0x1c20f2b ), /* 29495083 */
-/* 16 */ NdrFcShort( 0x3dd2 ), /* 15826 */
-/* 18 */ NdrFcShort( 0x400f ), /* 16399 */
-/* 20 */ 0x94, /* 148 */
- 0x9f, /* 159 */
-/* 22 */ 0xad, /* 173 */
- 0x0, /* 0 */
-/* 24 */ 0xbd, /* 189 */
- 0xab, /* 171 */
-/* 26 */ 0x1d, /* 29 */
- 0x41, /* 65 */
-
- 0x0
- }
- };
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleText, ver. 0.0,
- GUID={0x24FD2FFB,0x3AAD,0x4a08,{0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B}} */
-
-
-/* Object interface: IAccessibleHypertext, ver. 0.0,
- GUID={0x6B4F8BBF,0xF1F2,0x418a,{0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleHypertext_FormatStringOffsetTable[] =
- {
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- (unsigned short) -1,
- 0,
- 36,
- 78
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleHypertext_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleHypertext__MIDL_ProcFormatString.Format,
- &IAccessibleHypertext_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleHypertext_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleHypertext__MIDL_ProcFormatString.Format,
- &IAccessibleHypertext_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(25) _IAccessibleHypertextProxyVtbl =
-{
- &IAccessibleHypertext_ProxyInfo,
- &IID_IAccessibleHypertext,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- 0 /* IAccessibleText::addSelection */ ,
- 0 /* IAccessibleText::get_attributes */ ,
- 0 /* IAccessibleText::get_caretOffset */ ,
- 0 /* IAccessibleText::get_characterExtents */ ,
- 0 /* IAccessibleText::get_nSelections */ ,
- 0 /* IAccessibleText::get_offsetAtPoint */ ,
- 0 /* IAccessibleText::get_selection */ ,
- 0 /* IAccessibleText::get_text */ ,
- 0 /* IAccessibleText::get_textBeforeOffset */ ,
- 0 /* IAccessibleText::get_textAfterOffset */ ,
- 0 /* IAccessibleText::get_textAtOffset */ ,
- 0 /* IAccessibleText::removeSelection */ ,
- 0 /* IAccessibleText::setCaretOffset */ ,
- 0 /* IAccessibleText::setSelection */ ,
- 0 /* IAccessibleText::get_nCharacters */ ,
- 0 /* IAccessibleText::scrollSubstringTo */ ,
- 0 /* IAccessibleText::scrollSubstringToPoint */ ,
- 0 /* IAccessibleText::get_newText */ ,
- 0 /* IAccessibleText::get_oldText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_nHyperlinks */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_hyperlink */ ,
- (void *) (INT_PTR) -1 /* IAccessibleHypertext::get_hyperlinkIndex */
-};
-
-
-static const PRPC_STUB_FUNCTION IAccessibleHypertext_table[] =
-{
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- STUB_FORWARDING_FUNCTION,
- NdrStubCall2,
- NdrStubCall2,
- NdrStubCall2
-};
-
-CInterfaceStubVtbl _IAccessibleHypertextStubVtbl =
-{
- &IID_IAccessibleHypertext,
- &IAccessibleHypertext_ServerInfo,
- 25,
- &IAccessibleHypertext_table[-3],
- CStdStubBuffer_DELEGATING_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleHypertext__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleHypertext_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleHypertextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleHypertext_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleHypertextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleHypertext_InterfaceNamesList[] =
-{
- "IAccessibleHypertext",
- 0
-};
-
-const IID * const _AccessibleHypertext_BaseIIDList[] =
-{
- &IID_IAccessibleText,
- 0
-};
-
-
-#define _AccessibleHypertext_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleHypertext, pIID, n)
-
-int __stdcall _AccessibleHypertext_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleHypertext_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleHypertext_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleHypertext_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleHypertext_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleHypertext_InterfaceNamesList,
- (const IID ** ) & _AccessibleHypertext_BaseIIDList,
- & _AccessibleHypertext_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleImage.h
deleted file mode 100644
index d240bb6156..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage.h
+++ /dev/null
@@ -1,185 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleImage_h__
-#define __AccessibleImage_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleImage_FWD_DEFINED__
-#define __IAccessibleImage_FWD_DEFINED__
-typedef interface IAccessibleImage IAccessibleImage;
-#endif /* __IAccessibleImage_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleImage_INTERFACE_DEFINED__
-#define __IAccessibleImage_INTERFACE_DEFINED__
-
-/* interface IAccessibleImage */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleImage;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE")
- IAccessibleImage : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imagePosition(
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [out] */ long *x,
- /* [retval][out] */ long *y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imageSize(
- /* [out] */ long *height,
- /* [retval][out] */ long *width) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleImageVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleImage * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleImage * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleImage * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
- IAccessibleImage * This,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imagePosition )(
- IAccessibleImage * This,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [out] */ long *x,
- /* [retval][out] */ long *y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageSize )(
- IAccessibleImage * This,
- /* [out] */ long *height,
- /* [retval][out] */ long *width);
-
- END_INTERFACE
- } IAccessibleImageVtbl;
-
- interface IAccessibleImage
- {
- CONST_VTBL struct IAccessibleImageVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleImage_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleImage_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleImage_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleImage_get_description(This,description) \
- ( (This)->lpVtbl -> get_description(This,description) )
-
-#define IAccessibleImage_get_imagePosition(This,coordinateType,x,y) \
- ( (This)->lpVtbl -> get_imagePosition(This,coordinateType,x,y) )
-
-#define IAccessibleImage_get_imageSize(This,height,width) \
- ( (This)->lpVtbl -> get_imageSize(This,height,width) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleImage_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_i.c
deleted file mode 100644
index 37fa8696d1..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleImage,0xFE5ABB3D,0x615E,0x4f7b,0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_p.c
deleted file mode 100644
index daa8af2e29..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleImage_p.c
+++ /dev/null
@@ -1,423 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:53 2012
- */
-/* Compiler settings for AccessibleImage.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleImage.h"
-
-#define TYPE_FORMAT_STRING_SIZE 47
-#define PROC_FORMAT_STRING_SIZE 127
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleImage_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleImage_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleImage_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleImage_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleImage_MIDL_TYPE_FORMAT_STRING AccessibleImage__MIDL_TypeFormatString;
-extern const AccessibleImage_MIDL_PROC_FORMAT_STRING AccessibleImage__MIDL_ProcFormatString;
-extern const AccessibleImage_MIDL_EXPR_FORMAT_STRING AccessibleImage__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleImage_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleImage_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleImage_MIDL_PROC_FORMAT_STRING AccessibleImage__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_description */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter description */
-
-/* 24 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_imagePosition */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 46 */ NdrFcShort( 0x6 ), /* 6 */
-/* 48 */ NdrFcShort( 0x40 ), /* 64 */
-/* 50 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 52 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter coordinateType */
-
-/* 60 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 66 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 72 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 74 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 78 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 80 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_imageSize */
-
-/* 84 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 86 */ NdrFcLong( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x5 ), /* 5 */
-/* 92 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-/* 96 */ NdrFcShort( 0x40 ), /* 64 */
-/* 98 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 100 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter height */
-
-/* 108 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 110 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter width */
-
-/* 114 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleImage_MIDL_TYPE_FORMAT_STRING AccessibleImage__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x4 ), /* 4 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-/* 42 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 44 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleImage, ver. 0.0,
- GUID={0xFE5ABB3D,0x615E,0x4f7b,{0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleImage_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 84
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleImage_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleImage__MIDL_ProcFormatString.Format,
- &IAccessibleImage_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleImage_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleImage__MIDL_ProcFormatString.Format,
- &IAccessibleImage_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(6) _IAccessibleImageProxyVtbl =
-{
- &IAccessibleImage_ProxyInfo,
- &IID_IAccessibleImage,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_description */ ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_imagePosition */ ,
- (void *) (INT_PTR) -1 /* IAccessibleImage::get_imageSize */
-};
-
-const CInterfaceStubVtbl _IAccessibleImageStubVtbl =
-{
- &IID_IAccessibleImage,
- &IAccessibleImage_ServerInfo,
- 6,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleImage__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleImage_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleImageProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleImage_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleImageStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleImage_InterfaceNamesList[] =
-{
- "IAccessibleImage",
- 0
-};
-
-
-#define _AccessibleImage_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleImage, pIID, n)
-
-int __stdcall _AccessibleImage_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleImage_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleImage_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleImage_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleImage_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleImage_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleImage_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation.h
deleted file mode 100644
index b24908a421..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation.h
+++ /dev/null
@@ -1,244 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleRelation_h__
-#define __AccessibleRelation_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleRelation_FWD_DEFINED__
-#define __IAccessibleRelation_FWD_DEFINED__
-typedef interface IAccessibleRelation IAccessibleRelation;
-#endif /* __IAccessibleRelation_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleRelation_0000_0000 */
-/* [local] */
-
-#define IA2_RELATION_CONTROLLED_BY ( L"controlledBy" )
-
-#define IA2_RELATION_CONTROLLER_FOR ( L"controllerFor" )
-
-#define IA2_RELATION_DESCRIBED_BY ( L"describedBy" )
-
-#define IA2_RELATION_DESCRIPTION_FOR ( L"descriptionFor" )
-
-#define IA2_RELATION_EMBEDDED_BY ( L"embeddedBy" )
-
-#define IA2_RELATION_EMBEDS ( L"embeds" )
-
-#define IA2_RELATION_FLOWS_FROM ( L"flowsFrom" )
-
-#define IA2_RELATION_FLOWS_TO ( L"flowsTo" )
-
-#define IA2_RELATION_LABEL_FOR ( L"labelFor" )
-
-#define IA2_RELATION_LABELED_BY ( L"labelledBy" )
-
-#define IA2_RELATION_LABELLED_BY ( L"labelledBy" )
-
-#define IA2_RELATION_MEMBER_OF ( L"memberOf" )
-
-#define IA2_RELATION_NODE_CHILD_OF ( L"nodeChildOf" )
-
-#define IA2_RELATION_PARENT_WINDOW_OF ( L"parentWindowOf" )
-
-#define IA2_RELATION_POPUP_FOR ( L"popupFor" )
-
-#define IA2_RELATION_SUBWINDOW_OF ( L"subwindowOf" )
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRelation_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRelation_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleRelation_INTERFACE_DEFINED__
-#define __IAccessibleRelation_INTERFACE_DEFINED__
-
-/* interface IAccessibleRelation */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleRelation;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("7CDF86EE-C3DA-496a-BDA4-281B336E1FDC")
- IAccessibleRelation : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationType(
- /* [retval][out] */ BSTR *relationType) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedRelationType(
- /* [retval][out] */ BSTR *localizedRelationType) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nTargets(
- /* [retval][out] */ long *nTargets) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_target(
- /* [in] */ long targetIndex,
- /* [retval][out] */ IUnknown **target) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_targets(
- /* [in] */ long maxTargets,
- /* [length_is][size_is][out] */ IUnknown **targets,
- /* [retval][out] */ long *nTargets) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleRelationVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleRelation * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleRelation * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleRelation * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationType )(
- IAccessibleRelation * This,
- /* [retval][out] */ BSTR *relationType);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedRelationType )(
- IAccessibleRelation * This,
- /* [retval][out] */ BSTR *localizedRelationType);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nTargets )(
- IAccessibleRelation * This,
- /* [retval][out] */ long *nTargets);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_target )(
- IAccessibleRelation * This,
- /* [in] */ long targetIndex,
- /* [retval][out] */ IUnknown **target);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_targets )(
- IAccessibleRelation * This,
- /* [in] */ long maxTargets,
- /* [length_is][size_is][out] */ IUnknown **targets,
- /* [retval][out] */ long *nTargets);
-
- END_INTERFACE
- } IAccessibleRelationVtbl;
-
- interface IAccessibleRelation
- {
- CONST_VTBL struct IAccessibleRelationVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleRelation_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleRelation_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleRelation_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleRelation_get_relationType(This,relationType) \
- ( (This)->lpVtbl -> get_relationType(This,relationType) )
-
-#define IAccessibleRelation_get_localizedRelationType(This,localizedRelationType) \
- ( (This)->lpVtbl -> get_localizedRelationType(This,localizedRelationType) )
-
-#define IAccessibleRelation_get_nTargets(This,nTargets) \
- ( (This)->lpVtbl -> get_nTargets(This,nTargets) )
-
-#define IAccessibleRelation_get_target(This,targetIndex,target) \
- ( (This)->lpVtbl -> get_target(This,targetIndex,target) )
-
-#define IAccessibleRelation_get_targets(This,maxTargets,targets,nTargets) \
- ( (This)->lpVtbl -> get_targets(This,maxTargets,targets,nTargets) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleRelation_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_i.c
deleted file mode 100644
index 58c8b78be7..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleRelation,0x7CDF86EE,0xC3DA,0x496a,0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_p.c
deleted file mode 100644
index a3a6cbd632..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleRelation_p.c
+++ /dev/null
@@ -1,527 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleRelation.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleRelation.h"
-
-#define TYPE_FORMAT_STRING_SIZE 95
-#define PROC_FORMAT_STRING_SIZE 199
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleRelation_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleRelation_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleRelation_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleRelation_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleRelation_MIDL_TYPE_FORMAT_STRING AccessibleRelation__MIDL_TypeFormatString;
-extern const AccessibleRelation_MIDL_PROC_FORMAT_STRING AccessibleRelation__MIDL_ProcFormatString;
-extern const AccessibleRelation_MIDL_EXPR_FORMAT_STRING AccessibleRelation__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleRelation_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleRelation_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleRelation_MIDL_PROC_FORMAT_STRING AccessibleRelation__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_relationType */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter relationType */
-
-/* 24 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_localizedRelationType */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 46 */ NdrFcShort( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 52 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 54 */ NdrFcShort( 0x1 ), /* 1 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter localizedRelationType */
-
-/* 60 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ NdrFcShort( 0x20 ), /* Type Offset=32 */
-
- /* Return value */
-
-/* 66 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nTargets */
-
-/* 72 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 74 */ NdrFcLong( 0x0 ), /* 0 */
-/* 78 */ NdrFcShort( 0x5 ), /* 5 */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ NdrFcShort( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x24 ), /* 36 */
-/* 86 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 88 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 90 */ NdrFcShort( 0x0 ), /* 0 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nTargets */
-
-/* 96 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 98 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 100 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 102 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 104 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_target */
-
-/* 108 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 110 */ NdrFcLong( 0x0 ), /* 0 */
-/* 114 */ NdrFcShort( 0x6 ), /* 6 */
-/* 116 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 118 */ NdrFcShort( 0x8 ), /* 8 */
-/* 120 */ NdrFcShort( 0x8 ), /* 8 */
-/* 122 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 124 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 126 */ NdrFcShort( 0x0 ), /* 0 */
-/* 128 */ NdrFcShort( 0x0 ), /* 0 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter targetIndex */
-
-/* 132 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 134 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 136 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter target */
-
-/* 138 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 140 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 142 */ NdrFcShort( 0x2e ), /* Type Offset=46 */
-
- /* Return value */
-
-/* 144 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 146 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 148 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_targets */
-
-/* 150 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 152 */ NdrFcLong( 0x0 ), /* 0 */
-/* 156 */ NdrFcShort( 0x7 ), /* 7 */
-/* 158 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 160 */ NdrFcShort( 0x8 ), /* 8 */
-/* 162 */ NdrFcShort( 0x24 ), /* 36 */
-/* 164 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 166 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 168 */ NdrFcShort( 0x1 ), /* 1 */
-/* 170 */ NdrFcShort( 0x0 ), /* 0 */
-/* 172 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxTargets */
-
-/* 174 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 176 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 178 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter targets */
-
-/* 180 */ NdrFcShort( 0x113 ), /* Flags: must size, must free, out, simple ref, */
-/* 182 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 184 */ NdrFcShort( 0x48 ), /* Type Offset=72 */
-
- /* Parameter nTargets */
-
-/* 186 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 188 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 190 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 192 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 194 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleRelation_MIDL_TYPE_FORMAT_STRING AccessibleRelation__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x1c ), /* Offset= 28 (32) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0xe ), /* Offset= 14 (22) */
-/* 10 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 12 */ NdrFcShort( 0x2 ), /* 2 */
-/* 14 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 16 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 18 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 20 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 22 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 24 */ NdrFcShort( 0x8 ), /* 8 */
-/* 26 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (10) */
-/* 28 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 30 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 32 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ NdrFcShort( 0x4 ), /* 4 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0xffde ), /* Offset= -34 (6) */
-/* 42 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 44 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 46 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 52 */ NdrFcLong( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 62 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 64 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 66 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 68 */
- 0x11, 0x0, /* FC_RP */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 74 */ NdrFcShort( 0x0 ), /* 0 */
-/* 76 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 78 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 80 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 82 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 84 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 86 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 88 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 90 */ NdrFcShort( 0xffd8 ), /* Offset= -40 (50) */
-/* 92 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_AccessibleRelation_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleRelation, ver. 0.0,
- GUID={0x7CDF86EE,0xC3DA,0x496a,{0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleRelation_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 72,
- 108,
- 150
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleRelation_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleRelation__MIDL_ProcFormatString.Format,
- &IAccessibleRelation_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleRelation_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleRelation__MIDL_ProcFormatString.Format,
- &IAccessibleRelation_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(8) _IAccessibleRelationProxyVtbl =
-{
- &IAccessibleRelation_ProxyInfo,
- &IID_IAccessibleRelation,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_relationType */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_localizedRelationType */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_nTargets */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_target */ ,
- (void *) (INT_PTR) -1 /* IAccessibleRelation::get_targets */
-};
-
-const CInterfaceStubVtbl _IAccessibleRelationStubVtbl =
-{
- &IID_IAccessibleRelation,
- &IAccessibleRelation_ServerInfo,
- 8,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleRelation__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleRelation_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleRelationProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleRelation_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleRelationStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleRelation_InterfaceNamesList[] =
-{
- "IAccessibleRelation",
- 0
-};
-
-
-#define _AccessibleRelation_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleRelation, pIID, n)
-
-int __stdcall _AccessibleRelation_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleRelation_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleRelation_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleRelation_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleRelation_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleRelation_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleRelation_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleRole.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleRole.h
deleted file mode 100644
index 221d1d00f6..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleRole.h
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleRole.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleRole_h__
-#define __AccessibleRole_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-/* header files for imported files */
-#include "objidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleRole_0000_0000 */
-/* [local] */
-
-
-enum IA2Role
- { IA2_ROLE_UNKNOWN = 0,
- IA2_ROLE_CANVAS = 0x401,
- IA2_ROLE_CAPTION = ( IA2_ROLE_CANVAS + 1 ) ,
- IA2_ROLE_CHECK_MENU_ITEM = ( IA2_ROLE_CAPTION + 1 ) ,
- IA2_ROLE_COLOR_CHOOSER = ( IA2_ROLE_CHECK_MENU_ITEM + 1 ) ,
- IA2_ROLE_DATE_EDITOR = ( IA2_ROLE_COLOR_CHOOSER + 1 ) ,
- IA2_ROLE_DESKTOP_ICON = ( IA2_ROLE_DATE_EDITOR + 1 ) ,
- IA2_ROLE_DESKTOP_PANE = ( IA2_ROLE_DESKTOP_ICON + 1 ) ,
- IA2_ROLE_DIRECTORY_PANE = ( IA2_ROLE_DESKTOP_PANE + 1 ) ,
- IA2_ROLE_EDITBAR = ( IA2_ROLE_DIRECTORY_PANE + 1 ) ,
- IA2_ROLE_EMBEDDED_OBJECT = ( IA2_ROLE_EDITBAR + 1 ) ,
- IA2_ROLE_ENDNOTE = ( IA2_ROLE_EMBEDDED_OBJECT + 1 ) ,
- IA2_ROLE_FILE_CHOOSER = ( IA2_ROLE_ENDNOTE + 1 ) ,
- IA2_ROLE_FONT_CHOOSER = ( IA2_ROLE_FILE_CHOOSER + 1 ) ,
- IA2_ROLE_FOOTER = ( IA2_ROLE_FONT_CHOOSER + 1 ) ,
- IA2_ROLE_FOOTNOTE = ( IA2_ROLE_FOOTER + 1 ) ,
- IA2_ROLE_FORM = ( IA2_ROLE_FOOTNOTE + 1 ) ,
- IA2_ROLE_FRAME = ( IA2_ROLE_FORM + 1 ) ,
- IA2_ROLE_GLASS_PANE = ( IA2_ROLE_FRAME + 1 ) ,
- IA2_ROLE_HEADER = ( IA2_ROLE_GLASS_PANE + 1 ) ,
- IA2_ROLE_HEADING = ( IA2_ROLE_HEADER + 1 ) ,
- IA2_ROLE_ICON = ( IA2_ROLE_HEADING + 1 ) ,
- IA2_ROLE_IMAGE_MAP = ( IA2_ROLE_ICON + 1 ) ,
- IA2_ROLE_INPUT_METHOD_WINDOW = ( IA2_ROLE_IMAGE_MAP + 1 ) ,
- IA2_ROLE_INTERNAL_FRAME = ( IA2_ROLE_INPUT_METHOD_WINDOW + 1 ) ,
- IA2_ROLE_LABEL = ( IA2_ROLE_INTERNAL_FRAME + 1 ) ,
- IA2_ROLE_LAYERED_PANE = ( IA2_ROLE_LABEL + 1 ) ,
- IA2_ROLE_NOTE = ( IA2_ROLE_LAYERED_PANE + 1 ) ,
- IA2_ROLE_OPTION_PANE = ( IA2_ROLE_NOTE + 1 ) ,
- IA2_ROLE_PAGE = ( IA2_ROLE_OPTION_PANE + 1 ) ,
- IA2_ROLE_PARAGRAPH = ( IA2_ROLE_PAGE + 1 ) ,
- IA2_ROLE_RADIO_MENU_ITEM = ( IA2_ROLE_PARAGRAPH + 1 ) ,
- IA2_ROLE_REDUNDANT_OBJECT = ( IA2_ROLE_RADIO_MENU_ITEM + 1 ) ,
- IA2_ROLE_ROOT_PANE = ( IA2_ROLE_REDUNDANT_OBJECT + 1 ) ,
- IA2_ROLE_RULER = ( IA2_ROLE_ROOT_PANE + 1 ) ,
- IA2_ROLE_SCROLL_PANE = ( IA2_ROLE_RULER + 1 ) ,
- IA2_ROLE_SECTION = ( IA2_ROLE_SCROLL_PANE + 1 ) ,
- IA2_ROLE_SHAPE = ( IA2_ROLE_SECTION + 1 ) ,
- IA2_ROLE_SPLIT_PANE = ( IA2_ROLE_SHAPE + 1 ) ,
- IA2_ROLE_TEAR_OFF_MENU = ( IA2_ROLE_SPLIT_PANE + 1 ) ,
- IA2_ROLE_TERMINAL = ( IA2_ROLE_TEAR_OFF_MENU + 1 ) ,
- IA2_ROLE_TEXT_FRAME = ( IA2_ROLE_TERMINAL + 1 ) ,
- IA2_ROLE_TOGGLE_BUTTON = ( IA2_ROLE_TEXT_FRAME + 1 ) ,
- IA2_ROLE_VIEW_PORT = ( IA2_ROLE_TOGGLE_BUTTON + 1 ) ,
- IA2_ROLE_COMPLEMENTARY_CONTENT = ( IA2_ROLE_VIEW_PORT + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRole_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleRole_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleStates.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleStates.h
deleted file mode 100644
index 058d2e548e..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleStates.h
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleStates.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __AccessibleStates_h__
-#define __AccessibleStates_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-/* header files for imported files */
-#include "objidl.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleStates_0000_0000 */
-/* [local] */
-
-typedef long AccessibleStates;
-
-
-enum IA2States
- { IA2_STATE_ACTIVE = 0x1,
- IA2_STATE_ARMED = 0x2,
- IA2_STATE_DEFUNCT = 0x4,
- IA2_STATE_EDITABLE = 0x8,
- IA2_STATE_HORIZONTAL = 0x10,
- IA2_STATE_ICONIFIED = 0x20,
- IA2_STATE_INVALID_ENTRY = 0x40,
- IA2_STATE_MANAGES_DESCENDANTS = 0x80,
- IA2_STATE_MODAL = 0x100,
- IA2_STATE_MULTI_LINE = 0x200,
- IA2_STATE_OPAQUE = 0x400,
- IA2_STATE_REQUIRED = 0x800,
- IA2_STATE_SELECTABLE_TEXT = 0x1000,
- IA2_STATE_SINGLE_LINE = 0x2000,
- IA2_STATE_STALE = 0x4000,
- IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
- IA2_STATE_TRANSIENT = 0x10000,
- IA2_STATE_VERTICAL = 0x20000,
- IA2_STATE_CHECKABLE = 0x40000,
- IA2_STATE_PINNED = 0x80000
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleStates_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleStates_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable.h
deleted file mode 100644
index 0f7dd49efc..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable.h
+++ /dev/null
@@ -1,497 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTable_h__
-#define __AccessibleTable_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTable_FWD_DEFINED__
-#define __IAccessibleTable_FWD_DEFINED__
-typedef interface IAccessibleTable IAccessibleTable;
-#endif /* __IAccessibleTable_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTable_INTERFACE_DEFINED__
-#define __IAccessibleTable_INTERFACE_DEFINED__
-
-/* interface IAccessibleTable */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTable;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("35AD8070-C20C-4fb4-B094-F4F7275DD469")
- IAccessibleTable : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_childIndex(
- /* [in] */ long rowIndex,
- /* [in] */ long columnIndex,
- /* [retval][out] */ long *cellIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtentAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nColumnsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeader(
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingRowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *columnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedChildren(
- /* [retval][out] */ long *cellCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtentAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nRowsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeader(
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingColumnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *rowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedChildren(
- /* [in] */ long maxChildren,
- /* [length_is][length_is][size_is][size_is][out] */ long **children,
- /* [retval][out] */ long *nChildren) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
- /* [in] */ long maxColumns,
- /* [length_is][length_is][size_is][size_is][out] */ long **columns,
- /* [retval][out] */ long *nColumns) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
- /* [in] */ long maxRows,
- /* [length_is][length_is][size_is][size_is][out] */ long **rows,
- /* [retval][out] */ long *nRows) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectColumn(
- /* [in] */ long column) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectColumn(
- /* [in] */ long column) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtentsAtIndex(
- /* [in] */ long index,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
- /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTableVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTable * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTable * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTable * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
- IAccessibleTable * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_childIndex )(
- IAccessibleTable * This,
- /* [in] */ long rowIndex,
- /* [in] */ long columnIndex,
- /* [retval][out] */ long *cellIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
- IAccessibleTable * This,
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtentAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nColumnsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeader )(
- IAccessibleTable * This,
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingRowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
- IAccessibleTable * This,
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *columnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
- IAccessibleTable * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
- IAccessibleTable * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedChildren )(
- IAccessibleTable * This,
- /* [retval][out] */ long *cellCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
- IAccessibleTable * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
- IAccessibleTable * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtentAt )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ long *nRowsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeader )(
- IAccessibleTable * This,
- /* [out] */ IAccessibleTable **accessibleTable,
- /* [retval][out] */ long *startingColumnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
- IAccessibleTable * This,
- /* [in] */ long cellIndex,
- /* [retval][out] */ long *rowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedChildren )(
- IAccessibleTable * This,
- /* [in] */ long maxChildren,
- /* [length_is][length_is][size_is][size_is][out] */ long **children,
- /* [retval][out] */ long *nChildren);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
- IAccessibleTable * This,
- /* [in] */ long maxColumns,
- /* [length_is][length_is][size_is][size_is][out] */ long **columns,
- /* [retval][out] */ long *nColumns);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
- IAccessibleTable * This,
- /* [in] */ long maxRows,
- /* [length_is][length_is][size_is][size_is][out] */ long **rows,
- /* [retval][out] */ long *nRows);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
- IAccessibleTable * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
- IAccessibleTable * This,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
- IAccessibleTable * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- HRESULT ( STDMETHODCALLTYPE *selectRow )(
- IAccessibleTable * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *selectColumn )(
- IAccessibleTable * This,
- /* [in] */ long column);
-
- HRESULT ( STDMETHODCALLTYPE *unselectRow )(
- IAccessibleTable * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
- IAccessibleTable * This,
- /* [in] */ long column);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtentsAtIndex )(
- IAccessibleTable * This,
- /* [in] */ long index,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
- IAccessibleTable * This,
- /* [retval][out] */ IA2TableModelChange *modelChange);
-
- END_INTERFACE
- } IAccessibleTableVtbl;
-
- interface IAccessibleTable
- {
- CONST_VTBL struct IAccessibleTableVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTable_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTable_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTable_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTable_get_accessibleAt(This,row,column,accessible) \
- ( (This)->lpVtbl -> get_accessibleAt(This,row,column,accessible) )
-
-#define IAccessibleTable_get_caption(This,accessible) \
- ( (This)->lpVtbl -> get_caption(This,accessible) )
-
-#define IAccessibleTable_get_childIndex(This,rowIndex,columnIndex,cellIndex) \
- ( (This)->lpVtbl -> get_childIndex(This,rowIndex,columnIndex,cellIndex) )
-
-#define IAccessibleTable_get_columnDescription(This,column,description) \
- ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
-
-#define IAccessibleTable_get_columnExtentAt(This,row,column,nColumnsSpanned) \
- ( (This)->lpVtbl -> get_columnExtentAt(This,row,column,nColumnsSpanned) )
-
-#define IAccessibleTable_get_columnHeader(This,accessibleTable,startingRowIndex) \
- ( (This)->lpVtbl -> get_columnHeader(This,accessibleTable,startingRowIndex) )
-
-#define IAccessibleTable_get_columnIndex(This,cellIndex,columnIndex) \
- ( (This)->lpVtbl -> get_columnIndex(This,cellIndex,columnIndex) )
-
-#define IAccessibleTable_get_nColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
-
-#define IAccessibleTable_get_nRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nRows(This,rowCount) )
-
-#define IAccessibleTable_get_nSelectedChildren(This,cellCount) \
- ( (This)->lpVtbl -> get_nSelectedChildren(This,cellCount) )
-
-#define IAccessibleTable_get_nSelectedColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
-
-#define IAccessibleTable_get_nSelectedRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
-
-#define IAccessibleTable_get_rowDescription(This,row,description) \
- ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
-
-#define IAccessibleTable_get_rowExtentAt(This,row,column,nRowsSpanned) \
- ( (This)->lpVtbl -> get_rowExtentAt(This,row,column,nRowsSpanned) )
-
-#define IAccessibleTable_get_rowHeader(This,accessibleTable,startingColumnIndex) \
- ( (This)->lpVtbl -> get_rowHeader(This,accessibleTable,startingColumnIndex) )
-
-#define IAccessibleTable_get_rowIndex(This,cellIndex,rowIndex) \
- ( (This)->lpVtbl -> get_rowIndex(This,cellIndex,rowIndex) )
-
-#define IAccessibleTable_get_selectedChildren(This,maxChildren,children,nChildren) \
- ( (This)->lpVtbl -> get_selectedChildren(This,maxChildren,children,nChildren) )
-
-#define IAccessibleTable_get_selectedColumns(This,maxColumns,columns,nColumns) \
- ( (This)->lpVtbl -> get_selectedColumns(This,maxColumns,columns,nColumns) )
-
-#define IAccessibleTable_get_selectedRows(This,maxRows,rows,nRows) \
- ( (This)->lpVtbl -> get_selectedRows(This,maxRows,rows,nRows) )
-
-#define IAccessibleTable_get_summary(This,accessible) \
- ( (This)->lpVtbl -> get_summary(This,accessible) )
-
-#define IAccessibleTable_get_isColumnSelected(This,column,isSelected) \
- ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
-
-#define IAccessibleTable_get_isRowSelected(This,row,isSelected) \
- ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
-
-#define IAccessibleTable_get_isSelected(This,row,column,isSelected) \
- ( (This)->lpVtbl -> get_isSelected(This,row,column,isSelected) )
-
-#define IAccessibleTable_selectRow(This,row) \
- ( (This)->lpVtbl -> selectRow(This,row) )
-
-#define IAccessibleTable_selectColumn(This,column) \
- ( (This)->lpVtbl -> selectColumn(This,column) )
-
-#define IAccessibleTable_unselectRow(This,row) \
- ( (This)->lpVtbl -> unselectRow(This,row) )
-
-#define IAccessibleTable_unselectColumn(This,column) \
- ( (This)->lpVtbl -> unselectColumn(This,column) )
-
-#define IAccessibleTable_get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) \
- ( (This)->lpVtbl -> get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) )
-
-#define IAccessibleTable_get_modelChange(This,modelChange) \
- ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTable_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2.h
deleted file mode 100644
index d511869de4..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2.h
+++ /dev/null
@@ -1,367 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTable2_h__
-#define __AccessibleTable2_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTable2_FWD_DEFINED__
-#define __IAccessibleTable2_FWD_DEFINED__
-typedef interface IAccessibleTable2 IAccessibleTable2;
-#endif /* __IAccessibleTable2_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTable2_INTERFACE_DEFINED__
-#define __IAccessibleTable2_INTERFACE_DEFINED__
-
-/* interface IAccessibleTable2 */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTable2;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("6167f295-06f0-4cdd-a1fa-02e25153d869")
- IAccessibleTable2 : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_cellAt(
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **cell) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedCells(
- /* [retval][out] */ long *cellCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
- /* [retval][out] */ long *columnCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
- /* [retval][out] */ long *rowCount) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cells,
- /* [retval][out] */ long *nSelectedCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
- /* [size_is][size_is][out] */ long **selectedColumns,
- /* [retval][out] */ long *nColumns) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
- /* [size_is][size_is][out] */ long **selectedRows,
- /* [retval][out] */ long *nRows) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
- /* [retval][out] */ IUnknown **accessible) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE selectColumn(
- /* [in] */ long column) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectRow(
- /* [in] */ long row) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE unselectColumn(
- /* [in] */ long column) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
- /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTable2Vtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTable2 * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTable2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTable2 * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_cellAt )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [in] */ long column,
- /* [retval][out] */ IUnknown **cell);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
- IAccessibleTable2 * This,
- /* [in] */ long column,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedCells )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *cellCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *columnCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
- IAccessibleTable2 * This,
- /* [retval][out] */ long *rowCount);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [retval][out] */ BSTR *description);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedCells )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cells,
- /* [retval][out] */ long *nSelectedCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][out] */ long **selectedColumns,
- /* [retval][out] */ long *nColumns);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
- IAccessibleTable2 * This,
- /* [size_is][size_is][out] */ long **selectedRows,
- /* [retval][out] */ long *nRows);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IUnknown **accessible);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
- IAccessibleTable2 * This,
- /* [in] */ long column,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
- IAccessibleTable2 * This,
- /* [in] */ long row,
- /* [retval][out] */ boolean *isSelected);
-
- HRESULT ( STDMETHODCALLTYPE *selectRow )(
- IAccessibleTable2 * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *selectColumn )(
- IAccessibleTable2 * This,
- /* [in] */ long column);
-
- HRESULT ( STDMETHODCALLTYPE *unselectRow )(
- IAccessibleTable2 * This,
- /* [in] */ long row);
-
- HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
- IAccessibleTable2 * This,
- /* [in] */ long column);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
- IAccessibleTable2 * This,
- /* [retval][out] */ IA2TableModelChange *modelChange);
-
- END_INTERFACE
- } IAccessibleTable2Vtbl;
-
- interface IAccessibleTable2
- {
- CONST_VTBL struct IAccessibleTable2Vtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTable2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTable2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTable2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTable2_get_cellAt(This,row,column,cell) \
- ( (This)->lpVtbl -> get_cellAt(This,row,column,cell) )
-
-#define IAccessibleTable2_get_caption(This,accessible) \
- ( (This)->lpVtbl -> get_caption(This,accessible) )
-
-#define IAccessibleTable2_get_columnDescription(This,column,description) \
- ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
-
-#define IAccessibleTable2_get_nColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
-
-#define IAccessibleTable2_get_nRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nRows(This,rowCount) )
-
-#define IAccessibleTable2_get_nSelectedCells(This,cellCount) \
- ( (This)->lpVtbl -> get_nSelectedCells(This,cellCount) )
-
-#define IAccessibleTable2_get_nSelectedColumns(This,columnCount) \
- ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
-
-#define IAccessibleTable2_get_nSelectedRows(This,rowCount) \
- ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
-
-#define IAccessibleTable2_get_rowDescription(This,row,description) \
- ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
-
-#define IAccessibleTable2_get_selectedCells(This,cells,nSelectedCells) \
- ( (This)->lpVtbl -> get_selectedCells(This,cells,nSelectedCells) )
-
-#define IAccessibleTable2_get_selectedColumns(This,selectedColumns,nColumns) \
- ( (This)->lpVtbl -> get_selectedColumns(This,selectedColumns,nColumns) )
-
-#define IAccessibleTable2_get_selectedRows(This,selectedRows,nRows) \
- ( (This)->lpVtbl -> get_selectedRows(This,selectedRows,nRows) )
-
-#define IAccessibleTable2_get_summary(This,accessible) \
- ( (This)->lpVtbl -> get_summary(This,accessible) )
-
-#define IAccessibleTable2_get_isColumnSelected(This,column,isSelected) \
- ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
-
-#define IAccessibleTable2_get_isRowSelected(This,row,isSelected) \
- ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
-
-#define IAccessibleTable2_selectRow(This,row) \
- ( (This)->lpVtbl -> selectRow(This,row) )
-
-#define IAccessibleTable2_selectColumn(This,column) \
- ( (This)->lpVtbl -> selectColumn(This,column) )
-
-#define IAccessibleTable2_unselectRow(This,row) \
- ( (This)->lpVtbl -> unselectRow(This,row) )
-
-#define IAccessibleTable2_unselectColumn(This,column) \
- ( (This)->lpVtbl -> unselectColumn(This,column) )
-
-#define IAccessibleTable2_get_modelChange(This,modelChange) \
- ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTable2_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_i.c
deleted file mode 100644
index f5444155ad..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTable2,0x6167f295,0x06f0,0x4cdd,0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_p.c
deleted file mode 100644
index f4b782f9dc..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable2_p.c
+++ /dev/null
@@ -1,1091 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTable2.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTable2.h"
-
-#define TYPE_FORMAT_STRING_SIZE 141
-#define PROC_FORMAT_STRING_SIZE 775
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleTable2_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTable2_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTable2_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTable2_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTable2_MIDL_TYPE_FORMAT_STRING AccessibleTable2__MIDL_TypeFormatString;
-extern const AccessibleTable2_MIDL_PROC_FORMAT_STRING AccessibleTable2__MIDL_ProcFormatString;
-extern const AccessibleTable2_MIDL_EXPR_FORMAT_STRING AccessibleTable2__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTable2_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTable2_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleTable2_MIDL_PROC_FORMAT_STRING AccessibleTable2__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_cellAt */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 24 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter cell */
-
-/* 36 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 42 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 44 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 46 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caption */
-
-/* 48 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 50 */ NdrFcLong( 0x0 ), /* 0 */
-/* 54 */ NdrFcShort( 0x4 ), /* 4 */
-/* 56 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x8 ), /* 8 */
-/* 62 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 64 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-/* 70 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 72 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 74 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 76 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 78 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 80 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnDescription */
-
-/* 84 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 86 */ NdrFcLong( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x5 ), /* 5 */
-/* 92 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 94 */ NdrFcShort( 0x8 ), /* 8 */
-/* 96 */ NdrFcShort( 0x8 ), /* 8 */
-/* 98 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 100 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 102 */ NdrFcShort( 0x1 ), /* 1 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 108 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 110 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 114 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 116 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 118 */ NdrFcShort( 0x36 ), /* Type Offset=54 */
-
- /* Return value */
-
-/* 120 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 122 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nColumns */
-
-/* 126 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 128 */ NdrFcLong( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x6 ), /* 6 */
-/* 134 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x24 ), /* 36 */
-/* 140 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 142 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 144 */ NdrFcShort( 0x0 ), /* 0 */
-/* 146 */ NdrFcShort( 0x0 ), /* 0 */
-/* 148 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 150 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 152 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 154 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 156 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 158 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nRows */
-
-/* 162 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 164 */ NdrFcLong( 0x0 ), /* 0 */
-/* 168 */ NdrFcShort( 0x7 ), /* 7 */
-/* 170 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 172 */ NdrFcShort( 0x0 ), /* 0 */
-/* 174 */ NdrFcShort( 0x24 ), /* 36 */
-/* 176 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 178 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 180 */ NdrFcShort( 0x0 ), /* 0 */
-/* 182 */ NdrFcShort( 0x0 ), /* 0 */
-/* 184 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 186 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 188 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 190 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 192 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 194 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedCells */
-
-/* 198 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 200 */ NdrFcLong( 0x0 ), /* 0 */
-/* 204 */ NdrFcShort( 0x8 ), /* 8 */
-/* 206 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 208 */ NdrFcShort( 0x0 ), /* 0 */
-/* 210 */ NdrFcShort( 0x24 ), /* 36 */
-/* 212 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 214 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 216 */ NdrFcShort( 0x0 ), /* 0 */
-/* 218 */ NdrFcShort( 0x0 ), /* 0 */
-/* 220 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellCount */
-
-/* 222 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 224 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 226 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 228 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 230 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 232 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedColumns */
-
-/* 234 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 236 */ NdrFcLong( 0x0 ), /* 0 */
-/* 240 */ NdrFcShort( 0x9 ), /* 9 */
-/* 242 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 244 */ NdrFcShort( 0x0 ), /* 0 */
-/* 246 */ NdrFcShort( 0x24 ), /* 36 */
-/* 248 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 250 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 252 */ NdrFcShort( 0x0 ), /* 0 */
-/* 254 */ NdrFcShort( 0x0 ), /* 0 */
-/* 256 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 258 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 260 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 264 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 266 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 268 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedRows */
-
-/* 270 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 272 */ NdrFcLong( 0x0 ), /* 0 */
-/* 276 */ NdrFcShort( 0xa ), /* 10 */
-/* 278 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 280 */ NdrFcShort( 0x0 ), /* 0 */
-/* 282 */ NdrFcShort( 0x24 ), /* 36 */
-/* 284 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 286 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 288 */ NdrFcShort( 0x0 ), /* 0 */
-/* 290 */ NdrFcShort( 0x0 ), /* 0 */
-/* 292 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 294 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 296 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 298 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 300 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 302 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 304 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowDescription */
-
-/* 306 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 308 */ NdrFcLong( 0x0 ), /* 0 */
-/* 312 */ NdrFcShort( 0xb ), /* 11 */
-/* 314 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 316 */ NdrFcShort( 0x8 ), /* 8 */
-/* 318 */ NdrFcShort( 0x8 ), /* 8 */
-/* 320 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 322 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 324 */ NdrFcShort( 0x1 ), /* 1 */
-/* 326 */ NdrFcShort( 0x0 ), /* 0 */
-/* 328 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 330 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 332 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 334 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 336 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 338 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 340 */ NdrFcShort( 0x36 ), /* Type Offset=54 */
-
- /* Return value */
-
-/* 342 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 344 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 346 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedCells */
-
-/* 348 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 350 */ NdrFcLong( 0x0 ), /* 0 */
-/* 354 */ NdrFcShort( 0xc ), /* 12 */
-/* 356 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 358 */ NdrFcShort( 0x0 ), /* 0 */
-/* 360 */ NdrFcShort( 0x24 ), /* 36 */
-/* 362 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 364 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 366 */ NdrFcShort( 0x1 ), /* 1 */
-/* 368 */ NdrFcShort( 0x0 ), /* 0 */
-/* 370 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cells */
-
-/* 372 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 374 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 376 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter nSelectedCells */
-
-/* 378 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 380 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 382 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 384 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 386 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 388 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedColumns */
-
-/* 390 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 392 */ NdrFcLong( 0x0 ), /* 0 */
-/* 396 */ NdrFcShort( 0xd ), /* 13 */
-/* 398 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 400 */ NdrFcShort( 0x0 ), /* 0 */
-/* 402 */ NdrFcShort( 0x24 ), /* 36 */
-/* 404 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 406 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 408 */ NdrFcShort( 0x1 ), /* 1 */
-/* 410 */ NdrFcShort( 0x0 ), /* 0 */
-/* 412 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectedColumns */
-
-/* 414 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 416 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 418 */ NdrFcShort( 0x62 ), /* Type Offset=98 */
-
- /* Parameter nColumns */
-
-/* 420 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 422 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 424 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 426 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 428 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 430 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedRows */
-
-/* 432 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 434 */ NdrFcLong( 0x0 ), /* 0 */
-/* 438 */ NdrFcShort( 0xe ), /* 14 */
-/* 440 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 442 */ NdrFcShort( 0x0 ), /* 0 */
-/* 444 */ NdrFcShort( 0x24 ), /* 36 */
-/* 446 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 448 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 450 */ NdrFcShort( 0x1 ), /* 1 */
-/* 452 */ NdrFcShort( 0x0 ), /* 0 */
-/* 454 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectedRows */
-
-/* 456 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 458 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 460 */ NdrFcShort( 0x62 ), /* Type Offset=98 */
-
- /* Parameter nRows */
-
-/* 462 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 464 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 466 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 468 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 470 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 472 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_summary */
-
-/* 474 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 476 */ NdrFcLong( 0x0 ), /* 0 */
-/* 480 */ NdrFcShort( 0xf ), /* 15 */
-/* 482 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 484 */ NdrFcShort( 0x0 ), /* 0 */
-/* 486 */ NdrFcShort( 0x8 ), /* 8 */
-/* 488 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 490 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 492 */ NdrFcShort( 0x0 ), /* 0 */
-/* 494 */ NdrFcShort( 0x0 ), /* 0 */
-/* 496 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 498 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 500 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 502 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 504 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 506 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 508 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isColumnSelected */
-
-/* 510 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 512 */ NdrFcLong( 0x0 ), /* 0 */
-/* 516 */ NdrFcShort( 0x10 ), /* 16 */
-/* 518 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 520 */ NdrFcShort( 0x8 ), /* 8 */
-/* 522 */ NdrFcShort( 0x21 ), /* 33 */
-/* 524 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 526 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 528 */ NdrFcShort( 0x0 ), /* 0 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 534 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 536 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 538 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 540 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 542 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 544 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 546 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 548 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 550 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isRowSelected */
-
-/* 552 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 554 */ NdrFcLong( 0x0 ), /* 0 */
-/* 558 */ NdrFcShort( 0x11 ), /* 17 */
-/* 560 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 562 */ NdrFcShort( 0x8 ), /* 8 */
-/* 564 */ NdrFcShort( 0x21 ), /* 33 */
-/* 566 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 568 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 570 */ NdrFcShort( 0x0 ), /* 0 */
-/* 572 */ NdrFcShort( 0x0 ), /* 0 */
-/* 574 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 576 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 578 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 580 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 582 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 584 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 586 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 588 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 590 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 592 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectRow */
-
-/* 594 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 596 */ NdrFcLong( 0x0 ), /* 0 */
-/* 600 */ NdrFcShort( 0x12 ), /* 18 */
-/* 602 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 604 */ NdrFcShort( 0x8 ), /* 8 */
-/* 606 */ NdrFcShort( 0x8 ), /* 8 */
-/* 608 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 610 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 612 */ NdrFcShort( 0x0 ), /* 0 */
-/* 614 */ NdrFcShort( 0x0 ), /* 0 */
-/* 616 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 618 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 620 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 622 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 624 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 626 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 628 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectColumn */
-
-/* 630 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 632 */ NdrFcLong( 0x0 ), /* 0 */
-/* 636 */ NdrFcShort( 0x13 ), /* 19 */
-/* 638 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 640 */ NdrFcShort( 0x8 ), /* 8 */
-/* 642 */ NdrFcShort( 0x8 ), /* 8 */
-/* 644 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 646 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 648 */ NdrFcShort( 0x0 ), /* 0 */
-/* 650 */ NdrFcShort( 0x0 ), /* 0 */
-/* 652 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 654 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 656 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 658 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 660 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 662 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 664 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectRow */
-
-/* 666 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 668 */ NdrFcLong( 0x0 ), /* 0 */
-/* 672 */ NdrFcShort( 0x14 ), /* 20 */
-/* 674 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 676 */ NdrFcShort( 0x8 ), /* 8 */
-/* 678 */ NdrFcShort( 0x8 ), /* 8 */
-/* 680 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 682 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x0 ), /* 0 */
-/* 688 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 690 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 692 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 694 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 696 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 698 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 700 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectColumn */
-
-/* 702 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 704 */ NdrFcLong( 0x0 ), /* 0 */
-/* 708 */ NdrFcShort( 0x15 ), /* 21 */
-/* 710 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 712 */ NdrFcShort( 0x8 ), /* 8 */
-/* 714 */ NdrFcShort( 0x8 ), /* 8 */
-/* 716 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 718 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 720 */ NdrFcShort( 0x0 ), /* 0 */
-/* 722 */ NdrFcShort( 0x0 ), /* 0 */
-/* 724 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 726 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 728 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 730 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 732 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 734 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 736 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_modelChange */
-
-/* 738 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 740 */ NdrFcLong( 0x0 ), /* 0 */
-/* 744 */ NdrFcShort( 0x16 ), /* 22 */
-/* 746 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 748 */ NdrFcShort( 0x0 ), /* 0 */
-/* 750 */ NdrFcShort( 0x8 ), /* 8 */
-/* 752 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 754 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 756 */ NdrFcShort( 0x0 ), /* 0 */
-/* 758 */ NdrFcShort( 0x0 ), /* 0 */
-/* 760 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter modelChange */
-
-/* 762 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 764 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 766 */ NdrFcShort( 0x7e ), /* Type Offset=126 */
-
- /* Return value */
-
-/* 768 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 770 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 772 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTable2_MIDL_TYPE_FORMAT_STRING AccessibleTable2__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
-/* 6 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 8 */ NdrFcLong( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x0 ), /* 0 */
-/* 14 */ NdrFcShort( 0x0 ), /* 0 */
-/* 16 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 18 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 20 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 22 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 24 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 26 */ NdrFcShort( 0x1c ), /* Offset= 28 (54) */
-/* 28 */
- 0x13, 0x0, /* FC_OP */
-/* 30 */ NdrFcShort( 0xe ), /* Offset= 14 (44) */
-/* 32 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 34 */ NdrFcShort( 0x2 ), /* 2 */
-/* 36 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 38 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 40 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 42 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 44 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 46 */ NdrFcShort( 0x8 ), /* 8 */
-/* 48 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (32) */
-/* 50 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x4 ), /* 4 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0xffde ), /* Offset= -34 (28) */
-/* 64 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 66 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 68 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x13, 0x0, /* FC_OP */
-/* 74 */ NdrFcShort( 0x2 ), /* Offset= 2 (76) */
-/* 76 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 78 */ NdrFcShort( 0x0 ), /* 0 */
-/* 80 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 82 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 84 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 86 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 90 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 92 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 94 */ NdrFcShort( 0xffa8 ), /* Offset= -88 (6) */
-/* 96 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 98 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 100 */ NdrFcShort( 0x2 ), /* Offset= 2 (102) */
-/* 102 */
- 0x13, 0x0, /* FC_OP */
-/* 104 */ NdrFcShort( 0x2 ), /* Offset= 2 (106) */
-/* 106 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 108 */ NdrFcShort( 0x4 ), /* 4 */
-/* 110 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 112 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 114 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 116 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 118 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 120 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 122 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 124 */ NdrFcShort( 0x2 ), /* Offset= 2 (126) */
-/* 126 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 128 */ NdrFcShort( 0x14 ), /* 20 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-/* 132 */ NdrFcShort( 0x0 ), /* Offset= 0 (132) */
-/* 134 */ 0xd, /* FC_ENUM16 */
- 0x8, /* FC_LONG */
-/* 136 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 138 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTable2, ver. 0.0,
- GUID={0x6167f295,0x06f0,0x4cdd,{0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTable2_FormatStringOffsetTable[] =
- {
- 0,
- 48,
- 84,
- 126,
- 162,
- 198,
- 234,
- 270,
- 306,
- 348,
- 390,
- 432,
- 474,
- 510,
- 552,
- 594,
- 630,
- 666,
- 702,
- 738
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTable2_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTable2__MIDL_ProcFormatString.Format,
- &IAccessibleTable2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTable2_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTable2__MIDL_ProcFormatString.Format,
- &IAccessibleTable2_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(23) _IAccessibleTable2ProxyVtbl =
-{
- &IAccessibleTable2_ProxyInfo,
- &IID_IAccessibleTable2,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_cellAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_caption */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_columnDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_nSelectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_rowDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_selectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_summary */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_isColumnSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_isRowSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::selectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::selectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::unselectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::unselectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable2::get_modelChange */
-};
-
-const CInterfaceStubVtbl _IAccessibleTable2StubVtbl =
-{
- &IID_IAccessibleTable2,
- &IAccessibleTable2_ServerInfo,
- 23,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTable2__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTable2_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTable2ProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTable2_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTable2StubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTable2_InterfaceNamesList[] =
-{
- "IAccessibleTable2",
- 0
-};
-
-
-#define _AccessibleTable2_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTable2, pIID, n)
-
-int __stdcall _AccessibleTable2_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTable2_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTable2_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTable2_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTable2_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTable2_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTable2_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell.h
deleted file mode 100644
index 621768e149..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell.h
+++ /dev/null
@@ -1,246 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleTableCell_h__
-#define __AccessibleTableCell_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleTableCell_FWD_DEFINED__
-#define __IAccessibleTableCell_FWD_DEFINED__
-typedef interface IAccessibleTableCell IAccessibleTableCell;
-#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "Accessible2.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleTableCell_INTERFACE_DEFINED__
-#define __IAccessibleTableCell_INTERFACE_DEFINED__
-
-/* interface IAccessibleTableCell */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleTableCell;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("594116B1-C99F-4847-AD06-0A7A86ECE645")
- IAccessibleTableCell : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtent(
- /* [retval][out] */ long *nColumnsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeaderCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nColumnHeaderCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
- /* [retval][out] */ long *columnIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtent(
- /* [retval][out] */ long *nRowsSpanned) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeaderCells(
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nRowHeaderCells) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
- /* [retval][out] */ long *rowIndex) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtents(
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_table(
- /* [retval][out] */ IUnknown **table) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTableCellVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleTableCell * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleTableCell * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleTableCell * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtent )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *nColumnsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeaderCells )(
- IAccessibleTableCell * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nColumnHeaderCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *columnIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtent )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *nRowsSpanned);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeaderCells )(
- IAccessibleTableCell * This,
- /* [size_is][size_is][size_is][out] */ IUnknown ***cellAccessibles,
- /* [retval][out] */ long *nRowHeaderCells);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
- IAccessibleTableCell * This,
- /* [retval][out] */ long *rowIndex);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
- IAccessibleTableCell * This,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtents )(
- IAccessibleTableCell * This,
- /* [out] */ long *row,
- /* [out] */ long *column,
- /* [out] */ long *rowExtents,
- /* [out] */ long *columnExtents,
- /* [retval][out] */ boolean *isSelected);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_table )(
- IAccessibleTableCell * This,
- /* [retval][out] */ IUnknown **table);
-
- END_INTERFACE
- } IAccessibleTableCellVtbl;
-
- interface IAccessibleTableCell
- {
- CONST_VTBL struct IAccessibleTableCellVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleTableCell_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleTableCell_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleTableCell_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleTableCell_get_columnExtent(This,nColumnsSpanned) \
- ( (This)->lpVtbl -> get_columnExtent(This,nColumnsSpanned) )
-
-#define IAccessibleTableCell_get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) \
- ( (This)->lpVtbl -> get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) )
-
-#define IAccessibleTableCell_get_columnIndex(This,columnIndex) \
- ( (This)->lpVtbl -> get_columnIndex(This,columnIndex) )
-
-#define IAccessibleTableCell_get_rowExtent(This,nRowsSpanned) \
- ( (This)->lpVtbl -> get_rowExtent(This,nRowsSpanned) )
-
-#define IAccessibleTableCell_get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) \
- ( (This)->lpVtbl -> get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) )
-
-#define IAccessibleTableCell_get_rowIndex(This,rowIndex) \
- ( (This)->lpVtbl -> get_rowIndex(This,rowIndex) )
-
-#define IAccessibleTableCell_get_isSelected(This,isSelected) \
- ( (This)->lpVtbl -> get_isSelected(This,isSelected) )
-
-#define IAccessibleTableCell_get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) \
- ( (This)->lpVtbl -> get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) )
-
-#define IAccessibleTableCell_get_table(This,table) \
- ( (This)->lpVtbl -> get_table(This,table) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleTableCell_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_i.c
deleted file mode 100644
index 4ea10e057d..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTableCell,0x594116B1,0xC99F,0x4847,0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_p.c
deleted file mode 100644
index 2627caaef9..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTableCell_p.c
+++ /dev/null
@@ -1,637 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleTableCell.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTableCell.h"
-
-#define TYPE_FORMAT_STRING_SIZE 63
-#define PROC_FORMAT_STRING_SIZE 361
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 0
-
-typedef struct _AccessibleTableCell_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTableCell_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTableCell_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTableCell_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTableCell_MIDL_TYPE_FORMAT_STRING AccessibleTableCell__MIDL_TypeFormatString;
-extern const AccessibleTableCell_MIDL_PROC_FORMAT_STRING AccessibleTableCell__MIDL_ProcFormatString;
-extern const AccessibleTableCell_MIDL_EXPR_FORMAT_STRING AccessibleTableCell__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTableCell_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTableCell_ProxyInfo;
-
-
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleTableCell_MIDL_PROC_FORMAT_STRING AccessibleTableCell__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_columnExtent */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x24 ), /* 36 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nColumnsSpanned */
-
-/* 24 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnHeaderCells */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 46 */ NdrFcShort( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x24 ), /* 36 */
-/* 50 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 52 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 54 */ NdrFcShort( 0x1 ), /* 1 */
-/* 56 */ NdrFcShort( 0x0 ), /* 0 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellAccessibles */
-
-/* 60 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Parameter nColumnHeaderCells */
-
-/* 66 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 68 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 72 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 74 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnIndex */
-
-/* 78 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 80 */ NdrFcLong( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x5 ), /* 5 */
-/* 86 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 88 */ NdrFcShort( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x24 ), /* 36 */
-/* 92 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 94 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 96 */ NdrFcShort( 0x0 ), /* 0 */
-/* 98 */ NdrFcShort( 0x0 ), /* 0 */
-/* 100 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnIndex */
-
-/* 102 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 104 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 108 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 110 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowExtent */
-
-/* 114 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 116 */ NdrFcLong( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x6 ), /* 6 */
-/* 122 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 124 */ NdrFcShort( 0x0 ), /* 0 */
-/* 126 */ NdrFcShort( 0x24 ), /* 36 */
-/* 128 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 130 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 132 */ NdrFcShort( 0x0 ), /* 0 */
-/* 134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 136 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nRowsSpanned */
-
-/* 138 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 140 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 142 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 144 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 146 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 148 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowHeaderCells */
-
-/* 150 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 152 */ NdrFcLong( 0x0 ), /* 0 */
-/* 156 */ NdrFcShort( 0x7 ), /* 7 */
-/* 158 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 160 */ NdrFcShort( 0x0 ), /* 0 */
-/* 162 */ NdrFcShort( 0x24 ), /* 36 */
-/* 164 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 166 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 168 */ NdrFcShort( 0x1 ), /* 1 */
-/* 170 */ NdrFcShort( 0x0 ), /* 0 */
-/* 172 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellAccessibles */
-
-/* 174 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 176 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 178 */ NdrFcShort( 0x6 ), /* Type Offset=6 */
-
- /* Parameter nRowHeaderCells */
-
-/* 180 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 182 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 184 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 186 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 188 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 190 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowIndex */
-
-/* 192 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 194 */ NdrFcLong( 0x0 ), /* 0 */
-/* 198 */ NdrFcShort( 0x8 ), /* 8 */
-/* 200 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 202 */ NdrFcShort( 0x0 ), /* 0 */
-/* 204 */ NdrFcShort( 0x24 ), /* 36 */
-/* 206 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 208 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 210 */ NdrFcShort( 0x0 ), /* 0 */
-/* 212 */ NdrFcShort( 0x0 ), /* 0 */
-/* 214 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowIndex */
-
-/* 216 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 218 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 220 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 222 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 224 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 226 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isSelected */
-
-/* 228 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 230 */ NdrFcLong( 0x0 ), /* 0 */
-/* 234 */ NdrFcShort( 0x9 ), /* 9 */
-/* 236 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 238 */ NdrFcShort( 0x0 ), /* 0 */
-/* 240 */ NdrFcShort( 0x21 ), /* 33 */
-/* 242 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 244 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 246 */ NdrFcShort( 0x0 ), /* 0 */
-/* 248 */ NdrFcShort( 0x0 ), /* 0 */
-/* 250 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter isSelected */
-
-/* 252 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 254 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 256 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 258 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 260 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowColumnExtents */
-
-/* 264 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 266 */ NdrFcLong( 0x0 ), /* 0 */
-/* 270 */ NdrFcShort( 0xa ), /* 10 */
-/* 272 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 274 */ NdrFcShort( 0x0 ), /* 0 */
-/* 276 */ NdrFcShort( 0x91 ), /* 145 */
-/* 278 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x6, /* 6 */
-/* 280 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 282 */ NdrFcShort( 0x0 ), /* 0 */
-/* 284 */ NdrFcShort( 0x0 ), /* 0 */
-/* 286 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 288 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 290 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 292 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 294 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 296 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 298 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowExtents */
-
-/* 300 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 302 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 304 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnExtents */
-
-/* 306 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 308 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 310 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 312 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 314 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 316 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 318 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 320 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 322 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_table */
-
-/* 324 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 326 */ NdrFcLong( 0x0 ), /* 0 */
-/* 330 */ NdrFcShort( 0xb ), /* 11 */
-/* 332 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 334 */ NdrFcShort( 0x0 ), /* 0 */
-/* 336 */ NdrFcShort( 0x8 ), /* 8 */
-/* 338 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 340 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 342 */ NdrFcShort( 0x0 ), /* 0 */
-/* 344 */ NdrFcShort( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter table */
-
-/* 348 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 350 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 352 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 354 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 356 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 358 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTableCell_MIDL_TYPE_FORMAT_STRING AccessibleTableCell__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 8 */ NdrFcShort( 0x2 ), /* Offset= 2 (10) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0x14 ), /* Offset= 20 (32) */
-/* 14 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 16 */ NdrFcLong( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-/* 24 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 26 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 28 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 30 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 32 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 34 */ NdrFcShort( 0x0 ), /* 0 */
-/* 36 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 38 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 40 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 42 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 46 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 48 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 50 */ NdrFcShort( 0xffdc ), /* Offset= -36 (14) */
-/* 52 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 54 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 56 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 58 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 60 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (14) */
-
- 0x0
- }
- };
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTableCell, ver. 0.0,
- GUID={0x594116B1,0xC99F,0x4847,{0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTableCell_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 78,
- 114,
- 150,
- 192,
- 228,
- 264,
- 324
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTableCell_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTableCell__MIDL_ProcFormatString.Format,
- &IAccessibleTableCell_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTableCell_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTableCell__MIDL_ProcFormatString.Format,
- &IAccessibleTableCell_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(12) _IAccessibleTableCellProxyVtbl =
-{
- &IAccessibleTableCell_ProxyInfo,
- &IID_IAccessibleTableCell,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnExtent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnHeaderCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_columnIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowExtent */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowHeaderCells */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_isSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_rowColumnExtents */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTableCell::get_table */
-};
-
-const CInterfaceStubVtbl _IAccessibleTableCellStubVtbl =
-{
- &IID_IAccessibleTableCell,
- &IAccessibleTableCell_ServerInfo,
- 12,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTableCell__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- 0,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTableCell_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTableCellProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTableCell_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTableCellStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTableCell_InterfaceNamesList[] =
-{
- "IAccessibleTableCell",
- 0
-};
-
-
-#define _AccessibleTableCell_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTableCell, pIID, n)
-
-int __stdcall _AccessibleTableCell_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTableCell_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTableCell_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTableCell_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTableCell_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTableCell_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTableCell_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_i.c
deleted file mode 100644
index 0fa33967ac..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleTable,0x35AD8070,0xC20C,0x4fb4,0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_p.c
deleted file mode 100644
index 9ec9ffdb46..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleTable_p.c
+++ /dev/null
@@ -1,1526 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:54 2012
- */
-/* Compiler settings for AccessibleTable.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleTable.h"
-
-#define TYPE_FORMAT_STRING_SIZE 139
-#define PROC_FORMAT_STRING_SIZE 1219
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleTable_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleTable_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleTable_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleTable_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleTable_MIDL_TYPE_FORMAT_STRING AccessibleTable__MIDL_TypeFormatString;
-extern const AccessibleTable_MIDL_PROC_FORMAT_STRING AccessibleTable__MIDL_ProcFormatString;
-extern const AccessibleTable_MIDL_EXPR_FORMAT_STRING AccessibleTable__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleTable_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleTable_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleTable_MIDL_PROC_FORMAT_STRING AccessibleTable__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_accessibleAt */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 24 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter accessible */
-
-/* 36 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 42 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 44 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 46 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caption */
-
-/* 48 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 50 */ NdrFcLong( 0x0 ), /* 0 */
-/* 54 */ NdrFcShort( 0x4 ), /* 4 */
-/* 56 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-/* 60 */ NdrFcShort( 0x8 ), /* 8 */
-/* 62 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 64 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 66 */ NdrFcShort( 0x0 ), /* 0 */
-/* 68 */ NdrFcShort( 0x0 ), /* 0 */
-/* 70 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 72 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 74 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 76 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 78 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 80 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_childIndex */
-
-/* 84 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 86 */ NdrFcLong( 0x0 ), /* 0 */
-/* 90 */ NdrFcShort( 0x5 ), /* 5 */
-/* 92 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 94 */ NdrFcShort( 0x10 ), /* 16 */
-/* 96 */ NdrFcShort( 0x24 ), /* 36 */
-/* 98 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 100 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 102 */ NdrFcShort( 0x0 ), /* 0 */
-/* 104 */ NdrFcShort( 0x0 ), /* 0 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowIndex */
-
-/* 108 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 110 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 112 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnIndex */
-
-/* 114 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 116 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 118 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter cellIndex */
-
-/* 120 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 122 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnDescription */
-
-/* 132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x6 ), /* 6 */
-/* 140 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 142 */ NdrFcShort( 0x8 ), /* 8 */
-/* 144 */ NdrFcShort( 0x8 ), /* 8 */
-/* 146 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 148 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 150 */ NdrFcShort( 0x1 ), /* 1 */
-/* 152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 154 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 156 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 158 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 162 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 164 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 166 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 168 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 170 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 172 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnExtentAt */
-
-/* 174 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 176 */ NdrFcLong( 0x0 ), /* 0 */
-/* 180 */ NdrFcShort( 0x7 ), /* 7 */
-/* 182 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 184 */ NdrFcShort( 0x10 ), /* 16 */
-/* 186 */ NdrFcShort( 0x24 ), /* 36 */
-/* 188 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 190 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 192 */ NdrFcShort( 0x0 ), /* 0 */
-/* 194 */ NdrFcShort( 0x0 ), /* 0 */
-/* 196 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 198 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 200 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 202 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 204 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 206 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 208 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nColumnsSpanned */
-
-/* 210 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 212 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 214 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 216 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 218 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 220 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnHeader */
-
-/* 222 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 224 */ NdrFcLong( 0x0 ), /* 0 */
-/* 228 */ NdrFcShort( 0x8 ), /* 8 */
-/* 230 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 232 */ NdrFcShort( 0x0 ), /* 0 */
-/* 234 */ NdrFcShort( 0x24 ), /* 36 */
-/* 236 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 238 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 240 */ NdrFcShort( 0x0 ), /* 0 */
-/* 242 */ NdrFcShort( 0x0 ), /* 0 */
-/* 244 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessibleTable */
-
-/* 246 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 248 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 250 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter startingRowIndex */
-
-/* 252 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 254 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 256 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 258 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 260 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_columnIndex */
-
-/* 264 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 266 */ NdrFcLong( 0x0 ), /* 0 */
-/* 270 */ NdrFcShort( 0x9 ), /* 9 */
-/* 272 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 274 */ NdrFcShort( 0x8 ), /* 8 */
-/* 276 */ NdrFcShort( 0x24 ), /* 36 */
-/* 278 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 280 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 282 */ NdrFcShort( 0x0 ), /* 0 */
-/* 284 */ NdrFcShort( 0x0 ), /* 0 */
-/* 286 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellIndex */
-
-/* 288 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 290 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 292 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnIndex */
-
-/* 294 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 296 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 298 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 300 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 302 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 304 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nColumns */
-
-/* 306 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 308 */ NdrFcLong( 0x0 ), /* 0 */
-/* 312 */ NdrFcShort( 0xa ), /* 10 */
-/* 314 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 316 */ NdrFcShort( 0x0 ), /* 0 */
-/* 318 */ NdrFcShort( 0x24 ), /* 36 */
-/* 320 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 322 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 324 */ NdrFcShort( 0x0 ), /* 0 */
-/* 326 */ NdrFcShort( 0x0 ), /* 0 */
-/* 328 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 330 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 332 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 334 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 336 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 338 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 340 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nRows */
-
-/* 342 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 344 */ NdrFcLong( 0x0 ), /* 0 */
-/* 348 */ NdrFcShort( 0xb ), /* 11 */
-/* 350 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 352 */ NdrFcShort( 0x0 ), /* 0 */
-/* 354 */ NdrFcShort( 0x24 ), /* 36 */
-/* 356 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 358 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 360 */ NdrFcShort( 0x0 ), /* 0 */
-/* 362 */ NdrFcShort( 0x0 ), /* 0 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 366 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 368 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 370 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 372 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 374 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 376 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedChildren */
-
-/* 378 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 380 */ NdrFcLong( 0x0 ), /* 0 */
-/* 384 */ NdrFcShort( 0xc ), /* 12 */
-/* 386 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 388 */ NdrFcShort( 0x0 ), /* 0 */
-/* 390 */ NdrFcShort( 0x24 ), /* 36 */
-/* 392 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 394 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 396 */ NdrFcShort( 0x0 ), /* 0 */
-/* 398 */ NdrFcShort( 0x0 ), /* 0 */
-/* 400 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellCount */
-
-/* 402 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 404 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 406 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 408 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 410 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 412 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedColumns */
-
-/* 414 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 416 */ NdrFcLong( 0x0 ), /* 0 */
-/* 420 */ NdrFcShort( 0xd ), /* 13 */
-/* 422 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 424 */ NdrFcShort( 0x0 ), /* 0 */
-/* 426 */ NdrFcShort( 0x24 ), /* 36 */
-/* 428 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 430 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 432 */ NdrFcShort( 0x0 ), /* 0 */
-/* 434 */ NdrFcShort( 0x0 ), /* 0 */
-/* 436 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter columnCount */
-
-/* 438 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 440 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 442 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 444 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 446 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 448 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelectedRows */
-
-/* 450 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 452 */ NdrFcLong( 0x0 ), /* 0 */
-/* 456 */ NdrFcShort( 0xe ), /* 14 */
-/* 458 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 460 */ NdrFcShort( 0x0 ), /* 0 */
-/* 462 */ NdrFcShort( 0x24 ), /* 36 */
-/* 464 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 466 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 468 */ NdrFcShort( 0x0 ), /* 0 */
-/* 470 */ NdrFcShort( 0x0 ), /* 0 */
-/* 472 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter rowCount */
-
-/* 474 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 476 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 478 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 480 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 482 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 484 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowDescription */
-
-/* 486 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 488 */ NdrFcLong( 0x0 ), /* 0 */
-/* 492 */ NdrFcShort( 0xf ), /* 15 */
-/* 494 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 496 */ NdrFcShort( 0x8 ), /* 8 */
-/* 498 */ NdrFcShort( 0x8 ), /* 8 */
-/* 500 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 502 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 504 */ NdrFcShort( 0x1 ), /* 1 */
-/* 506 */ NdrFcShort( 0x0 ), /* 0 */
-/* 508 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 510 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 512 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 514 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter description */
-
-/* 516 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 518 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 520 */ NdrFcShort( 0x3a ), /* Type Offset=58 */
-
- /* Return value */
-
-/* 522 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 524 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 526 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowExtentAt */
-
-/* 528 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 530 */ NdrFcLong( 0x0 ), /* 0 */
-/* 534 */ NdrFcShort( 0x10 ), /* 16 */
-/* 536 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 538 */ NdrFcShort( 0x10 ), /* 16 */
-/* 540 */ NdrFcShort( 0x24 ), /* 36 */
-/* 542 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 544 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 546 */ NdrFcShort( 0x0 ), /* 0 */
-/* 548 */ NdrFcShort( 0x0 ), /* 0 */
-/* 550 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 552 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 554 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 556 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 558 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 560 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 562 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter nRowsSpanned */
-
-/* 564 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 566 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 568 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 570 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 572 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 574 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowHeader */
-
-/* 576 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 578 */ NdrFcLong( 0x0 ), /* 0 */
-/* 582 */ NdrFcShort( 0x11 ), /* 17 */
-/* 584 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 586 */ NdrFcShort( 0x0 ), /* 0 */
-/* 588 */ NdrFcShort( 0x24 ), /* 36 */
-/* 590 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x3, /* 3 */
-/* 592 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 594 */ NdrFcShort( 0x0 ), /* 0 */
-/* 596 */ NdrFcShort( 0x0 ), /* 0 */
-/* 598 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessibleTable */
-
-/* 600 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 602 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 604 */ NdrFcShort( 0x44 ), /* Type Offset=68 */
-
- /* Parameter startingColumnIndex */
-
-/* 606 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 608 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 610 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 612 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 614 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 616 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowIndex */
-
-/* 618 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 620 */ NdrFcLong( 0x0 ), /* 0 */
-/* 624 */ NdrFcShort( 0x12 ), /* 18 */
-/* 626 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 628 */ NdrFcShort( 0x8 ), /* 8 */
-/* 630 */ NdrFcShort( 0x24 ), /* 36 */
-/* 632 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 634 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 636 */ NdrFcShort( 0x0 ), /* 0 */
-/* 638 */ NdrFcShort( 0x0 ), /* 0 */
-/* 640 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter cellIndex */
-
-/* 642 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 644 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 646 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowIndex */
-
-/* 648 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 650 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 652 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 654 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 656 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 658 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedChildren */
-
-/* 660 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 662 */ NdrFcLong( 0x0 ), /* 0 */
-/* 666 */ NdrFcShort( 0x13 ), /* 19 */
-/* 668 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 670 */ NdrFcShort( 0x8 ), /* 8 */
-/* 672 */ NdrFcShort( 0x24 ), /* 36 */
-/* 674 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 676 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 678 */ NdrFcShort( 0x1 ), /* 1 */
-/* 680 */ NdrFcShort( 0x0 ), /* 0 */
-/* 682 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxChildren */
-
-/* 684 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 686 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 688 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter children */
-
-/* 690 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 692 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 694 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nChildren */
-
-/* 696 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 698 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 700 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 702 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 704 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 706 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedColumns */
-
-/* 708 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 710 */ NdrFcLong( 0x0 ), /* 0 */
-/* 714 */ NdrFcShort( 0x14 ), /* 20 */
-/* 716 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 718 */ NdrFcShort( 0x8 ), /* 8 */
-/* 720 */ NdrFcShort( 0x24 ), /* 36 */
-/* 722 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 724 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 726 */ NdrFcShort( 0x1 ), /* 1 */
-/* 728 */ NdrFcShort( 0x0 ), /* 0 */
-/* 730 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxColumns */
-
-/* 732 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 734 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 736 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columns */
-
-/* 738 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 740 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 742 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nColumns */
-
-/* 744 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 746 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 748 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 750 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 752 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 754 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selectedRows */
-
-/* 756 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 758 */ NdrFcLong( 0x0 ), /* 0 */
-/* 762 */ NdrFcShort( 0x15 ), /* 21 */
-/* 764 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 766 */ NdrFcShort( 0x8 ), /* 8 */
-/* 768 */ NdrFcShort( 0x24 ), /* 36 */
-/* 770 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 772 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 774 */ NdrFcShort( 0x1 ), /* 1 */
-/* 776 */ NdrFcShort( 0x0 ), /* 0 */
-/* 778 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maxRows */
-
-/* 780 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 782 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 784 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rows */
-
-/* 786 */ NdrFcShort( 0x2013 ), /* Flags: must size, must free, out, srv alloc size=8 */
-/* 788 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 790 */ NdrFcShort( 0x5a ), /* Type Offset=90 */
-
- /* Parameter nRows */
-
-/* 792 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 794 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 796 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 798 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 800 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 802 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_summary */
-
-/* 804 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 806 */ NdrFcLong( 0x0 ), /* 0 */
-/* 810 */ NdrFcShort( 0x16 ), /* 22 */
-/* 812 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 814 */ NdrFcShort( 0x0 ), /* 0 */
-/* 816 */ NdrFcShort( 0x8 ), /* 8 */
-/* 818 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 820 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 822 */ NdrFcShort( 0x0 ), /* 0 */
-/* 824 */ NdrFcShort( 0x0 ), /* 0 */
-/* 826 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter accessible */
-
-/* 828 */ NdrFcShort( 0x13 ), /* Flags: must size, must free, out, */
-/* 830 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 832 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
-
- /* Return value */
-
-/* 834 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 836 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 838 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isColumnSelected */
-
-/* 840 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 842 */ NdrFcLong( 0x0 ), /* 0 */
-/* 846 */ NdrFcShort( 0x17 ), /* 23 */
-/* 848 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 850 */ NdrFcShort( 0x8 ), /* 8 */
-/* 852 */ NdrFcShort( 0x21 ), /* 33 */
-/* 854 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 856 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 858 */ NdrFcShort( 0x0 ), /* 0 */
-/* 860 */ NdrFcShort( 0x0 ), /* 0 */
-/* 862 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 864 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 866 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 868 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 870 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 872 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 874 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 876 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 878 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 880 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isRowSelected */
-
-/* 882 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 884 */ NdrFcLong( 0x0 ), /* 0 */
-/* 888 */ NdrFcShort( 0x18 ), /* 24 */
-/* 890 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 892 */ NdrFcShort( 0x8 ), /* 8 */
-/* 894 */ NdrFcShort( 0x21 ), /* 33 */
-/* 896 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 898 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 900 */ NdrFcShort( 0x0 ), /* 0 */
-/* 902 */ NdrFcShort( 0x0 ), /* 0 */
-/* 904 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 906 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 908 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 910 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 912 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 914 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 916 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 918 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 920 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 922 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_isSelected */
-
-/* 924 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 926 */ NdrFcLong( 0x0 ), /* 0 */
-/* 930 */ NdrFcShort( 0x19 ), /* 25 */
-/* 932 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 934 */ NdrFcShort( 0x10 ), /* 16 */
-/* 936 */ NdrFcShort( 0x21 ), /* 33 */
-/* 938 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 940 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 942 */ NdrFcShort( 0x0 ), /* 0 */
-/* 944 */ NdrFcShort( 0x0 ), /* 0 */
-/* 946 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 948 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 950 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 952 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 954 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 956 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 958 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 960 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 962 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 964 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 966 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 968 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 970 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectRow */
-
-/* 972 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 974 */ NdrFcLong( 0x0 ), /* 0 */
-/* 978 */ NdrFcShort( 0x1a ), /* 26 */
-/* 980 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 982 */ NdrFcShort( 0x8 ), /* 8 */
-/* 984 */ NdrFcShort( 0x8 ), /* 8 */
-/* 986 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 988 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 990 */ NdrFcShort( 0x0 ), /* 0 */
-/* 992 */ NdrFcShort( 0x0 ), /* 0 */
-/* 994 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 996 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 998 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1000 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1002 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1004 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1006 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure selectColumn */
-
-/* 1008 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1010 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1014 */ NdrFcShort( 0x1b ), /* 27 */
-/* 1016 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 1018 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1020 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1022 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1024 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1026 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1028 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1030 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 1032 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1034 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1036 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1038 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1040 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1042 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectRow */
-
-/* 1044 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1046 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1050 */ NdrFcShort( 0x1c ), /* 28 */
-/* 1052 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 1054 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1056 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1058 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1060 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1062 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1064 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1066 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter row */
-
-/* 1068 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1070 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1072 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1074 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1076 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1078 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure unselectColumn */
-
-/* 1080 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1082 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1086 */ NdrFcShort( 0x1d ), /* 29 */
-/* 1088 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 1090 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1092 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1094 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 1096 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1098 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1100 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1102 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter column */
-
-/* 1104 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1106 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1108 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1110 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1112 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1114 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_rowColumnExtentsAtIndex */
-
-/* 1116 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1118 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1122 */ NdrFcShort( 0x1e ), /* 30 */
-/* 1124 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */
-/* 1126 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1128 */ NdrFcShort( 0x91 ), /* 145 */
-/* 1130 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x7, /* 7 */
-/* 1132 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1134 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1136 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1138 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter index */
-
-/* 1140 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 1142 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1144 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter row */
-
-/* 1146 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1148 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1150 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter column */
-
-/* 1152 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1154 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 1156 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter rowExtents */
-
-/* 1158 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1160 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 1162 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter columnExtents */
-
-/* 1164 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1166 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 1168 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter isSelected */
-
-/* 1170 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 1172 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 1174 */ 0x3, /* FC_SMALL */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 1176 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1178 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 1180 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_modelChange */
-
-/* 1182 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 1184 */ NdrFcLong( 0x0 ), /* 0 */
-/* 1188 */ NdrFcShort( 0x1f ), /* 31 */
-/* 1190 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 1192 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1194 */ NdrFcShort( 0x8 ), /* 8 */
-/* 1196 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 1198 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 1200 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1202 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1204 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter modelChange */
-
-/* 1206 */ NdrFcShort( 0x6113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=24 */
-/* 1208 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 1210 */ NdrFcShort( 0x7c ), /* Type Offset=124 */
-
- /* Return value */
-
-/* 1212 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 1214 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 1216 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleTable_MIDL_TYPE_FORMAT_STRING AccessibleTable__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
-/* 6 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 8 */ NdrFcLong( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x0 ), /* 0 */
-/* 14 */ NdrFcShort( 0x0 ), /* 0 */
-/* 16 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 18 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 20 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 22 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 24 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 26 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 28 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 30 */ NdrFcShort( 0x1c ), /* Offset= 28 (58) */
-/* 32 */
- 0x13, 0x0, /* FC_OP */
-/* 34 */ NdrFcShort( 0xe ), /* Offset= 14 (48) */
-/* 36 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 38 */ NdrFcShort( 0x2 ), /* 2 */
-/* 40 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 42 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 44 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 46 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 48 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 50 */ NdrFcShort( 0x8 ), /* 8 */
-/* 52 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (36) */
-/* 54 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 56 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 58 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 60 */ NdrFcShort( 0x0 ), /* 0 */
-/* 62 */ NdrFcShort( 0x4 ), /* 4 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-/* 66 */ NdrFcShort( 0xffde ), /* Offset= -34 (32) */
-/* 68 */
- 0x11, 0x10, /* FC_RP [pointer_deref] */
-/* 70 */ NdrFcShort( 0x2 ), /* Offset= 2 (72) */
-/* 72 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 74 */ NdrFcLong( 0x35ad8070 ), /* 900563056 */
-/* 78 */ NdrFcShort( 0xc20c ), /* -15860 */
-/* 80 */ NdrFcShort( 0x4fb4 ), /* 20404 */
-/* 82 */ 0xb0, /* 176 */
- 0x94, /* 148 */
-/* 84 */ 0xf4, /* 244 */
- 0xf7, /* 247 */
-/* 86 */ 0x27, /* 39 */
- 0x5d, /* 93 */
-/* 88 */ 0xd4, /* 212 */
- 0x69, /* 105 */
-/* 90 */
- 0x11, 0x14, /* FC_RP [alloced_on_stack] [pointer_deref] */
-/* 92 */ NdrFcShort( 0x2 ), /* Offset= 2 (94) */
-/* 94 */
- 0x13, 0x0, /* FC_OP */
-/* 96 */ NdrFcShort( 0x2 ), /* Offset= 2 (98) */
-/* 98 */
- 0x1c, /* FC_CVARRAY */
- 0x3, /* 3 */
-/* 100 */ NdrFcShort( 0x4 ), /* 4 */
-/* 102 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x0, /* */
-/* 104 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 106 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 108 */ 0x28, /* Corr desc: parameter, FC_LONG */
- 0x54, /* FC_DEREFERENCE */
-/* 110 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 112 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 114 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 116 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 118 */ 0x3, /* FC_SMALL */
- 0x5c, /* FC_PAD */
-/* 120 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 122 */ NdrFcShort( 0x2 ), /* Offset= 2 (124) */
-/* 124 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 126 */ NdrFcShort( 0x14 ), /* 20 */
-/* 128 */ NdrFcShort( 0x0 ), /* 0 */
-/* 130 */ NdrFcShort( 0x0 ), /* Offset= 0 (130) */
-/* 132 */ 0xd, /* FC_ENUM16 */
- 0x8, /* FC_LONG */
-/* 134 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 136 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleTable, ver. 0.0,
- GUID={0x35AD8070,0xC20C,0x4fb4,{0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleTable_FormatStringOffsetTable[] =
- {
- 0,
- 48,
- 84,
- 132,
- 174,
- 222,
- 264,
- 306,
- 342,
- 378,
- 414,
- 450,
- 486,
- 528,
- 576,
- 618,
- 660,
- 708,
- 756,
- 804,
- 840,
- 882,
- 924,
- 972,
- 1008,
- 1044,
- 1080,
- 1116,
- 1182
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleTable_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleTable__MIDL_ProcFormatString.Format,
- &IAccessibleTable_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleTable_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleTable__MIDL_ProcFormatString.Format,
- &IAccessibleTable_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(32) _IAccessibleTableProxyVtbl =
-{
- &IAccessibleTable_ProxyInfo,
- &IID_IAccessibleTable,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_accessibleAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_caption */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_childIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnExtentAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnHeader */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_columnIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedChildren */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_nSelectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowDescription */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowExtentAt */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowHeader */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedChildren */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedColumns */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_selectedRows */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_summary */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isColumnSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isRowSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_isSelected */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::selectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::selectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::unselectRow */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::unselectColumn */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_rowColumnExtentsAtIndex */ ,
- (void *) (INT_PTR) -1 /* IAccessibleTable::get_modelChange */
-};
-
-const CInterfaceStubVtbl _IAccessibleTableStubVtbl =
-{
- &IID_IAccessibleTable,
- &IAccessibleTable_ServerInfo,
- 32,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleTable__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleTable_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTableProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleTable_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTableStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleTable_InterfaceNamesList[] =
-{
- "IAccessibleTable",
- 0
-};
-
-
-#define _AccessibleTable_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleTable, pIID, n)
-
-int __stdcall _AccessibleTable_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleTable_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleTable_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleTable_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleTable_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleTable_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleTable_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleText.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleText.h
deleted file mode 100644
index 4ad53cfa7e..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleText.h
+++ /dev/null
@@ -1,435 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleText_h__
-#define __AccessibleText_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleText_FWD_DEFINED__
-#define __IAccessibleText_FWD_DEFINED__
-typedef interface IAccessibleText IAccessibleText;
-#endif /* __IAccessibleText_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-#include "IA2CommonTypes.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_AccessibleText_0000_0000 */
-/* [local] */
-
-typedef struct IA2TextSegment
- {
- BSTR text;
- long start;
- long end;
- } IA2TextSegment;
-
-
-enum IA2TextBoundaryType
- { IA2_TEXT_BOUNDARY_CHAR = 0,
- IA2_TEXT_BOUNDARY_WORD = ( IA2_TEXT_BOUNDARY_CHAR + 1 ) ,
- IA2_TEXT_BOUNDARY_SENTENCE = ( IA2_TEXT_BOUNDARY_WORD + 1 ) ,
- IA2_TEXT_BOUNDARY_PARAGRAPH = ( IA2_TEXT_BOUNDARY_SENTENCE + 1 ) ,
- IA2_TEXT_BOUNDARY_LINE = ( IA2_TEXT_BOUNDARY_PARAGRAPH + 1 ) ,
- IA2_TEXT_BOUNDARY_ALL = ( IA2_TEXT_BOUNDARY_LINE + 1 )
- } ;
-
-
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleText_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_AccessibleText_0000_0000_v0_0_s_ifspec;
-
-#ifndef __IAccessibleText_INTERFACE_DEFINED__
-#define __IAccessibleText_INTERFACE_DEFINED__
-
-/* interface IAccessibleText */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleText;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B")
- IAccessibleText : public IUnknown
- {
- public:
- virtual HRESULT STDMETHODCALLTYPE addSelection(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
- /* [retval][out] */ long *offset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
- /* [retval][out] */ long *nSelections) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE removeSelection(
- /* [in] */ long selectionIndex) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
- /* [in] */ long offset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setSelection(
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
- /* [retval][out] */ long *nCharacters) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
- /* [retval][out] */ IA2TextSegment *newText) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
- /* [retval][out] */ IA2TextSegment *oldText) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleTextVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleText * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleText * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleText * This);
-
- HRESULT ( STDMETHODCALLTYPE *addSelection )(
- IAccessibleText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *textAttributes);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
- IAccessibleText * This,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [out] */ long *x,
- /* [out] */ long *y,
- /* [out] */ long *width,
- /* [retval][out] */ long *height);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
- IAccessibleText * This,
- /* [retval][out] */ long *nSelections);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
- IAccessibleText * This,
- /* [in] */ long x,
- /* [in] */ long y,
- /* [in] */ enum IA2CoordinateType coordType,
- /* [retval][out] */ long *offset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex,
- /* [out] */ long *startOffset,
- /* [retval][out] */ long *endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
- IAccessibleText * This,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
- IAccessibleText * This,
- /* [in] */ long offset,
- /* [in] */ enum IA2TextBoundaryType boundaryType,
- /* [out] */ long *startOffset,
- /* [out] */ long *endOffset,
- /* [retval][out] */ BSTR *text);
-
- HRESULT ( STDMETHODCALLTYPE *removeSelection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex);
-
- HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
- IAccessibleText * This,
- /* [in] */ long offset);
-
- HRESULT ( STDMETHODCALLTYPE *setSelection )(
- IAccessibleText * This,
- /* [in] */ long selectionIndex,
- /* [in] */ long startOffset,
- /* [in] */ long endOffset);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
- IAccessibleText * This,
- /* [retval][out] */ long *nCharacters);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
- IAccessibleText * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2ScrollType scrollType);
-
- HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
- IAccessibleText * This,
- /* [in] */ long startIndex,
- /* [in] */ long endIndex,
- /* [in] */ enum IA2CoordinateType coordinateType,
- /* [in] */ long x,
- /* [in] */ long y);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
- IAccessibleText * This,
- /* [retval][out] */ IA2TextSegment *newText);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
- IAccessibleText * This,
- /* [retval][out] */ IA2TextSegment *oldText);
-
- END_INTERFACE
- } IAccessibleTextVtbl;
-
- interface IAccessibleText
- {
- CONST_VTBL struct IAccessibleTextVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleText_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleText_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleText_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleText_addSelection(This,startOffset,endOffset) \
- ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
-
-#define IAccessibleText_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
- ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
-
-#define IAccessibleText_get_caretOffset(This,offset) \
- ( (This)->lpVtbl -> get_caretOffset(This,offset) )
-
-#define IAccessibleText_get_characterExtents(This,offset,coordType,x,y,width,height) \
- ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
-
-#define IAccessibleText_get_nSelections(This,nSelections) \
- ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
-
-#define IAccessibleText_get_offsetAtPoint(This,x,y,coordType,offset) \
- ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
-
-#define IAccessibleText_get_selection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleText_get_text(This,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
- ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
-
-#define IAccessibleText_removeSelection(This,selectionIndex) \
- ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
-
-#define IAccessibleText_setCaretOffset(This,offset) \
- ( (This)->lpVtbl -> setCaretOffset(This,offset) )
-
-#define IAccessibleText_setSelection(This,selectionIndex,startOffset,endOffset) \
- ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
-
-#define IAccessibleText_get_nCharacters(This,nCharacters) \
- ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
-
-#define IAccessibleText_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
- ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
-
-#define IAccessibleText_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
- ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
-
-#define IAccessibleText_get_newText(This,newText) \
- ( (This)->lpVtbl -> get_newText(This,newText) )
-
-#define IAccessibleText_get_oldText(This,oldText) \
- ( (This)->lpVtbl -> get_oldText(This,oldText) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleText_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
-unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
-unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
-void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleText_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleText_i.c
deleted file mode 100644
index bfa9e763c1..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleText_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleText,0x24FD2FFB,0x3AAD,0x4a08,0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleText_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleText_p.c
deleted file mode 100644
index ea56621c62..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleText_p.c
+++ /dev/null
@@ -1,1196 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleText.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleText.h"
-
-#define TYPE_FORMAT_STRING_SIZE 67
-#define PROC_FORMAT_STRING_SIZE 901
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleText_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleText_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleText_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleText_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleText_MIDL_TYPE_FORMAT_STRING AccessibleText__MIDL_TypeFormatString;
-extern const AccessibleText_MIDL_PROC_FORMAT_STRING AccessibleText__MIDL_ProcFormatString;
-extern const AccessibleText_MIDL_EXPR_FORMAT_STRING AccessibleText__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleText_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleText_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleText_MIDL_PROC_FORMAT_STRING AccessibleText__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure addSelection */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 10 */ NdrFcShort( 0x10 ), /* 16 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x3, /* 3 */
-/* 16 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 18 */ NdrFcShort( 0x0 ), /* 0 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 24 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 30 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 36 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 38 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 40 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_attributes */
-
-/* 42 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 44 */ NdrFcLong( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x4 ), /* 4 */
-/* 50 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 52 */ NdrFcShort( 0x8 ), /* 8 */
-/* 54 */ NdrFcShort( 0x40 ), /* 64 */
-/* 56 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x5, /* 5 */
-/* 58 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 60 */ NdrFcShort( 0x1 ), /* 1 */
-/* 62 */ NdrFcShort( 0x0 ), /* 0 */
-/* 64 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 66 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 68 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 72 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 74 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 76 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 78 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter textAttributes */
-
-/* 84 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 86 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 88 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 90 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 92 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 94 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_caretOffset */
-
-/* 96 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 98 */ NdrFcLong( 0x0 ), /* 0 */
-/* 102 */ NdrFcShort( 0x5 ), /* 5 */
-/* 104 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 106 */ NdrFcShort( 0x0 ), /* 0 */
-/* 108 */ NdrFcShort( 0x24 ), /* 36 */
-/* 110 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 112 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 114 */ NdrFcShort( 0x0 ), /* 0 */
-/* 116 */ NdrFcShort( 0x0 ), /* 0 */
-/* 118 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 120 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 122 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 124 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 126 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 128 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 130 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_characterExtents */
-
-/* 132 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 134 */ NdrFcLong( 0x0 ), /* 0 */
-/* 138 */ NdrFcShort( 0x6 ), /* 6 */
-/* 140 */ NdrFcShort( 0x20 ), /* x86 Stack size/offset = 32 */
-/* 142 */ NdrFcShort( 0xe ), /* 14 */
-/* 144 */ NdrFcShort( 0x78 ), /* 120 */
-/* 146 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x7, /* 7 */
-/* 148 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 150 */ NdrFcShort( 0x0 ), /* 0 */
-/* 152 */ NdrFcShort( 0x0 ), /* 0 */
-/* 154 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 156 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 158 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 160 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordType */
-
-/* 162 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 164 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 166 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 168 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 170 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 172 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 174 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 176 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 178 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter width */
-
-/* 180 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 182 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 184 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter height */
-
-/* 186 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 188 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 190 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 192 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 194 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 196 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nSelections */
-
-/* 198 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 200 */ NdrFcLong( 0x0 ), /* 0 */
-/* 204 */ NdrFcShort( 0x7 ), /* 7 */
-/* 206 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 208 */ NdrFcShort( 0x0 ), /* 0 */
-/* 210 */ NdrFcShort( 0x24 ), /* 36 */
-/* 212 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 214 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 216 */ NdrFcShort( 0x0 ), /* 0 */
-/* 218 */ NdrFcShort( 0x0 ), /* 0 */
-/* 220 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nSelections */
-
-/* 222 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 224 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 226 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 228 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 230 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 232 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_offsetAtPoint */
-
-/* 234 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 236 */ NdrFcLong( 0x0 ), /* 0 */
-/* 240 */ NdrFcShort( 0x8 ), /* 8 */
-/* 242 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 244 */ NdrFcShort( 0x16 ), /* 22 */
-/* 246 */ NdrFcShort( 0x24 ), /* 36 */
-/* 248 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x5, /* 5 */
-/* 250 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 252 */ NdrFcShort( 0x0 ), /* 0 */
-/* 254 */ NdrFcShort( 0x0 ), /* 0 */
-/* 256 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter x */
-
-/* 258 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 260 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 262 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 264 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 266 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 268 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordType */
-
-/* 270 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 272 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 274 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter offset */
-
-/* 276 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 278 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 280 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 282 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 284 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 286 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_selection */
-
-/* 288 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 290 */ NdrFcLong( 0x0 ), /* 0 */
-/* 294 */ NdrFcShort( 0x9 ), /* 9 */
-/* 296 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 298 */ NdrFcShort( 0x8 ), /* 8 */
-/* 300 */ NdrFcShort( 0x40 ), /* 64 */
-/* 302 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 304 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 306 */ NdrFcShort( 0x0 ), /* 0 */
-/* 308 */ NdrFcShort( 0x0 ), /* 0 */
-/* 310 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 312 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 314 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 316 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 318 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 320 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 322 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 324 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 326 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 328 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 330 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 332 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 334 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_text */
-
-/* 336 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 338 */ NdrFcLong( 0x0 ), /* 0 */
-/* 342 */ NdrFcShort( 0xa ), /* 10 */
-/* 344 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 346 */ NdrFcShort( 0x10 ), /* 16 */
-/* 348 */ NdrFcShort( 0x8 ), /* 8 */
-/* 350 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x4, /* 4 */
-/* 352 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 354 */ NdrFcShort( 0x1 ), /* 1 */
-/* 356 */ NdrFcShort( 0x0 ), /* 0 */
-/* 358 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startOffset */
-
-/* 360 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 362 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 364 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 366 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 368 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 370 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 372 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 374 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 376 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 378 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 380 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 382 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textBeforeOffset */
-
-/* 384 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 386 */ NdrFcLong( 0x0 ), /* 0 */
-/* 390 */ NdrFcShort( 0xb ), /* 11 */
-/* 392 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 394 */ NdrFcShort( 0xe ), /* 14 */
-/* 396 */ NdrFcShort( 0x40 ), /* 64 */
-/* 398 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 400 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 402 */ NdrFcShort( 0x1 ), /* 1 */
-/* 404 */ NdrFcShort( 0x0 ), /* 0 */
-/* 406 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 408 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 410 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 412 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 414 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 416 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 418 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 420 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 422 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 424 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 426 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 428 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 430 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 432 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 434 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 436 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 438 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 440 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 442 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textAfterOffset */
-
-/* 444 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 446 */ NdrFcLong( 0x0 ), /* 0 */
-/* 450 */ NdrFcShort( 0xc ), /* 12 */
-/* 452 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 454 */ NdrFcShort( 0xe ), /* 14 */
-/* 456 */ NdrFcShort( 0x40 ), /* 64 */
-/* 458 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 460 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 462 */ NdrFcShort( 0x1 ), /* 1 */
-/* 464 */ NdrFcShort( 0x0 ), /* 0 */
-/* 466 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 468 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 470 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 472 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 474 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 476 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 478 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 480 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 482 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 484 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 486 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 488 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 490 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 492 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 494 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 496 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 498 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 500 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 502 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_textAtOffset */
-
-/* 504 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 506 */ NdrFcLong( 0x0 ), /* 0 */
-/* 510 */ NdrFcShort( 0xd ), /* 13 */
-/* 512 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 514 */ NdrFcShort( 0xe ), /* 14 */
-/* 516 */ NdrFcShort( 0x40 ), /* 64 */
-/* 518 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x6, /* 6 */
-/* 520 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 522 */ NdrFcShort( 0x1 ), /* 1 */
-/* 524 */ NdrFcShort( 0x0 ), /* 0 */
-/* 526 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 528 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 530 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 532 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter boundaryType */
-
-/* 534 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 536 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 538 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 540 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 542 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 544 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 546 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 548 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 550 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter text */
-
-/* 552 */ NdrFcShort( 0x2113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=8 */
-/* 554 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 556 */ NdrFcShort( 0x24 ), /* Type Offset=36 */
-
- /* Return value */
-
-/* 558 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 560 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 562 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure removeSelection */
-
-/* 564 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 566 */ NdrFcLong( 0x0 ), /* 0 */
-/* 570 */ NdrFcShort( 0xe ), /* 14 */
-/* 572 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 574 */ NdrFcShort( 0x8 ), /* 8 */
-/* 576 */ NdrFcShort( 0x8 ), /* 8 */
-/* 578 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 580 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 582 */ NdrFcShort( 0x0 ), /* 0 */
-/* 584 */ NdrFcShort( 0x0 ), /* 0 */
-/* 586 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 588 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 590 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 592 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 594 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 596 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 598 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setCaretOffset */
-
-/* 600 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 602 */ NdrFcLong( 0x0 ), /* 0 */
-/* 606 */ NdrFcShort( 0xf ), /* 15 */
-/* 608 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 610 */ NdrFcShort( 0x8 ), /* 8 */
-/* 612 */ NdrFcShort( 0x8 ), /* 8 */
-/* 614 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 616 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 618 */ NdrFcShort( 0x0 ), /* 0 */
-/* 620 */ NdrFcShort( 0x0 ), /* 0 */
-/* 622 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter offset */
-
-/* 624 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 626 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 628 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 630 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 632 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 634 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setSelection */
-
-/* 636 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 638 */ NdrFcLong( 0x0 ), /* 0 */
-/* 642 */ NdrFcShort( 0x10 ), /* 16 */
-/* 644 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 646 */ NdrFcShort( 0x18 ), /* 24 */
-/* 648 */ NdrFcShort( 0x8 ), /* 8 */
-/* 650 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 652 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 654 */ NdrFcShort( 0x0 ), /* 0 */
-/* 656 */ NdrFcShort( 0x0 ), /* 0 */
-/* 658 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter selectionIndex */
-
-/* 660 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 662 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 664 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter startOffset */
-
-/* 666 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 668 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 670 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endOffset */
-
-/* 672 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 674 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 676 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 678 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 680 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 682 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_nCharacters */
-
-/* 684 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 686 */ NdrFcLong( 0x0 ), /* 0 */
-/* 690 */ NdrFcShort( 0x11 ), /* 17 */
-/* 692 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 694 */ NdrFcShort( 0x0 ), /* 0 */
-/* 696 */ NdrFcShort( 0x24 ), /* 36 */
-/* 698 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x2, /* 2 */
-/* 700 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 702 */ NdrFcShort( 0x0 ), /* 0 */
-/* 704 */ NdrFcShort( 0x0 ), /* 0 */
-/* 706 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter nCharacters */
-
-/* 708 */ NdrFcShort( 0x2150 ), /* Flags: out, base type, simple ref, srv alloc size=8 */
-/* 710 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 712 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 714 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 716 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 718 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollSubstringTo */
-
-/* 720 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 722 */ NdrFcLong( 0x0 ), /* 0 */
-/* 726 */ NdrFcShort( 0x12 ), /* 18 */
-/* 728 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 730 */ NdrFcShort( 0x16 ), /* 22 */
-/* 732 */ NdrFcShort( 0x8 ), /* 8 */
-/* 734 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x4, /* 4 */
-/* 736 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 738 */ NdrFcShort( 0x0 ), /* 0 */
-/* 740 */ NdrFcShort( 0x0 ), /* 0 */
-/* 742 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startIndex */
-
-/* 744 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 746 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 748 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endIndex */
-
-/* 750 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 752 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 754 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter scrollType */
-
-/* 756 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 758 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 760 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 762 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 764 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 766 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure scrollSubstringToPoint */
-
-/* 768 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 770 */ NdrFcLong( 0x0 ), /* 0 */
-/* 774 */ NdrFcShort( 0x13 ), /* 19 */
-/* 776 */ NdrFcShort( 0x1c ), /* x86 Stack size/offset = 28 */
-/* 778 */ NdrFcShort( 0x26 ), /* 38 */
-/* 780 */ NdrFcShort( 0x8 ), /* 8 */
-/* 782 */ 0x44, /* Oi2 Flags: has return, has ext, */
- 0x6, /* 6 */
-/* 784 */ 0x8, /* 8 */
- 0x1, /* Ext Flags: new corr desc, */
-/* 786 */ NdrFcShort( 0x0 ), /* 0 */
-/* 788 */ NdrFcShort( 0x0 ), /* 0 */
-/* 790 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter startIndex */
-
-/* 792 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 794 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 796 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter endIndex */
-
-/* 798 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 800 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 802 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter coordinateType */
-
-/* 804 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 806 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 808 */ 0xd, /* FC_ENUM16 */
- 0x0, /* 0 */
-
- /* Parameter x */
-
-/* 810 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 812 */ NdrFcShort( 0x10 ), /* x86 Stack size/offset = 16 */
-/* 814 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Parameter y */
-
-/* 816 */ NdrFcShort( 0x48 ), /* Flags: in, base type, */
-/* 818 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 820 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Return value */
-
-/* 822 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 824 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 826 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_newText */
-
-/* 828 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 830 */ NdrFcLong( 0x0 ), /* 0 */
-/* 834 */ NdrFcShort( 0x14 ), /* 20 */
-/* 836 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 838 */ NdrFcShort( 0x0 ), /* 0 */
-/* 840 */ NdrFcShort( 0x8 ), /* 8 */
-/* 842 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 844 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 846 */ NdrFcShort( 0x1 ), /* 1 */
-/* 848 */ NdrFcShort( 0x0 ), /* 0 */
-/* 850 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter newText */
-
-/* 852 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 854 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 856 */ NdrFcShort( 0x32 ), /* Type Offset=50 */
-
- /* Return value */
-
-/* 858 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 860 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 862 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_oldText */
-
-/* 864 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 866 */ NdrFcLong( 0x0 ), /* 0 */
-/* 870 */ NdrFcShort( 0x15 ), /* 21 */
-/* 872 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 874 */ NdrFcShort( 0x0 ), /* 0 */
-/* 876 */ NdrFcShort( 0x8 ), /* 8 */
-/* 878 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 880 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 882 */ NdrFcShort( 0x1 ), /* 1 */
-/* 884 */ NdrFcShort( 0x0 ), /* 0 */
-/* 886 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter oldText */
-
-/* 888 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 890 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 892 */ NdrFcShort( 0x32 ), /* Type Offset=50 */
-
- /* Return value */
-
-/* 894 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 896 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 898 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleText_MIDL_TYPE_FORMAT_STRING AccessibleText__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0xc, /* FC_RP [alloced_on_stack] [simple_pointer] */
-/* 4 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 6 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 8 */ NdrFcShort( 0x1c ), /* Offset= 28 (36) */
-/* 10 */
- 0x13, 0x0, /* FC_OP */
-/* 12 */ NdrFcShort( 0xe ), /* Offset= 14 (26) */
-/* 14 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 16 */ NdrFcShort( 0x2 ), /* 2 */
-/* 18 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 20 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 22 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 24 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 26 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 28 */ NdrFcShort( 0x8 ), /* 8 */
-/* 30 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (14) */
-/* 32 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 34 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 36 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 38 */ NdrFcShort( 0x0 ), /* 0 */
-/* 40 */ NdrFcShort( 0x4 ), /* 4 */
-/* 42 */ NdrFcShort( 0x0 ), /* 0 */
-/* 44 */ NdrFcShort( 0xffde ), /* Offset= -34 (10) */
-/* 46 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 48 */ NdrFcShort( 0x2 ), /* Offset= 2 (50) */
-/* 50 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 52 */ NdrFcShort( 0xc ), /* 12 */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x0 ), /* Offset= 0 (56) */
-/* 58 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 60 */ NdrFcShort( 0xffe8 ), /* Offset= -24 (36) */
-/* 62 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 64 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- BSTR_UserSize
- ,BSTR_UserMarshal
- ,BSTR_UserUnmarshal
- ,BSTR_UserFree
- }
-
- };
-
-
-
-/* Standard interface: __MIDL_itf_AccessibleText_0000_0000, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}} */
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleText, ver. 0.0,
- GUID={0x24FD2FFB,0x3AAD,0x4a08,{0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleText_FormatStringOffsetTable[] =
- {
- 0,
- 42,
- 96,
- 132,
- 198,
- 234,
- 288,
- 336,
- 384,
- 444,
- 504,
- 564,
- 600,
- 636,
- 684,
- 720,
- 768,
- 828,
- 864
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleText_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleText__MIDL_ProcFormatString.Format,
- &IAccessibleText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleText_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleText__MIDL_ProcFormatString.Format,
- &IAccessibleText_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(22) _IAccessibleTextProxyVtbl =
-{
- &IAccessibleText_ProxyInfo,
- &IID_IAccessibleText,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleText::addSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_attributes */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_caretOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_characterExtents */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_nSelections */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_offsetAtPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_selection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_text */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textBeforeOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textAfterOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_textAtOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::removeSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::setCaretOffset */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::setSelection */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_nCharacters */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::scrollSubstringTo */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::scrollSubstringToPoint */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_newText */ ,
- (void *) (INT_PTR) -1 /* IAccessibleText::get_oldText */
-};
-
-const CInterfaceStubVtbl _IAccessibleTextStubVtbl =
-{
- &IID_IAccessibleText,
- &IAccessibleText_ServerInfo,
- 22,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleText__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleText_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleTextProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleText_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleTextStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleText_InterfaceNamesList[] =
-{
- "IAccessibleText",
- 0
-};
-
-
-#define _AccessibleText_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleText, pIID, n)
-
-int __stdcall _AccessibleText_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleText_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleText_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleText_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleText_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleText_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleText_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue.h b/src/3rdparty/iaccessible2/generated/x86/AccessibleValue.h
deleted file mode 100644
index 6ef70c261f..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue.h
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-#ifndef COM_NO_WINDOWS_H
-#include "windows.h"
-#include "ole2.h"
-#endif /*COM_NO_WINDOWS_H*/
-
-#ifndef __AccessibleValue_h__
-#define __AccessibleValue_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifndef __IAccessibleValue_FWD_DEFINED__
-#define __IAccessibleValue_FWD_DEFINED__
-typedef interface IAccessibleValue IAccessibleValue;
-#endif /* __IAccessibleValue_FWD_DEFINED__ */
-
-
-/* header files for imported files */
-#include "objidl.h"
-#include "oaidl.h"
-#include "oleacc.h"
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#ifndef __IAccessibleValue_INTERFACE_DEFINED__
-#define __IAccessibleValue_INTERFACE_DEFINED__
-
-/* interface IAccessibleValue */
-/* [uuid][object] */
-
-
-EXTERN_C const IID IID_IAccessibleValue;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-
- MIDL_INTERFACE("35855B5B-C566-4fd0-A7B1-E65465600394")
- IAccessibleValue : public IUnknown
- {
- public:
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_currentValue(
- /* [retval][out] */ VARIANT *currentValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE setCurrentValue(
- /* [in] */ VARIANT value) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_maximumValue(
- /* [retval][out] */ VARIANT *maximumValue) = 0;
-
- virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_minimumValue(
- /* [retval][out] */ VARIANT *minimumValue) = 0;
-
- };
-
-#else /* C style interface */
-
- typedef struct IAccessibleValueVtbl
- {
- BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
- IAccessibleValue * This,
- /* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
- __RPC__deref_out void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
- IAccessibleValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
- IAccessibleValue * This);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_currentValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *currentValue);
-
- HRESULT ( STDMETHODCALLTYPE *setCurrentValue )(
- IAccessibleValue * This,
- /* [in] */ VARIANT value);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_maximumValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *maximumValue);
-
- /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_minimumValue )(
- IAccessibleValue * This,
- /* [retval][out] */ VARIANT *minimumValue);
-
- END_INTERFACE
- } IAccessibleValueVtbl;
-
- interface IAccessibleValue
- {
- CONST_VTBL struct IAccessibleValueVtbl *lpVtbl;
- };
-
-
-
-#ifdef COBJMACROS
-
-
-#define IAccessibleValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
-
-#define IAccessibleValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
-
-#define IAccessibleValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
-
-
-#define IAccessibleValue_get_currentValue(This,currentValue) \
- ( (This)->lpVtbl -> get_currentValue(This,currentValue) )
-
-#define IAccessibleValue_setCurrentValue(This,value) \
- ( (This)->lpVtbl -> setCurrentValue(This,value) )
-
-#define IAccessibleValue_get_maximumValue(This,maximumValue) \
- ( (This)->lpVtbl -> get_maximumValue(This,maximumValue) )
-
-#define IAccessibleValue_get_minimumValue(This,minimumValue) \
- ( (This)->lpVtbl -> get_minimumValue(This,minimumValue) )
-
-#endif /* COBJMACROS */
-
-
-#endif /* C style interface */
-
-
-
-
-#endif /* __IAccessibleValue_INTERFACE_DEFINED__ */
-
-
-/* Additional Prototypes for ALL interfaces */
-
-unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
-unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
-void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_i.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_i.c
deleted file mode 100644
index dffdb123af..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, IID_IAccessibleValue,0x35855B5B,0xC566,0x4fd0,0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_p.c b/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_p.c
deleted file mode 100644
index 166e2149b4..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/AccessibleValue_p.c
+++ /dev/null
@@ -1,1105 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the proxy stub code */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:55 2012
- */
-/* Compiler settings for AccessibleValue.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#if !defined(_M_IA64) && !defined(_M_AMD64)
-
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-#if _MSC_VER >= 1200
-#pragma warning(push)
-#endif
-
-#pragma warning( disable: 4211 ) /* redefine extern to static */
-#pragma warning( disable: 4232 ) /* dllimport identity*/
-#pragma warning( disable: 4024 ) /* array to pointer mapping*/
-#pragma warning( disable: 4152 ) /* function/data pointer conversion in expression */
-#pragma warning( disable: 4100 ) /* unreferenced arguments in x86 call */
-
-#pragma optimize("", off )
-
-#define USE_STUBLESS_PROXY
-
-
-/* verify that the <rpcproxy.h> version is high enough to compile this file*/
-#ifndef __REDQ_RPCPROXY_H_VERSION__
-#define __REQUIRED_RPCPROXY_H_VERSION__ 475
-#endif
-
-
-#include "rpcproxy.h"
-#ifndef __RPCPROXY_H_VERSION__
-#error this stub requires an updated version of <rpcproxy.h>
-#endif /* __RPCPROXY_H_VERSION__ */
-
-
-#include "AccessibleValue.h"
-
-#define TYPE_FORMAT_STRING_SIZE 1053
-#define PROC_FORMAT_STRING_SIZE 145
-#define EXPR_FORMAT_STRING_SIZE 1
-#define TRANSMIT_AS_TABLE_SIZE 0
-#define WIRE_MARSHAL_TABLE_SIZE 1
-
-typedef struct _AccessibleValue_MIDL_TYPE_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_TYPE_FORMAT_STRING;
-
-typedef struct _AccessibleValue_MIDL_PROC_FORMAT_STRING
- {
- short Pad;
- unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_PROC_FORMAT_STRING;
-
-typedef struct _AccessibleValue_MIDL_EXPR_FORMAT_STRING
- {
- long Pad;
- unsigned char Format[ EXPR_FORMAT_STRING_SIZE ];
- } AccessibleValue_MIDL_EXPR_FORMAT_STRING;
-
-
-static const RPC_SYNTAX_IDENTIFIER _RpcTransferSyntax =
-{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}};
-
-
-extern const AccessibleValue_MIDL_TYPE_FORMAT_STRING AccessibleValue__MIDL_TypeFormatString;
-extern const AccessibleValue_MIDL_PROC_FORMAT_STRING AccessibleValue__MIDL_ProcFormatString;
-extern const AccessibleValue_MIDL_EXPR_FORMAT_STRING AccessibleValue__MIDL_ExprFormatString;
-
-
-extern const MIDL_STUB_DESC Object_StubDesc;
-
-
-extern const MIDL_SERVER_INFO IAccessibleValue_ServerInfo;
-extern const MIDL_STUBLESS_PROXY_INFO IAccessibleValue_ProxyInfo;
-
-
-extern const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ];
-
-#if !defined(__RPC_WIN32__)
-#error Invalid build platform for this stub.
-#endif
-
-#if !(TARGET_IS_NT50_OR_LATER)
-#error You need Windows 2000 or later to run this stub because it uses these features:
-#error /robust command line switch.
-#error However, your C/C++ compilation flags indicate you intend to run this app on earlier systems.
-#error This app will fail with the RPC_X_WRONG_STUB_VERSION error.
-#endif
-
-
-static const AccessibleValue_MIDL_PROC_FORMAT_STRING AccessibleValue__MIDL_ProcFormatString =
- {
- 0,
- {
-
- /* Procedure get_currentValue */
-
- 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 2 */ NdrFcLong( 0x0 ), /* 0 */
-/* 6 */ NdrFcShort( 0x3 ), /* 3 */
-/* 8 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 10 */ NdrFcShort( 0x0 ), /* 0 */
-/* 12 */ NdrFcShort( 0x8 ), /* 8 */
-/* 14 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 16 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 18 */ NdrFcShort( 0x1 ), /* 1 */
-/* 20 */ NdrFcShort( 0x0 ), /* 0 */
-/* 22 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter currentValue */
-
-/* 24 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 26 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 28 */ NdrFcShort( 0x404 ), /* Type Offset=1028 */
-
- /* Return value */
-
-/* 30 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 32 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 34 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure setCurrentValue */
-
-/* 36 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 38 */ NdrFcLong( 0x0 ), /* 0 */
-/* 42 */ NdrFcShort( 0x4 ), /* 4 */
-/* 44 */ NdrFcShort( 0x18 ), /* x86 Stack size/offset = 24 */
-/* 46 */ NdrFcShort( 0x0 ), /* 0 */
-/* 48 */ NdrFcShort( 0x8 ), /* 8 */
-/* 50 */ 0x46, /* Oi2 Flags: clt must size, has return, has ext, */
- 0x2, /* 2 */
-/* 52 */ 0x8, /* 8 */
- 0x5, /* Ext Flags: new corr desc, srv corr check, */
-/* 54 */ NdrFcShort( 0x0 ), /* 0 */
-/* 56 */ NdrFcShort( 0x1 ), /* 1 */
-/* 58 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter value */
-
-/* 60 */ NdrFcShort( 0x8b ), /* Flags: must size, must free, in, by val, */
-/* 62 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 64 */ NdrFcShort( 0x412 ), /* Type Offset=1042 */
-
- /* Return value */
-
-/* 66 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 68 */ NdrFcShort( 0x14 ), /* x86 Stack size/offset = 20 */
-/* 70 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_maximumValue */
-
-/* 72 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 74 */ NdrFcLong( 0x0 ), /* 0 */
-/* 78 */ NdrFcShort( 0x5 ), /* 5 */
-/* 80 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 82 */ NdrFcShort( 0x0 ), /* 0 */
-/* 84 */ NdrFcShort( 0x8 ), /* 8 */
-/* 86 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 88 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 90 */ NdrFcShort( 0x1 ), /* 1 */
-/* 92 */ NdrFcShort( 0x0 ), /* 0 */
-/* 94 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter maximumValue */
-
-/* 96 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 98 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 100 */ NdrFcShort( 0x404 ), /* Type Offset=1028 */
-
- /* Return value */
-
-/* 102 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 104 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 106 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- /* Procedure get_minimumValue */
-
-/* 108 */ 0x33, /* FC_AUTO_HANDLE */
- 0x6c, /* Old Flags: object, Oi2 */
-/* 110 */ NdrFcLong( 0x0 ), /* 0 */
-/* 114 */ NdrFcShort( 0x6 ), /* 6 */
-/* 116 */ NdrFcShort( 0xc ), /* x86 Stack size/offset = 12 */
-/* 118 */ NdrFcShort( 0x0 ), /* 0 */
-/* 120 */ NdrFcShort( 0x8 ), /* 8 */
-/* 122 */ 0x45, /* Oi2 Flags: srv must size, has return, has ext, */
- 0x2, /* 2 */
-/* 124 */ 0x8, /* 8 */
- 0x3, /* Ext Flags: new corr desc, clt corr check, */
-/* 126 */ NdrFcShort( 0x1 ), /* 1 */
-/* 128 */ NdrFcShort( 0x0 ), /* 0 */
-/* 130 */ NdrFcShort( 0x0 ), /* 0 */
-
- /* Parameter minimumValue */
-
-/* 132 */ NdrFcShort( 0x4113 ), /* Flags: must size, must free, out, simple ref, srv alloc size=16 */
-/* 134 */ NdrFcShort( 0x4 ), /* x86 Stack size/offset = 4 */
-/* 136 */ NdrFcShort( 0x404 ), /* Type Offset=1028 */
-
- /* Return value */
-
-/* 138 */ NdrFcShort( 0x70 ), /* Flags: out, return, base type, */
-/* 140 */ NdrFcShort( 0x8 ), /* x86 Stack size/offset = 8 */
-/* 142 */ 0x8, /* FC_LONG */
- 0x0, /* 0 */
-
- 0x0
- }
- };
-
-static const AccessibleValue_MIDL_TYPE_FORMAT_STRING AccessibleValue__MIDL_TypeFormatString =
- {
- 0,
- {
- NdrFcShort( 0x0 ), /* 0 */
-/* 2 */
- 0x11, 0x4, /* FC_RP [alloced_on_stack] */
-/* 4 */ NdrFcShort( 0x400 ), /* Offset= 1024 (1028) */
-/* 6 */
- 0x13, 0x0, /* FC_OP */
-/* 8 */ NdrFcShort( 0x3e8 ), /* Offset= 1000 (1008) */
-/* 10 */
- 0x2b, /* FC_NON_ENCAPSULATED_UNION */
- 0x9, /* FC_ULONG */
-/* 12 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 14 */ NdrFcShort( 0xfff8 ), /* -8 */
-/* 16 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 18 */ NdrFcShort( 0x2 ), /* Offset= 2 (20) */
-/* 20 */ NdrFcShort( 0x10 ), /* 16 */
-/* 22 */ NdrFcShort( 0x2f ), /* 47 */
-/* 24 */ NdrFcLong( 0x14 ), /* 20 */
-/* 28 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 30 */ NdrFcLong( 0x3 ), /* 3 */
-/* 34 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 36 */ NdrFcLong( 0x11 ), /* 17 */
-/* 40 */ NdrFcShort( 0x8001 ), /* Simple arm type: FC_BYTE */
-/* 42 */ NdrFcLong( 0x2 ), /* 2 */
-/* 46 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 48 */ NdrFcLong( 0x4 ), /* 4 */
-/* 52 */ NdrFcShort( 0x800a ), /* Simple arm type: FC_FLOAT */
-/* 54 */ NdrFcLong( 0x5 ), /* 5 */
-/* 58 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 60 */ NdrFcLong( 0xb ), /* 11 */
-/* 64 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 66 */ NdrFcLong( 0xa ), /* 10 */
-/* 70 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 72 */ NdrFcLong( 0x6 ), /* 6 */
-/* 76 */ NdrFcShort( 0xe8 ), /* Offset= 232 (308) */
-/* 78 */ NdrFcLong( 0x7 ), /* 7 */
-/* 82 */ NdrFcShort( 0x800c ), /* Simple arm type: FC_DOUBLE */
-/* 84 */ NdrFcLong( 0x8 ), /* 8 */
-/* 88 */ NdrFcShort( 0xe2 ), /* Offset= 226 (314) */
-/* 90 */ NdrFcLong( 0xd ), /* 13 */
-/* 94 */ NdrFcShort( 0xf6 ), /* Offset= 246 (340) */
-/* 96 */ NdrFcLong( 0x9 ), /* 9 */
-/* 100 */ NdrFcShort( 0x102 ), /* Offset= 258 (358) */
-/* 102 */ NdrFcLong( 0x2000 ), /* 8192 */
-/* 106 */ NdrFcShort( 0x10e ), /* Offset= 270 (376) */
-/* 108 */ NdrFcLong( 0x24 ), /* 36 */
-/* 112 */ NdrFcShort( 0x336 ), /* Offset= 822 (934) */
-/* 114 */ NdrFcLong( 0x4024 ), /* 16420 */
-/* 118 */ NdrFcShort( 0x330 ), /* Offset= 816 (934) */
-/* 120 */ NdrFcLong( 0x4011 ), /* 16401 */
-/* 124 */ NdrFcShort( 0x32e ), /* Offset= 814 (938) */
-/* 126 */ NdrFcLong( 0x4002 ), /* 16386 */
-/* 130 */ NdrFcShort( 0x32c ), /* Offset= 812 (942) */
-/* 132 */ NdrFcLong( 0x4003 ), /* 16387 */
-/* 136 */ NdrFcShort( 0x32a ), /* Offset= 810 (946) */
-/* 138 */ NdrFcLong( 0x4014 ), /* 16404 */
-/* 142 */ NdrFcShort( 0x328 ), /* Offset= 808 (950) */
-/* 144 */ NdrFcLong( 0x4004 ), /* 16388 */
-/* 148 */ NdrFcShort( 0x326 ), /* Offset= 806 (954) */
-/* 150 */ NdrFcLong( 0x4005 ), /* 16389 */
-/* 154 */ NdrFcShort( 0x324 ), /* Offset= 804 (958) */
-/* 156 */ NdrFcLong( 0x400b ), /* 16395 */
-/* 160 */ NdrFcShort( 0x30e ), /* Offset= 782 (942) */
-/* 162 */ NdrFcLong( 0x400a ), /* 16394 */
-/* 166 */ NdrFcShort( 0x30c ), /* Offset= 780 (946) */
-/* 168 */ NdrFcLong( 0x4006 ), /* 16390 */
-/* 172 */ NdrFcShort( 0x316 ), /* Offset= 790 (962) */
-/* 174 */ NdrFcLong( 0x4007 ), /* 16391 */
-/* 178 */ NdrFcShort( 0x30c ), /* Offset= 780 (958) */
-/* 180 */ NdrFcLong( 0x4008 ), /* 16392 */
-/* 184 */ NdrFcShort( 0x30e ), /* Offset= 782 (966) */
-/* 186 */ NdrFcLong( 0x400d ), /* 16397 */
-/* 190 */ NdrFcShort( 0x30c ), /* Offset= 780 (970) */
-/* 192 */ NdrFcLong( 0x4009 ), /* 16393 */
-/* 196 */ NdrFcShort( 0x30a ), /* Offset= 778 (974) */
-/* 198 */ NdrFcLong( 0x6000 ), /* 24576 */
-/* 202 */ NdrFcShort( 0x308 ), /* Offset= 776 (978) */
-/* 204 */ NdrFcLong( 0x400c ), /* 16396 */
-/* 208 */ NdrFcShort( 0x306 ), /* Offset= 774 (982) */
-/* 210 */ NdrFcLong( 0x10 ), /* 16 */
-/* 214 */ NdrFcShort( 0x8002 ), /* Simple arm type: FC_CHAR */
-/* 216 */ NdrFcLong( 0x12 ), /* 18 */
-/* 220 */ NdrFcShort( 0x8006 ), /* Simple arm type: FC_SHORT */
-/* 222 */ NdrFcLong( 0x13 ), /* 19 */
-/* 226 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 228 */ NdrFcLong( 0x15 ), /* 21 */
-/* 232 */ NdrFcShort( 0x800b ), /* Simple arm type: FC_HYPER */
-/* 234 */ NdrFcLong( 0x16 ), /* 22 */
-/* 238 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 240 */ NdrFcLong( 0x17 ), /* 23 */
-/* 244 */ NdrFcShort( 0x8008 ), /* Simple arm type: FC_LONG */
-/* 246 */ NdrFcLong( 0xe ), /* 14 */
-/* 250 */ NdrFcShort( 0x2e4 ), /* Offset= 740 (990) */
-/* 252 */ NdrFcLong( 0x400e ), /* 16398 */
-/* 256 */ NdrFcShort( 0x2e8 ), /* Offset= 744 (1000) */
-/* 258 */ NdrFcLong( 0x4010 ), /* 16400 */
-/* 262 */ NdrFcShort( 0x2e6 ), /* Offset= 742 (1004) */
-/* 264 */ NdrFcLong( 0x4012 ), /* 16402 */
-/* 268 */ NdrFcShort( 0x2a2 ), /* Offset= 674 (942) */
-/* 270 */ NdrFcLong( 0x4013 ), /* 16403 */
-/* 274 */ NdrFcShort( 0x2a0 ), /* Offset= 672 (946) */
-/* 276 */ NdrFcLong( 0x4015 ), /* 16405 */
-/* 280 */ NdrFcShort( 0x29e ), /* Offset= 670 (950) */
-/* 282 */ NdrFcLong( 0x4016 ), /* 16406 */
-/* 286 */ NdrFcShort( 0x294 ), /* Offset= 660 (946) */
-/* 288 */ NdrFcLong( 0x4017 ), /* 16407 */
-/* 292 */ NdrFcShort( 0x28e ), /* Offset= 654 (946) */
-/* 294 */ NdrFcLong( 0x0 ), /* 0 */
-/* 298 */ NdrFcShort( 0x0 ), /* Offset= 0 (298) */
-/* 300 */ NdrFcLong( 0x1 ), /* 1 */
-/* 304 */ NdrFcShort( 0x0 ), /* Offset= 0 (304) */
-/* 306 */ NdrFcShort( 0xffff ), /* Offset= -1 (305) */
-/* 308 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 310 */ NdrFcShort( 0x8 ), /* 8 */
-/* 312 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 314 */
- 0x13, 0x0, /* FC_OP */
-/* 316 */ NdrFcShort( 0xe ), /* Offset= 14 (330) */
-/* 318 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 320 */ NdrFcShort( 0x2 ), /* 2 */
-/* 322 */ 0x9, /* Corr desc: FC_ULONG */
- 0x0, /* */
-/* 324 */ NdrFcShort( 0xfffc ), /* -4 */
-/* 326 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 328 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 330 */
- 0x17, /* FC_CSTRUCT */
- 0x3, /* 3 */
-/* 332 */ NdrFcShort( 0x8 ), /* 8 */
-/* 334 */ NdrFcShort( 0xfff0 ), /* Offset= -16 (318) */
-/* 336 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 338 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 340 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 342 */ NdrFcLong( 0x0 ), /* 0 */
-/* 346 */ NdrFcShort( 0x0 ), /* 0 */
-/* 348 */ NdrFcShort( 0x0 ), /* 0 */
-/* 350 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 352 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 354 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 356 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 358 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 360 */ NdrFcLong( 0x20400 ), /* 132096 */
-/* 364 */ NdrFcShort( 0x0 ), /* 0 */
-/* 366 */ NdrFcShort( 0x0 ), /* 0 */
-/* 368 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 370 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 372 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 374 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 376 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 378 */ NdrFcShort( 0x2 ), /* Offset= 2 (380) */
-/* 380 */
- 0x13, 0x0, /* FC_OP */
-/* 382 */ NdrFcShort( 0x216 ), /* Offset= 534 (916) */
-/* 384 */
- 0x2a, /* FC_ENCAPSULATED_UNION */
- 0x49, /* 73 */
-/* 386 */ NdrFcShort( 0x18 ), /* 24 */
-/* 388 */ NdrFcShort( 0xa ), /* 10 */
-/* 390 */ NdrFcLong( 0x8 ), /* 8 */
-/* 394 */ NdrFcShort( 0x5a ), /* Offset= 90 (484) */
-/* 396 */ NdrFcLong( 0xd ), /* 13 */
-/* 400 */ NdrFcShort( 0x7e ), /* Offset= 126 (526) */
-/* 402 */ NdrFcLong( 0x9 ), /* 9 */
-/* 406 */ NdrFcShort( 0x9e ), /* Offset= 158 (564) */
-/* 408 */ NdrFcLong( 0xc ), /* 12 */
-/* 412 */ NdrFcShort( 0xc8 ), /* Offset= 200 (612) */
-/* 414 */ NdrFcLong( 0x24 ), /* 36 */
-/* 418 */ NdrFcShort( 0x124 ), /* Offset= 292 (710) */
-/* 420 */ NdrFcLong( 0x800d ), /* 32781 */
-/* 424 */ NdrFcShort( 0x140 ), /* Offset= 320 (744) */
-/* 426 */ NdrFcLong( 0x10 ), /* 16 */
-/* 430 */ NdrFcShort( 0x15a ), /* Offset= 346 (776) */
-/* 432 */ NdrFcLong( 0x2 ), /* 2 */
-/* 436 */ NdrFcShort( 0x174 ), /* Offset= 372 (808) */
-/* 438 */ NdrFcLong( 0x3 ), /* 3 */
-/* 442 */ NdrFcShort( 0x18e ), /* Offset= 398 (840) */
-/* 444 */ NdrFcLong( 0x14 ), /* 20 */
-/* 448 */ NdrFcShort( 0x1a8 ), /* Offset= 424 (872) */
-/* 450 */ NdrFcShort( 0xffff ), /* Offset= -1 (449) */
-/* 452 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 454 */ NdrFcShort( 0x4 ), /* 4 */
-/* 456 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 458 */ NdrFcShort( 0x0 ), /* 0 */
-/* 460 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 462 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 464 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 466 */ NdrFcShort( 0x4 ), /* 4 */
-/* 468 */ NdrFcShort( 0x0 ), /* 0 */
-/* 470 */ NdrFcShort( 0x1 ), /* 1 */
-/* 472 */ NdrFcShort( 0x0 ), /* 0 */
-/* 474 */ NdrFcShort( 0x0 ), /* 0 */
-/* 476 */ 0x13, 0x0, /* FC_OP */
-/* 478 */ NdrFcShort( 0xff6c ), /* Offset= -148 (330) */
-/* 480 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 482 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 484 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 486 */ NdrFcShort( 0x8 ), /* 8 */
-/* 488 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 490 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 492 */ NdrFcShort( 0x4 ), /* 4 */
-/* 494 */ NdrFcShort( 0x4 ), /* 4 */
-/* 496 */ 0x11, 0x0, /* FC_RP */
-/* 498 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (452) */
-/* 500 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 502 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 504 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 506 */ NdrFcShort( 0x0 ), /* 0 */
-/* 508 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 510 */ NdrFcShort( 0x0 ), /* 0 */
-/* 512 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 514 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 518 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 520 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 522 */ NdrFcShort( 0xff4a ), /* Offset= -182 (340) */
-/* 524 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 526 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 528 */ NdrFcShort( 0x8 ), /* 8 */
-/* 530 */ NdrFcShort( 0x0 ), /* 0 */
-/* 532 */ NdrFcShort( 0x6 ), /* Offset= 6 (538) */
-/* 534 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 536 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 538 */
- 0x11, 0x0, /* FC_RP */
-/* 540 */ NdrFcShort( 0xffdc ), /* Offset= -36 (504) */
-/* 542 */
- 0x21, /* FC_BOGUS_ARRAY */
- 0x3, /* 3 */
-/* 544 */ NdrFcShort( 0x0 ), /* 0 */
-/* 546 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 548 */ NdrFcShort( 0x0 ), /* 0 */
-/* 550 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 552 */ NdrFcLong( 0xffffffff ), /* -1 */
-/* 556 */ NdrFcShort( 0x0 ), /* Corr flags: */
-/* 558 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 560 */ NdrFcShort( 0xff36 ), /* Offset= -202 (358) */
-/* 562 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 564 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 566 */ NdrFcShort( 0x8 ), /* 8 */
-/* 568 */ NdrFcShort( 0x0 ), /* 0 */
-/* 570 */ NdrFcShort( 0x6 ), /* Offset= 6 (576) */
-/* 572 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 574 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 576 */
- 0x11, 0x0, /* FC_RP */
-/* 578 */ NdrFcShort( 0xffdc ), /* Offset= -36 (542) */
-/* 580 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 582 */ NdrFcShort( 0x4 ), /* 4 */
-/* 584 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 586 */ NdrFcShort( 0x0 ), /* 0 */
-/* 588 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 590 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 592 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 594 */ NdrFcShort( 0x4 ), /* 4 */
-/* 596 */ NdrFcShort( 0x0 ), /* 0 */
-/* 598 */ NdrFcShort( 0x1 ), /* 1 */
-/* 600 */ NdrFcShort( 0x0 ), /* 0 */
-/* 602 */ NdrFcShort( 0x0 ), /* 0 */
-/* 604 */ 0x13, 0x0, /* FC_OP */
-/* 606 */ NdrFcShort( 0x192 ), /* Offset= 402 (1008) */
-/* 608 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 610 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 612 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 614 */ NdrFcShort( 0x8 ), /* 8 */
-/* 616 */ NdrFcShort( 0x0 ), /* 0 */
-/* 618 */ NdrFcShort( 0x6 ), /* Offset= 6 (624) */
-/* 620 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 622 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 624 */
- 0x11, 0x0, /* FC_RP */
-/* 626 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (580) */
-/* 628 */
- 0x2f, /* FC_IP */
- 0x5a, /* FC_CONSTANT_IID */
-/* 630 */ NdrFcLong( 0x2f ), /* 47 */
-/* 634 */ NdrFcShort( 0x0 ), /* 0 */
-/* 636 */ NdrFcShort( 0x0 ), /* 0 */
-/* 638 */ 0xc0, /* 192 */
- 0x0, /* 0 */
-/* 640 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 642 */ 0x0, /* 0 */
- 0x0, /* 0 */
-/* 644 */ 0x0, /* 0 */
- 0x46, /* 70 */
-/* 646 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 648 */ NdrFcShort( 0x1 ), /* 1 */
-/* 650 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 652 */ NdrFcShort( 0x4 ), /* 4 */
-/* 654 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 656 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 658 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 660 */ NdrFcShort( 0x10 ), /* 16 */
-/* 662 */ NdrFcShort( 0x0 ), /* 0 */
-/* 664 */ NdrFcShort( 0xa ), /* Offset= 10 (674) */
-/* 666 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 668 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 670 */ NdrFcShort( 0xffd6 ), /* Offset= -42 (628) */
-/* 672 */ 0x36, /* FC_POINTER */
- 0x5b, /* FC_END */
-/* 674 */
- 0x13, 0x0, /* FC_OP */
-/* 676 */ NdrFcShort( 0xffe2 ), /* Offset= -30 (646) */
-/* 678 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 680 */ NdrFcShort( 0x4 ), /* 4 */
-/* 682 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 684 */ NdrFcShort( 0x0 ), /* 0 */
-/* 686 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 688 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 690 */
- 0x48, /* FC_VARIABLE_REPEAT */
- 0x49, /* FC_FIXED_OFFSET */
-/* 692 */ NdrFcShort( 0x4 ), /* 4 */
-/* 694 */ NdrFcShort( 0x0 ), /* 0 */
-/* 696 */ NdrFcShort( 0x1 ), /* 1 */
-/* 698 */ NdrFcShort( 0x0 ), /* 0 */
-/* 700 */ NdrFcShort( 0x0 ), /* 0 */
-/* 702 */ 0x13, 0x0, /* FC_OP */
-/* 704 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (658) */
-/* 706 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 708 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 710 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 712 */ NdrFcShort( 0x8 ), /* 8 */
-/* 714 */ NdrFcShort( 0x0 ), /* 0 */
-/* 716 */ NdrFcShort( 0x6 ), /* Offset= 6 (722) */
-/* 718 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 720 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 722 */
- 0x11, 0x0, /* FC_RP */
-/* 724 */ NdrFcShort( 0xffd2 ), /* Offset= -46 (678) */
-/* 726 */
- 0x1d, /* FC_SMFARRAY */
- 0x0, /* 0 */
-/* 728 */ NdrFcShort( 0x8 ), /* 8 */
-/* 730 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 732 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 734 */ NdrFcShort( 0x10 ), /* 16 */
-/* 736 */ 0x8, /* FC_LONG */
- 0x6, /* FC_SHORT */
-/* 738 */ 0x6, /* FC_SHORT */
- 0x4c, /* FC_EMBEDDED_COMPLEX */
-/* 740 */ 0x0, /* 0 */
- NdrFcShort( 0xfff1 ), /* Offset= -15 (726) */
- 0x5b, /* FC_END */
-/* 744 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 746 */ NdrFcShort( 0x18 ), /* 24 */
-/* 748 */ NdrFcShort( 0x0 ), /* 0 */
-/* 750 */ NdrFcShort( 0xa ), /* Offset= 10 (760) */
-/* 752 */ 0x8, /* FC_LONG */
- 0x36, /* FC_POINTER */
-/* 754 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 756 */ NdrFcShort( 0xffe8 ), /* Offset= -24 (732) */
-/* 758 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 760 */
- 0x11, 0x0, /* FC_RP */
-/* 762 */ NdrFcShort( 0xfefe ), /* Offset= -258 (504) */
-/* 764 */
- 0x1b, /* FC_CARRAY */
- 0x0, /* 0 */
-/* 766 */ NdrFcShort( 0x1 ), /* 1 */
-/* 768 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 770 */ NdrFcShort( 0x0 ), /* 0 */
-/* 772 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 774 */ 0x1, /* FC_BYTE */
- 0x5b, /* FC_END */
-/* 776 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 778 */ NdrFcShort( 0x8 ), /* 8 */
-/* 780 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 782 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 784 */ NdrFcShort( 0x4 ), /* 4 */
-/* 786 */ NdrFcShort( 0x4 ), /* 4 */
-/* 788 */ 0x13, 0x0, /* FC_OP */
-/* 790 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (764) */
-/* 792 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 794 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 796 */
- 0x1b, /* FC_CARRAY */
- 0x1, /* 1 */
-/* 798 */ NdrFcShort( 0x2 ), /* 2 */
-/* 800 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 802 */ NdrFcShort( 0x0 ), /* 0 */
-/* 804 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 806 */ 0x6, /* FC_SHORT */
- 0x5b, /* FC_END */
-/* 808 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 810 */ NdrFcShort( 0x8 ), /* 8 */
-/* 812 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 814 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 816 */ NdrFcShort( 0x4 ), /* 4 */
-/* 818 */ NdrFcShort( 0x4 ), /* 4 */
-/* 820 */ 0x13, 0x0, /* FC_OP */
-/* 822 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (796) */
-/* 824 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 826 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 828 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 830 */ NdrFcShort( 0x4 ), /* 4 */
-/* 832 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 834 */ NdrFcShort( 0x0 ), /* 0 */
-/* 836 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 838 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 840 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 842 */ NdrFcShort( 0x8 ), /* 8 */
-/* 844 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 846 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 848 */ NdrFcShort( 0x4 ), /* 4 */
-/* 850 */ NdrFcShort( 0x4 ), /* 4 */
-/* 852 */ 0x13, 0x0, /* FC_OP */
-/* 854 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (828) */
-/* 856 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 858 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 860 */
- 0x1b, /* FC_CARRAY */
- 0x7, /* 7 */
-/* 862 */ NdrFcShort( 0x8 ), /* 8 */
-/* 864 */ 0x19, /* Corr desc: field pointer, FC_ULONG */
- 0x0, /* */
-/* 866 */ NdrFcShort( 0x0 ), /* 0 */
-/* 868 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 870 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 872 */
- 0x16, /* FC_PSTRUCT */
- 0x3, /* 3 */
-/* 874 */ NdrFcShort( 0x8 ), /* 8 */
-/* 876 */
- 0x4b, /* FC_PP */
- 0x5c, /* FC_PAD */
-/* 878 */
- 0x46, /* FC_NO_REPEAT */
- 0x5c, /* FC_PAD */
-/* 880 */ NdrFcShort( 0x4 ), /* 4 */
-/* 882 */ NdrFcShort( 0x4 ), /* 4 */
-/* 884 */ 0x13, 0x0, /* FC_OP */
-/* 886 */ NdrFcShort( 0xffe6 ), /* Offset= -26 (860) */
-/* 888 */
- 0x5b, /* FC_END */
-
- 0x8, /* FC_LONG */
-/* 890 */ 0x8, /* FC_LONG */
- 0x5b, /* FC_END */
-/* 892 */
- 0x15, /* FC_STRUCT */
- 0x3, /* 3 */
-/* 894 */ NdrFcShort( 0x8 ), /* 8 */
-/* 896 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 898 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 900 */
- 0x1b, /* FC_CARRAY */
- 0x3, /* 3 */
-/* 902 */ NdrFcShort( 0x8 ), /* 8 */
-/* 904 */ 0x7, /* Corr desc: FC_USHORT */
- 0x0, /* */
-/* 906 */ NdrFcShort( 0xffd8 ), /* -40 */
-/* 908 */ NdrFcShort( 0x1 ), /* Corr flags: early, */
-/* 910 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 912 */ NdrFcShort( 0xffec ), /* Offset= -20 (892) */
-/* 914 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 916 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x3, /* 3 */
-/* 918 */ NdrFcShort( 0x28 ), /* 40 */
-/* 920 */ NdrFcShort( 0xffec ), /* Offset= -20 (900) */
-/* 922 */ NdrFcShort( 0x0 ), /* Offset= 0 (922) */
-/* 924 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 926 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 928 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 930 */ NdrFcShort( 0xfdde ), /* Offset= -546 (384) */
-/* 932 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 934 */
- 0x13, 0x0, /* FC_OP */
-/* 936 */ NdrFcShort( 0xfeea ), /* Offset= -278 (658) */
-/* 938 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 940 */ 0x1, /* FC_BYTE */
- 0x5c, /* FC_PAD */
-/* 942 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 944 */ 0x6, /* FC_SHORT */
- 0x5c, /* FC_PAD */
-/* 946 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 948 */ 0x8, /* FC_LONG */
- 0x5c, /* FC_PAD */
-/* 950 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 952 */ 0xb, /* FC_HYPER */
- 0x5c, /* FC_PAD */
-/* 954 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 956 */ 0xa, /* FC_FLOAT */
- 0x5c, /* FC_PAD */
-/* 958 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 960 */ 0xc, /* FC_DOUBLE */
- 0x5c, /* FC_PAD */
-/* 962 */
- 0x13, 0x0, /* FC_OP */
-/* 964 */ NdrFcShort( 0xfd70 ), /* Offset= -656 (308) */
-/* 966 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 968 */ NdrFcShort( 0xfd72 ), /* Offset= -654 (314) */
-/* 970 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 972 */ NdrFcShort( 0xfd88 ), /* Offset= -632 (340) */
-/* 974 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 976 */ NdrFcShort( 0xfd96 ), /* Offset= -618 (358) */
-/* 978 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 980 */ NdrFcShort( 0xfda4 ), /* Offset= -604 (376) */
-/* 982 */
- 0x13, 0x10, /* FC_OP [pointer_deref] */
-/* 984 */ NdrFcShort( 0x2 ), /* Offset= 2 (986) */
-/* 986 */
- 0x13, 0x0, /* FC_OP */
-/* 988 */ NdrFcShort( 0x14 ), /* Offset= 20 (1008) */
-/* 990 */
- 0x15, /* FC_STRUCT */
- 0x7, /* 7 */
-/* 992 */ NdrFcShort( 0x10 ), /* 16 */
-/* 994 */ 0x6, /* FC_SHORT */
- 0x1, /* FC_BYTE */
-/* 996 */ 0x1, /* FC_BYTE */
- 0x8, /* FC_LONG */
-/* 998 */ 0xb, /* FC_HYPER */
- 0x5b, /* FC_END */
-/* 1000 */
- 0x13, 0x0, /* FC_OP */
-/* 1002 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (990) */
-/* 1004 */
- 0x13, 0x8, /* FC_OP [simple_pointer] */
-/* 1006 */ 0x2, /* FC_CHAR */
- 0x5c, /* FC_PAD */
-/* 1008 */
- 0x1a, /* FC_BOGUS_STRUCT */
- 0x7, /* 7 */
-/* 1010 */ NdrFcShort( 0x20 ), /* 32 */
-/* 1012 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1014 */ NdrFcShort( 0x0 ), /* Offset= 0 (1014) */
-/* 1016 */ 0x8, /* FC_LONG */
- 0x8, /* FC_LONG */
-/* 1018 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 1020 */ 0x6, /* FC_SHORT */
- 0x6, /* FC_SHORT */
-/* 1022 */ 0x4c, /* FC_EMBEDDED_COMPLEX */
- 0x0, /* 0 */
-/* 1024 */ NdrFcShort( 0xfc0a ), /* Offset= -1014 (10) */
-/* 1026 */ 0x5c, /* FC_PAD */
- 0x5b, /* FC_END */
-/* 1028 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 1030 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1032 */ NdrFcShort( 0x10 ), /* 16 */
-/* 1034 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1036 */ NdrFcShort( 0xfbfa ), /* Offset= -1030 (6) */
-/* 1038 */
- 0x12, 0x0, /* FC_UP */
-/* 1040 */ NdrFcShort( 0xffe0 ), /* Offset= -32 (1008) */
-/* 1042 */ 0xb4, /* FC_USER_MARSHAL */
- 0x83, /* 131 */
-/* 1044 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1046 */ NdrFcShort( 0x10 ), /* 16 */
-/* 1048 */ NdrFcShort( 0x0 ), /* 0 */
-/* 1050 */ NdrFcShort( 0xfff4 ), /* Offset= -12 (1038) */
-
- 0x0
- }
- };
-
-static const USER_MARSHAL_ROUTINE_QUADRUPLE UserMarshalRoutines[ WIRE_MARSHAL_TABLE_SIZE ] =
- {
-
- {
- VARIANT_UserSize
- ,VARIANT_UserMarshal
- ,VARIANT_UserUnmarshal
- ,VARIANT_UserFree
- }
-
- };
-
-
-
-/* Object interface: IUnknown, ver. 0.0,
- GUID={0x00000000,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}} */
-
-
-/* Object interface: IAccessibleValue, ver. 0.0,
- GUID={0x35855B5B,0xC566,0x4fd0,{0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94}} */
-
-#pragma code_seg(".orpc")
-static const unsigned short IAccessibleValue_FormatStringOffsetTable[] =
- {
- 0,
- 36,
- 72,
- 108
- };
-
-static const MIDL_STUBLESS_PROXY_INFO IAccessibleValue_ProxyInfo =
- {
- &Object_StubDesc,
- AccessibleValue__MIDL_ProcFormatString.Format,
- &IAccessibleValue_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0
- };
-
-
-static const MIDL_SERVER_INFO IAccessibleValue_ServerInfo =
- {
- &Object_StubDesc,
- 0,
- AccessibleValue__MIDL_ProcFormatString.Format,
- &IAccessibleValue_FormatStringOffsetTable[-3],
- 0,
- 0,
- 0,
- 0};
-CINTERFACE_PROXY_VTABLE(7) _IAccessibleValueProxyVtbl =
-{
- &IAccessibleValue_ProxyInfo,
- &IID_IAccessibleValue,
- IUnknown_QueryInterface_Proxy,
- IUnknown_AddRef_Proxy,
- IUnknown_Release_Proxy ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_currentValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::setCurrentValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_maximumValue */ ,
- (void *) (INT_PTR) -1 /* IAccessibleValue::get_minimumValue */
-};
-
-const CInterfaceStubVtbl _IAccessibleValueStubVtbl =
-{
- &IID_IAccessibleValue,
- &IAccessibleValue_ServerInfo,
- 7,
- 0, /* pure interpreted */
- CStdStubBuffer_METHODS
-};
-
-static const MIDL_STUB_DESC Object_StubDesc =
- {
- 0,
- NdrOleAllocate,
- NdrOleFree,
- 0,
- 0,
- 0,
- 0,
- 0,
- AccessibleValue__MIDL_TypeFormatString.Format,
- 1, /* -error bounds_check flag */
- 0x50002, /* Ndr library version */
- 0,
- 0x700022b, /* MIDL Version 7.0.555 */
- 0,
- UserMarshalRoutines,
- 0, /* notify & notify_flag routine table */
- 0x1, /* MIDL flag */
- 0, /* cs routines */
- 0, /* proxy/server info */
- 0
- };
-
-const CInterfaceProxyVtbl * const _AccessibleValue_ProxyVtblList[] =
-{
- ( CInterfaceProxyVtbl *) &_IAccessibleValueProxyVtbl,
- 0
-};
-
-const CInterfaceStubVtbl * const _AccessibleValue_StubVtblList[] =
-{
- ( CInterfaceStubVtbl *) &_IAccessibleValueStubVtbl,
- 0
-};
-
-PCInterfaceName const _AccessibleValue_InterfaceNamesList[] =
-{
- "IAccessibleValue",
- 0
-};
-
-
-#define _AccessibleValue_CHECK_IID(n) IID_GENERIC_CHECK_IID( _AccessibleValue, pIID, n)
-
-int __stdcall _AccessibleValue_IID_Lookup( const IID * pIID, int * pIndex )
-{
-
- if(!_AccessibleValue_CHECK_IID(0))
- {
- *pIndex = 0;
- return 1;
- }
-
- return 0;
-}
-
-const ExtendedProxyFileInfo AccessibleValue_ProxyFileInfo =
-{
- (PCInterfaceProxyVtblList *) & _AccessibleValue_ProxyVtblList,
- (PCInterfaceStubVtblList *) & _AccessibleValue_StubVtblList,
- (const PCInterfaceName * ) & _AccessibleValue_InterfaceNamesList,
- 0, /* no delegation */
- & _AccessibleValue_IID_Lookup,
- 1,
- 2,
- 0, /* table of [async_uuid] interfaces */
- 0, /* Filler1 */
- 0, /* Filler2 */
- 0 /* Filler3 */
-};
-#pragma optimize("", on )
-#if _MSC_VER >= 1200
-#pragma warning(pop)
-#endif
-
-
-#endif /* !defined(_M_IA64) && !defined(_M_AMD64)*/
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/IA2CommonTypes.h b/src/3rdparty/iaccessible2/generated/x86/IA2CommonTypes.h
deleted file mode 100644
index 7d1df601e6..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/IA2CommonTypes.h
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for IA2CommonTypes.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __IA2CommonTypes_h__
-#define __IA2CommonTypes_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_IA2CommonTypes_0000_0000 */
-/* [local] */
-
-
-enum IA2ScrollType
- { IA2_SCROLL_TYPE_TOP_LEFT = 0,
- IA2_SCROLL_TYPE_BOTTOM_RIGHT = ( IA2_SCROLL_TYPE_TOP_LEFT + 1 ) ,
- IA2_SCROLL_TYPE_TOP_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_RIGHT + 1 ) ,
- IA2_SCROLL_TYPE_BOTTOM_EDGE = ( IA2_SCROLL_TYPE_TOP_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_LEFT_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_RIGHT_EDGE = ( IA2_SCROLL_TYPE_LEFT_EDGE + 1 ) ,
- IA2_SCROLL_TYPE_ANYWHERE = ( IA2_SCROLL_TYPE_RIGHT_EDGE + 1 )
- } ;
-
-enum IA2CoordinateType
- { IA2_COORDTYPE_SCREEN_RELATIVE = 0,
- IA2_COORDTYPE_PARENT_RELATIVE = ( IA2_COORDTYPE_SCREEN_RELATIVE + 1 )
- } ;
-
-enum IA2TextSpecialOffsets
- { IA2_TEXT_OFFSET_LENGTH = -1,
- IA2_TEXT_OFFSET_CARET = -2
- } ;
-
-enum IA2TableModelChangeType
- { IA2_TABLE_MODEL_CHANGE_INSERT = 0,
- IA2_TABLE_MODEL_CHANGE_DELETE = ( IA2_TABLE_MODEL_CHANGE_INSERT + 1 ) ,
- IA2_TABLE_MODEL_CHANGE_UPDATE = ( IA2_TABLE_MODEL_CHANGE_DELETE + 1 )
- } ;
-typedef struct IA2TableModelChange
- {
- enum IA2TableModelChangeType type;
- long firstRow;
- long lastRow;
- long firstColumn;
- long lastColumn;
- } IA2TableModelChange;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_IA2CommonTypes_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_IA2CommonTypes_0000_0000_v0_0_s_ifspec;
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.h b/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.h
deleted file mode 100644
index e80b2722f9..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.h
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the definitions for the interfaces */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for IA2TypeLibrary.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-/* verify that the <rpcndr.h> version is high enough to compile this file*/
-#ifndef __REQUIRED_RPCNDR_H_VERSION__
-#define __REQUIRED_RPCNDR_H_VERSION__ 475
-#endif
-
-#include "rpc.h"
-#include "rpcndr.h"
-
-#ifndef __RPCNDR_H_VERSION__
-#error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
-
-
-#ifndef __IA2TypeLibrary_h__
-#define __IA2TypeLibrary_h__
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-#pragma once
-#endif
-
-/* Forward Declarations */
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-/* interface __MIDL_itf_IA2TypeLibrary_0000_0000 */
-/* [local] */
-
-
-// Type Library Definitions
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_IA2TypeLibrary_0000_0000_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_IA2TypeLibrary_0000_0000_v0_0_s_ifspec;
-
-
-#ifndef __IAccessible2Lib_LIBRARY_DEFINED__
-#define __IAccessible2Lib_LIBRARY_DEFINED__
-
-/* library IAccessible2Lib */
-/* [hidden][version][helpstring][uuid] */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-EXTERN_C const IID LIBID_IAccessible2Lib;
-#endif /* __IAccessible2Lib_LIBRARY_DEFINED__ */
-
-/* Additional Prototypes for ALL interfaces */
-
-/* end of Additional Prototypes */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.tlb b/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.tlb
deleted file mode 100644
index b4c56c7aaa..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.tlb
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary_i.c b/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary_i.c
deleted file mode 100644
index 1bf9d5159d..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary_i.c
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
-
-/* link this file in with the server and any clients */
-
-
- /* File created by MIDL compiler version 7.00.0555 */
-/* at Thu Mar 08 14:53:56 2012
- */
-/* Compiler settings for IA2TypeLibrary.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
- protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
- __declspec(uuid()), __declspec(selectany), __declspec(novtable)
- DECLSPEC_UUID(), MIDL_INTERFACE()
-*/
-/* @@MIDL_FILE_HEADING( ) */
-
-#pragma warning( disable: 4049 ) /* more than 64k source lines */
-
-
-#ifdef __cplusplus
-extern "C"{
-#endif
-
-
-#include <rpc.h>
-#include <rpcndr.h>
-
-#ifdef _MIDL_USE_GUIDDEF_
-
-#ifndef INITGUID
-#define INITGUID
-#include <guiddef.h>
-#undef INITGUID
-#else
-#include <guiddef.h>
-#endif
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
-
-#else // !_MIDL_USE_GUIDDEF_
-
-#ifndef __IID_DEFINED__
-#define __IID_DEFINED__
-
-typedef struct _IID
-{
- unsigned long x;
- unsigned short s1;
- unsigned short s2;
- unsigned char c[8];
-} IID;
-
-#endif // __IID_DEFINED__
-
-#ifndef CLSID_DEFINED
-#define CLSID_DEFINED
-typedef IID CLSID;
-#endif // CLSID_DEFINED
-
-#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
- const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
-
-#endif !_MIDL_USE_GUIDDEF_
-
-MIDL_DEFINE_GUID(IID, LIBID_IAccessible2Lib,0xc974e070,0x3787,0x490a,0x87,0xb0,0xe3,0x33,0xb0,0x6c,0xa1,0xe2);
-
-#undef MIDL_DEFINE_GUID
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/src/3rdparty/iaccessible2/generated/x86/dlldata.c b/src/3rdparty/iaccessible2/generated/x86/dlldata.c
deleted file mode 100644
index e1e15a1fc0..0000000000
--- a/src/3rdparty/iaccessible2/generated/x86/dlldata.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/*********************************************************
- DllData file -- generated by MIDL compiler
-
- DO NOT ALTER THIS FILE
-
- This file is regenerated by MIDL on every IDL file compile.
-
- To completely reconstruct this file, delete it and rerun MIDL
- on all the IDL files in this DLL, specifying this file for the
- /dlldata command line option
-
-*********************************************************/
-
-#define PROXY_DELEGATION
-
-#include <rpcproxy.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EXTERN_PROXY_FILE( Accessible2 )
-EXTERN_PROXY_FILE( AccessibleAction )
-EXTERN_PROXY_FILE( AccessibleApplication )
-EXTERN_PROXY_FILE( AccessibleComponent )
-EXTERN_PROXY_FILE( AccessibleEditableText )
-EXTERN_PROXY_FILE( AccessibleHyperlink )
-EXTERN_PROXY_FILE( AccessibleHypertext )
-EXTERN_PROXY_FILE( AccessibleImage )
-EXTERN_PROXY_FILE( AccessibleRelation )
-EXTERN_PROXY_FILE( AccessibleTable )
-EXTERN_PROXY_FILE( AccessibleTable2 )
-EXTERN_PROXY_FILE( AccessibleTableCell )
-EXTERN_PROXY_FILE( AccessibleText )
-EXTERN_PROXY_FILE( AccessibleValue )
-
-
-PROXYFILE_LIST_START
-/* Start of list */
- REFERENCE_PROXY_FILE( Accessible2 ),
- REFERENCE_PROXY_FILE( AccessibleAction ),
- REFERENCE_PROXY_FILE( AccessibleApplication ),
- REFERENCE_PROXY_FILE( AccessibleComponent ),
- REFERENCE_PROXY_FILE( AccessibleEditableText ),
- REFERENCE_PROXY_FILE( AccessibleHyperlink ),
- REFERENCE_PROXY_FILE( AccessibleHypertext ),
- REFERENCE_PROXY_FILE( AccessibleImage ),
- REFERENCE_PROXY_FILE( AccessibleRelation ),
- REFERENCE_PROXY_FILE( AccessibleTable ),
- REFERENCE_PROXY_FILE( AccessibleTable2 ),
- REFERENCE_PROXY_FILE( AccessibleTableCell ),
- REFERENCE_PROXY_FILE( AccessibleText ),
- REFERENCE_PROXY_FILE( AccessibleValue ),
-/* End of list */
-PROXYFILE_LIST_END
-
-
-DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
-
-#ifdef __cplusplus
-} /*extern "C" */
-#endif
-
-/* end of generated dlldata file */
diff --git a/src/3rdparty/iaccessible2/generated/x86/ia2_api_all.h b/src/3rdparty/iaccessible2/generated/x86/ia2_api_all.h
new file mode 100644
index 0000000000..eb3b57b8bd
--- /dev/null
+++ b/src/3rdparty/iaccessible2/generated/x86/ia2_api_all.h
@@ -0,0 +1,4667 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Mon Aug 11 14:34:41 2014
+ */
+/* Compiler settings for ia2_api_all.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING( ) */
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+#ifndef COM_NO_WINDOWS_H
+#include "windows.h"
+#include "ole2.h"
+#endif /*COM_NO_WINDOWS_H*/
+
+#ifndef __ia2_api_all_h__
+#define __ia2_api_all_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */
+
+#ifndef __IAccessibleRelation_FWD_DEFINED__
+#define __IAccessibleRelation_FWD_DEFINED__
+typedef interface IAccessibleRelation IAccessibleRelation;
+#endif /* __IAccessibleRelation_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleAction_FWD_DEFINED__
+#define __IAccessibleAction_FWD_DEFINED__
+typedef interface IAccessibleAction IAccessibleAction;
+#endif /* __IAccessibleAction_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_FWD_DEFINED__
+#define __IAccessible2_FWD_DEFINED__
+typedef interface IAccessible2 IAccessible2;
+#endif /* __IAccessible2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_FWD_DEFINED__
+#define __IAccessible2_2_FWD_DEFINED__
+typedef interface IAccessible2_2 IAccessible2_2;
+#endif /* __IAccessible2_2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleComponent_FWD_DEFINED__
+#define __IAccessibleComponent_FWD_DEFINED__
+typedef interface IAccessibleComponent IAccessibleComponent;
+#endif /* __IAccessibleComponent_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_FWD_DEFINED__
+#define __IAccessibleValue_FWD_DEFINED__
+typedef interface IAccessibleValue IAccessibleValue;
+#endif /* __IAccessibleValue_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText_FWD_DEFINED__
+#define __IAccessibleText_FWD_DEFINED__
+typedef interface IAccessibleText IAccessibleText;
+#endif /* __IAccessibleText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_FWD_DEFINED__
+#define __IAccessibleText2_FWD_DEFINED__
+typedef interface IAccessibleText2 IAccessibleText2;
+#endif /* __IAccessibleText2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_FWD_DEFINED__
+#define __IAccessibleEditableText_FWD_DEFINED__
+typedef interface IAccessibleEditableText IAccessibleEditableText;
+#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_FWD_DEFINED__
+#define __IAccessibleHyperlink_FWD_DEFINED__
+typedef interface IAccessibleHyperlink IAccessibleHyperlink;
+#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_FWD_DEFINED__
+#define __IAccessibleHypertext_FWD_DEFINED__
+typedef interface IAccessibleHypertext IAccessibleHypertext;
+#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_FWD_DEFINED__
+#define __IAccessibleHypertext2_FWD_DEFINED__
+typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
+#endif /* __IAccessibleHypertext2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_FWD_DEFINED__
+#define __IAccessibleTable_FWD_DEFINED__
+typedef interface IAccessibleTable IAccessibleTable;
+#endif /* __IAccessibleTable_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_FWD_DEFINED__
+#define __IAccessibleTable2_FWD_DEFINED__
+typedef interface IAccessibleTable2 IAccessibleTable2;
+#endif /* __IAccessibleTable2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_FWD_DEFINED__
+#define __IAccessibleTableCell_FWD_DEFINED__
+typedef interface IAccessibleTableCell IAccessibleTableCell;
+#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_FWD_DEFINED__
+#define __IAccessibleImage_FWD_DEFINED__
+typedef interface IAccessibleImage IAccessibleImage;
+#endif /* __IAccessibleImage_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleApplication_FWD_DEFINED__
+#define __IAccessibleApplication_FWD_DEFINED__
+typedef interface IAccessibleApplication IAccessibleApplication;
+#endif /* __IAccessibleApplication_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_FWD_DEFINED__
+#define __IAccessibleDocument_FWD_DEFINED__
+typedef interface IAccessibleDocument IAccessibleDocument;
+#endif /* __IAccessibleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_FWD_DEFINED__
+#define __IAccessible2_FWD_DEFINED__
+typedef interface IAccessible2 IAccessible2;
+#endif /* __IAccessible2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_FWD_DEFINED__
+#define __IAccessible2_2_FWD_DEFINED__
+typedef interface IAccessible2_2 IAccessible2_2;
+#endif /* __IAccessible2_2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleAction_FWD_DEFINED__
+#define __IAccessibleAction_FWD_DEFINED__
+typedef interface IAccessibleAction IAccessibleAction;
+#endif /* __IAccessibleAction_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleApplication_FWD_DEFINED__
+#define __IAccessibleApplication_FWD_DEFINED__
+typedef interface IAccessibleApplication IAccessibleApplication;
+#endif /* __IAccessibleApplication_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleComponent_FWD_DEFINED__
+#define __IAccessibleComponent_FWD_DEFINED__
+typedef interface IAccessibleComponent IAccessibleComponent;
+#endif /* __IAccessibleComponent_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_FWD_DEFINED__
+#define __IAccessibleDocument_FWD_DEFINED__
+typedef interface IAccessibleDocument IAccessibleDocument;
+#endif /* __IAccessibleDocument_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_FWD_DEFINED__
+#define __IAccessibleEditableText_FWD_DEFINED__
+typedef interface IAccessibleEditableText IAccessibleEditableText;
+#endif /* __IAccessibleEditableText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_FWD_DEFINED__
+#define __IAccessibleHyperlink_FWD_DEFINED__
+typedef interface IAccessibleHyperlink IAccessibleHyperlink;
+#endif /* __IAccessibleHyperlink_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText_FWD_DEFINED__
+#define __IAccessibleText_FWD_DEFINED__
+typedef interface IAccessibleText IAccessibleText;
+#endif /* __IAccessibleText_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_FWD_DEFINED__
+#define __IAccessibleHypertext_FWD_DEFINED__
+typedef interface IAccessibleHypertext IAccessibleHypertext;
+#endif /* __IAccessibleHypertext_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_FWD_DEFINED__
+#define __IAccessibleHypertext2_FWD_DEFINED__
+typedef interface IAccessibleHypertext2 IAccessibleHypertext2;
+#endif /* __IAccessibleHypertext2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_FWD_DEFINED__
+#define __IAccessibleImage_FWD_DEFINED__
+typedef interface IAccessibleImage IAccessibleImage;
+#endif /* __IAccessibleImage_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleRelation_FWD_DEFINED__
+#define __IAccessibleRelation_FWD_DEFINED__
+typedef interface IAccessibleRelation IAccessibleRelation;
+#endif /* __IAccessibleRelation_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_FWD_DEFINED__
+#define __IAccessibleTable_FWD_DEFINED__
+typedef interface IAccessibleTable IAccessibleTable;
+#endif /* __IAccessibleTable_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_FWD_DEFINED__
+#define __IAccessibleTable2_FWD_DEFINED__
+typedef interface IAccessibleTable2 IAccessibleTable2;
+#endif /* __IAccessibleTable2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_FWD_DEFINED__
+#define __IAccessibleTableCell_FWD_DEFINED__
+typedef interface IAccessibleTableCell IAccessibleTableCell;
+#endif /* __IAccessibleTableCell_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_FWD_DEFINED__
+#define __IAccessibleText2_FWD_DEFINED__
+typedef interface IAccessibleText2 IAccessibleText2;
+#endif /* __IAccessibleText2_FWD_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_FWD_DEFINED__
+#define __IAccessibleValue_FWD_DEFINED__
+typedef interface IAccessibleValue IAccessibleValue;
+#endif /* __IAccessibleValue_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "objidl.h"
+#include "oaidl.h"
+#include "oleacc.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0000 */
+/* [local] */
+
+
+enum IA2ScrollType
+ { IA2_SCROLL_TYPE_TOP_LEFT = 0,
+ IA2_SCROLL_TYPE_BOTTOM_RIGHT = ( IA2_SCROLL_TYPE_TOP_LEFT + 1 ) ,
+ IA2_SCROLL_TYPE_TOP_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_RIGHT + 1 ) ,
+ IA2_SCROLL_TYPE_BOTTOM_EDGE = ( IA2_SCROLL_TYPE_TOP_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_LEFT_EDGE = ( IA2_SCROLL_TYPE_BOTTOM_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_RIGHT_EDGE = ( IA2_SCROLL_TYPE_LEFT_EDGE + 1 ) ,
+ IA2_SCROLL_TYPE_ANYWHERE = ( IA2_SCROLL_TYPE_RIGHT_EDGE + 1 )
+ } ;
+
+enum IA2CoordinateType
+ { IA2_COORDTYPE_SCREEN_RELATIVE = 0,
+ IA2_COORDTYPE_PARENT_RELATIVE = ( IA2_COORDTYPE_SCREEN_RELATIVE + 1 )
+ } ;
+
+enum IA2TextSpecialOffsets
+ { IA2_TEXT_OFFSET_LENGTH = -1,
+ IA2_TEXT_OFFSET_CARET = -2
+ } ;
+
+enum IA2TableModelChangeType
+ { IA2_TABLE_MODEL_CHANGE_INSERT = 0,
+ IA2_TABLE_MODEL_CHANGE_DELETE = ( IA2_TABLE_MODEL_CHANGE_INSERT + 1 ) ,
+ IA2_TABLE_MODEL_CHANGE_UPDATE = ( IA2_TABLE_MODEL_CHANGE_DELETE + 1 )
+ } ;
+typedef struct IA2TableModelChange
+ {
+ enum IA2TableModelChangeType type;
+ long firstRow;
+ long lastRow;
+ long firstColumn;
+ long lastColumn;
+ } IA2TableModelChange;
+
+#define IA2_RELATION_CONTAINING_APPLICATION ( L"containingApplication" )
+
+#define IA2_RELATION_CONTAINING_DOCUMENT ( L"containingDocument" )
+
+#define IA2_RELATION_CONTAINING_TAB_PANE ( L"containingTabPane" )
+
+#define IA2_RELATION_CONTAINING_WINDOW ( L"containingWindow" )
+
+#define IA2_RELATION_CONTROLLED_BY ( L"controlledBy" )
+
+#define IA2_RELATION_CONTROLLER_FOR ( L"controllerFor" )
+
+#define IA2_RELATION_DESCRIBED_BY ( L"describedBy" )
+
+#define IA2_RELATION_DESCRIPTION_FOR ( L"descriptionFor" )
+
+#define IA2_RELATION_EMBEDDED_BY ( L"embeddedBy" )
+
+#define IA2_RELATION_EMBEDS ( L"embeds" )
+
+#define IA2_RELATION_FLOWS_FROM ( L"flowsFrom" )
+
+#define IA2_RELATION_FLOWS_TO ( L"flowsTo" )
+
+#define IA2_RELATION_LABEL_FOR ( L"labelFor" )
+
+#define IA2_RELATION_LABELED_BY ( L"labelledBy" )
+
+#define IA2_RELATION_LABELLED_BY ( L"labelledBy" )
+
+#define IA2_RELATION_MEMBER_OF ( L"memberOf" )
+
+#define IA2_RELATION_NEXT_TABBABLE ( L"nextTabbable" )
+
+#define IA2_RELATION_NODE_CHILD_OF ( L"nodeChildOf" )
+
+#define IA2_RELATION_NODE_PARENT_OF ( L"nodeParentOf" )
+
+#define IA2_RELATION_PARENT_WINDOW_OF ( L"parentWindowOf" )
+
+#define IA2_RELATION_POPUP_FOR ( L"popupFor" )
+
+#define IA2_RELATION_PREVIOUS_TABBABLE ( L"previousTabbable" )
+
+#define IA2_RELATION_SUBWINDOW_OF ( L"subwindowOf" )
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0000_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0000_v0_0_s_ifspec;
+
+#ifndef __IAccessibleRelation_INTERFACE_DEFINED__
+#define __IAccessibleRelation_INTERFACE_DEFINED__
+
+/* interface IAccessibleRelation */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleRelation;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("7CDF86EE-C3DA-496a-BDA4-281B336E1FDC")
+ IAccessibleRelation : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationType(
+ /* [retval][out] */ BSTR *relationType) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedRelationType(
+ /* [retval][out] */ BSTR *localizedRelationType) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nTargets(
+ /* [retval][out] */ long *nTargets) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_target(
+ /* [in] */ long targetIndex,
+ /* [retval][out] */ IUnknown **target) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_targets(
+ /* [in] */ long maxTargets,
+ /* [length_is][size_is][out] */ IUnknown **targets,
+ /* [retval][out] */ long *nTargets) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleRelationVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleRelation * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleRelation * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleRelation * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationType )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ BSTR *relationType);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedRelationType )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ BSTR *localizedRelationType);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nTargets )(
+ IAccessibleRelation * This,
+ /* [retval][out] */ long *nTargets);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_target )(
+ IAccessibleRelation * This,
+ /* [in] */ long targetIndex,
+ /* [retval][out] */ IUnknown **target);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_targets )(
+ IAccessibleRelation * This,
+ /* [in] */ long maxTargets,
+ /* [length_is][size_is][out] */ IUnknown **targets,
+ /* [retval][out] */ long *nTargets);
+
+ END_INTERFACE
+ } IAccessibleRelationVtbl;
+
+ interface IAccessibleRelation
+ {
+ CONST_VTBL struct IAccessibleRelationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleRelation_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleRelation_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleRelation_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleRelation_get_relationType(This,relationType) \
+ ( (This)->lpVtbl -> get_relationType(This,relationType) )
+
+#define IAccessibleRelation_get_localizedRelationType(This,localizedRelationType) \
+ ( (This)->lpVtbl -> get_localizedRelationType(This,localizedRelationType) )
+
+#define IAccessibleRelation_get_nTargets(This,nTargets) \
+ ( (This)->lpVtbl -> get_nTargets(This,nTargets) )
+
+#define IAccessibleRelation_get_target(This,targetIndex,target) \
+ ( (This)->lpVtbl -> get_target(This,targetIndex,target) )
+
+#define IAccessibleRelation_get_targets(This,maxTargets,targets,nTargets) \
+ ( (This)->lpVtbl -> get_targets(This,maxTargets,targets,nTargets) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleRelation_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0001 */
+/* [local] */
+
+
+enum IA2Actions
+ { IA2_ACTION_OPEN = -1,
+ IA2_ACTION_COMPLETE = -2,
+ IA2_ACTION_CLOSE = -3
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0001_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0001_v0_0_s_ifspec;
+
+#ifndef __IAccessibleAction_INTERFACE_DEFINED__
+#define __IAccessibleAction_INTERFACE_DEFINED__
+
+/* interface IAccessibleAction */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleAction;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("B70D9F59-3B5A-4dba-AB9E-22012F607DF5")
+ IAccessibleAction : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE nActions(
+ /* [retval][out] */ long *nActions) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE doAction(
+ /* [in] */ long actionIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_keyBinding(
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_name(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedName(
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleActionVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleAction * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleAction * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleAction * This);
+
+ HRESULT ( STDMETHODCALLTYPE *nActions )(
+ IAccessibleAction * This,
+ /* [retval][out] */ long *nActions);
+
+ HRESULT ( STDMETHODCALLTYPE *doAction )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
+ IAccessibleAction * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName);
+
+ END_INTERFACE
+ } IAccessibleActionVtbl;
+
+ interface IAccessibleAction
+ {
+ CONST_VTBL struct IAccessibleActionVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleAction_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleAction_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleAction_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleAction_nActions(This,nActions) \
+ ( (This)->lpVtbl -> nActions(This,nActions) )
+
+#define IAccessibleAction_doAction(This,actionIndex) \
+ ( (This)->lpVtbl -> doAction(This,actionIndex) )
+
+#define IAccessibleAction_get_description(This,actionIndex,description) \
+ ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
+
+#define IAccessibleAction_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
+ ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
+
+#define IAccessibleAction_get_name(This,actionIndex,name) \
+ ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
+
+#define IAccessibleAction_get_localizedName(This,actionIndex,localizedName) \
+ ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleAction_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0002 */
+/* [local] */
+
+
+enum IA2Role
+ { IA2_ROLE_UNKNOWN = 0,
+ IA2_ROLE_CANVAS = 0x401,
+ IA2_ROLE_CAPTION = ( IA2_ROLE_CANVAS + 1 ) ,
+ IA2_ROLE_CHECK_MENU_ITEM = ( IA2_ROLE_CAPTION + 1 ) ,
+ IA2_ROLE_COLOR_CHOOSER = ( IA2_ROLE_CHECK_MENU_ITEM + 1 ) ,
+ IA2_ROLE_DATE_EDITOR = ( IA2_ROLE_COLOR_CHOOSER + 1 ) ,
+ IA2_ROLE_DESKTOP_ICON = ( IA2_ROLE_DATE_EDITOR + 1 ) ,
+ IA2_ROLE_DESKTOP_PANE = ( IA2_ROLE_DESKTOP_ICON + 1 ) ,
+ IA2_ROLE_DIRECTORY_PANE = ( IA2_ROLE_DESKTOP_PANE + 1 ) ,
+ IA2_ROLE_EDITBAR = ( IA2_ROLE_DIRECTORY_PANE + 1 ) ,
+ IA2_ROLE_EMBEDDED_OBJECT = ( IA2_ROLE_EDITBAR + 1 ) ,
+ IA2_ROLE_ENDNOTE = ( IA2_ROLE_EMBEDDED_OBJECT + 1 ) ,
+ IA2_ROLE_FILE_CHOOSER = ( IA2_ROLE_ENDNOTE + 1 ) ,
+ IA2_ROLE_FONT_CHOOSER = ( IA2_ROLE_FILE_CHOOSER + 1 ) ,
+ IA2_ROLE_FOOTER = ( IA2_ROLE_FONT_CHOOSER + 1 ) ,
+ IA2_ROLE_FOOTNOTE = ( IA2_ROLE_FOOTER + 1 ) ,
+ IA2_ROLE_FORM = ( IA2_ROLE_FOOTNOTE + 1 ) ,
+ IA2_ROLE_FRAME = ( IA2_ROLE_FORM + 1 ) ,
+ IA2_ROLE_GLASS_PANE = ( IA2_ROLE_FRAME + 1 ) ,
+ IA2_ROLE_HEADER = ( IA2_ROLE_GLASS_PANE + 1 ) ,
+ IA2_ROLE_HEADING = ( IA2_ROLE_HEADER + 1 ) ,
+ IA2_ROLE_ICON = ( IA2_ROLE_HEADING + 1 ) ,
+ IA2_ROLE_IMAGE_MAP = ( IA2_ROLE_ICON + 1 ) ,
+ IA2_ROLE_INPUT_METHOD_WINDOW = ( IA2_ROLE_IMAGE_MAP + 1 ) ,
+ IA2_ROLE_INTERNAL_FRAME = ( IA2_ROLE_INPUT_METHOD_WINDOW + 1 ) ,
+ IA2_ROLE_LABEL = ( IA2_ROLE_INTERNAL_FRAME + 1 ) ,
+ IA2_ROLE_LAYERED_PANE = ( IA2_ROLE_LABEL + 1 ) ,
+ IA2_ROLE_NOTE = ( IA2_ROLE_LAYERED_PANE + 1 ) ,
+ IA2_ROLE_OPTION_PANE = ( IA2_ROLE_NOTE + 1 ) ,
+ IA2_ROLE_PAGE = ( IA2_ROLE_OPTION_PANE + 1 ) ,
+ IA2_ROLE_PARAGRAPH = ( IA2_ROLE_PAGE + 1 ) ,
+ IA2_ROLE_RADIO_MENU_ITEM = ( IA2_ROLE_PARAGRAPH + 1 ) ,
+ IA2_ROLE_REDUNDANT_OBJECT = ( IA2_ROLE_RADIO_MENU_ITEM + 1 ) ,
+ IA2_ROLE_ROOT_PANE = ( IA2_ROLE_REDUNDANT_OBJECT + 1 ) ,
+ IA2_ROLE_RULER = ( IA2_ROLE_ROOT_PANE + 1 ) ,
+ IA2_ROLE_SCROLL_PANE = ( IA2_ROLE_RULER + 1 ) ,
+ IA2_ROLE_SECTION = ( IA2_ROLE_SCROLL_PANE + 1 ) ,
+ IA2_ROLE_SHAPE = ( IA2_ROLE_SECTION + 1 ) ,
+ IA2_ROLE_SPLIT_PANE = ( IA2_ROLE_SHAPE + 1 ) ,
+ IA2_ROLE_TEAR_OFF_MENU = ( IA2_ROLE_SPLIT_PANE + 1 ) ,
+ IA2_ROLE_TERMINAL = ( IA2_ROLE_TEAR_OFF_MENU + 1 ) ,
+ IA2_ROLE_TEXT_FRAME = ( IA2_ROLE_TERMINAL + 1 ) ,
+ IA2_ROLE_TOGGLE_BUTTON = ( IA2_ROLE_TEXT_FRAME + 1 ) ,
+ IA2_ROLE_VIEW_PORT = ( IA2_ROLE_TOGGLE_BUTTON + 1 ) ,
+ IA2_ROLE_COMPLEMENTARY_CONTENT = ( IA2_ROLE_VIEW_PORT + 1 )
+ } ;
+typedef long AccessibleStates;
+
+
+enum IA2States
+ { IA2_STATE_ACTIVE = 0x1,
+ IA2_STATE_ARMED = 0x2,
+ IA2_STATE_DEFUNCT = 0x4,
+ IA2_STATE_EDITABLE = 0x8,
+ IA2_STATE_HORIZONTAL = 0x10,
+ IA2_STATE_ICONIFIED = 0x20,
+ IA2_STATE_INVALID_ENTRY = 0x40,
+ IA2_STATE_MANAGES_DESCENDANTS = 0x80,
+ IA2_STATE_MODAL = 0x100,
+ IA2_STATE_MULTI_LINE = 0x200,
+ IA2_STATE_OPAQUE = 0x400,
+ IA2_STATE_REQUIRED = 0x800,
+ IA2_STATE_SELECTABLE_TEXT = 0x1000,
+ IA2_STATE_SINGLE_LINE = 0x2000,
+ IA2_STATE_STALE = 0x4000,
+ IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
+ IA2_STATE_TRANSIENT = 0x10000,
+ IA2_STATE_VERTICAL = 0x20000,
+ IA2_STATE_CHECKABLE = 0x40000,
+ IA2_STATE_PINNED = 0x80000
+ } ;
+typedef struct IA2Locale
+ {
+ BSTR language;
+ BSTR country;
+ BSTR variant;
+ } IA2Locale;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0002_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0002_v0_0_s_ifspec;
+
+#ifndef __IAccessible2_INTERFACE_DEFINED__
+#define __IAccessible2_INTERFACE_DEFINED__
+
+/* interface IAccessible2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessible2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("E89F726E-C4F4-4c19-BB19-B647D7FA8478")
+ IAccessible2 : public IAccessible
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRelations(
+ /* [retval][out] */ long *nRelations) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relation(
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relations(
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE role(
+ /* [retval][out] */ long *role) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollTo(
+ /* [in] */ enum IA2ScrollType scrollType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollToPoint(
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_groupPosition(
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_states(
+ /* [retval][out] */ AccessibleStates *states) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedRole(
+ /* [retval][out] */ BSTR *extendedRole) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedRole(
+ /* [retval][out] */ BSTR *localizedExtendedRole) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nExtendedStates(
+ /* [retval][out] */ long *nExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedStates(
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedExtendedStates(
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_uniqueID(
+ /* [retval][out] */ long *uniqueID) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_windowHandle(
+ /* [retval][out] */ HWND *windowHandle) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_indexInParent(
+ /* [retval][out] */ long *indexInParent) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locale(
+ /* [retval][out] */ IA2Locale *locale) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
+ /* [retval][out] */ BSTR *attributes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessible2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessible2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessible2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessible2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ IAccessible2 * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ IAccessible2 * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ IAccessible2 * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [range][in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ IAccessible2 * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
+ IAccessible2 * This,
+ /* [retval][out] */ IDispatch **ppdispParent);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *pcountChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
+ IAccessible2 * This,
+ /* [in] */ VARIANT varChild,
+ /* [retval][out] */ IDispatch **ppdispChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszName);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszValue);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDescription);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarRole);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarState);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszHelp);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
+ IAccessible2 * This,
+ /* [out] */ BSTR *pszHelpFile,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ long *pidTopic);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszKeyboardShortcut);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
+ IAccessible2 * This,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
+ IAccessible2 * This,
+ /* [retval][out] */ VARIANT *pvarChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDefaultAction);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
+ IAccessible2 * This,
+ /* [in] */ long flagsSelect,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
+ IAccessible2 * This,
+ /* [out] */ long *pxLeft,
+ /* [out] */ long *pyTop,
+ /* [out] */ long *pcxWidth,
+ /* [out] */ long *pcyHeight,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
+ IAccessible2 * This,
+ /* [in] */ long navDir,
+ /* [optional][in] */ VARIANT varStart,
+ /* [retval][out] */ VARIANT *pvarEndUpAt);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
+ IAccessible2 * This,
+ /* [in] */ long xLeft,
+ /* [in] */ long yTop,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szName);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
+ IAccessible2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *nRelations);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
+ IAccessible2 * This,
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
+ IAccessible2 * This,
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations);
+
+ HRESULT ( STDMETHODCALLTYPE *role )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *role);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollTo )(
+ IAccessible2 * This,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
+ IAccessible2 * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
+ IAccessible2 * This,
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
+ IAccessible2 * This,
+ /* [retval][out] */ AccessibleStates *states);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *extendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *localizedExtendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
+ IAccessible2 * This,
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
+ IAccessible2 * This,
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *uniqueID);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
+ IAccessible2 * This,
+ /* [retval][out] */ HWND *windowHandle);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
+ IAccessible2 * This,
+ /* [retval][out] */ long *indexInParent);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
+ IAccessible2 * This,
+ /* [retval][out] */ IA2Locale *locale);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessible2 * This,
+ /* [retval][out] */ BSTR *attributes);
+
+ END_INTERFACE
+ } IAccessible2Vtbl;
+
+ interface IAccessible2
+ {
+ CONST_VTBL struct IAccessible2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessible2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessible2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessible2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessible2_GetTypeInfoCount(This,pctinfo) \
+ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
+
+#define IAccessible2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
+
+#define IAccessible2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
+
+#define IAccessible2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
+
+
+#define IAccessible2_get_accParent(This,ppdispParent) \
+ ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
+
+#define IAccessible2_get_accChildCount(This,pcountChildren) \
+ ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
+
+#define IAccessible2_get_accChild(This,varChild,ppdispChild) \
+ ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
+
+#define IAccessible2_get_accName(This,varChild,pszName) \
+ ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
+
+#define IAccessible2_get_accValue(This,varChild,pszValue) \
+ ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
+
+#define IAccessible2_get_accDescription(This,varChild,pszDescription) \
+ ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
+
+#define IAccessible2_get_accRole(This,varChild,pvarRole) \
+ ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
+
+#define IAccessible2_get_accState(This,varChild,pvarState) \
+ ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
+
+#define IAccessible2_get_accHelp(This,varChild,pszHelp) \
+ ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
+
+#define IAccessible2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
+ ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
+
+#define IAccessible2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
+ ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
+
+#define IAccessible2_get_accFocus(This,pvarChild) \
+ ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
+
+#define IAccessible2_get_accSelection(This,pvarChildren) \
+ ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
+
+#define IAccessible2_get_accDefaultAction(This,varChild,pszDefaultAction) \
+ ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
+
+#define IAccessible2_accSelect(This,flagsSelect,varChild) \
+ ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
+
+#define IAccessible2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
+ ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
+
+#define IAccessible2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
+ ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
+
+#define IAccessible2_accHitTest(This,xLeft,yTop,pvarChild) \
+ ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
+
+#define IAccessible2_accDoDefaultAction(This,varChild) \
+ ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
+
+#define IAccessible2_put_accName(This,varChild,szName) \
+ ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
+
+#define IAccessible2_put_accValue(This,varChild,szValue) \
+ ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
+
+
+#define IAccessible2_get_nRelations(This,nRelations) \
+ ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
+
+#define IAccessible2_get_relation(This,relationIndex,relation) \
+ ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
+
+#define IAccessible2_get_relations(This,maxRelations,relations,nRelations) \
+ ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
+
+#define IAccessible2_role(This,role) \
+ ( (This)->lpVtbl -> role(This,role) )
+
+#define IAccessible2_scrollTo(This,scrollType) \
+ ( (This)->lpVtbl -> scrollTo(This,scrollType) )
+
+#define IAccessible2_scrollToPoint(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
+
+#define IAccessible2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
+ ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
+
+#define IAccessible2_get_states(This,states) \
+ ( (This)->lpVtbl -> get_states(This,states) )
+
+#define IAccessible2_get_extendedRole(This,extendedRole) \
+ ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
+
+#define IAccessible2_get_localizedExtendedRole(This,localizedExtendedRole) \
+ ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
+
+#define IAccessible2_get_nExtendedStates(This,nExtendedStates) \
+ ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
+
+#define IAccessible2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
+ ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
+
+#define IAccessible2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
+ ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
+
+#define IAccessible2_get_uniqueID(This,uniqueID) \
+ ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
+
+#define IAccessible2_get_windowHandle(This,windowHandle) \
+ ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
+
+#define IAccessible2_get_indexInParent(This,indexInParent) \
+ ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
+
+#define IAccessible2_get_locale(This,locale) \
+ ( (This)->lpVtbl -> get_locale(This,locale) )
+
+#define IAccessible2_get_attributes(This,attributes) \
+ ( (This)->lpVtbl -> get_attributes(This,attributes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessible2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessible2_2_INTERFACE_DEFINED__
+#define __IAccessible2_2_INTERFACE_DEFINED__
+
+/* interface IAccessible2_2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessible2_2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6C9430E9-299D-4E6F-BD01-A82A1E88D3FF")
+ IAccessible2_2 : public IAccessible2
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attribute(
+ /* [in] */ BSTR name,
+ /* [retval][out] */ VARIANT *attribute) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleWithCaret(
+ /* [out] */ IUnknown **accessible,
+ /* [retval][out] */ long *caretOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_relationTargetsOfType(
+ /* [in] */ BSTR type,
+ /* [in] */ long maxTargets,
+ /* [size_is][size_is][out] */ IUnknown ***targets,
+ /* [retval][out] */ long *nTargets) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessible2_2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessible2_2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessible2_2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessible2_2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfoCount )(
+ IAccessible2_2 * This,
+ /* [out] */ UINT *pctinfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeInfo )(
+ IAccessible2_2 * This,
+ /* [in] */ UINT iTInfo,
+ /* [in] */ LCID lcid,
+ /* [out] */ ITypeInfo **ppTInfo);
+
+ HRESULT ( STDMETHODCALLTYPE *GetIDsOfNames )(
+ IAccessible2_2 * This,
+ /* [in] */ REFIID riid,
+ /* [size_is][in] */ LPOLESTR *rgszNames,
+ /* [range][in] */ UINT cNames,
+ /* [in] */ LCID lcid,
+ /* [size_is][out] */ DISPID *rgDispId);
+
+ /* [local] */ HRESULT ( STDMETHODCALLTYPE *Invoke )(
+ IAccessible2_2 * This,
+ /* [in] */ DISPID dispIdMember,
+ /* [in] */ REFIID riid,
+ /* [in] */ LCID lcid,
+ /* [in] */ WORD wFlags,
+ /* [out][in] */ DISPPARAMS *pDispParams,
+ /* [out] */ VARIANT *pVarResult,
+ /* [out] */ EXCEPINFO *pExcepInfo,
+ /* [out] */ UINT *puArgErr);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accParent )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ IDispatch **ppdispParent);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChildCount )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *pcountChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accChild )(
+ IAccessible2_2 * This,
+ /* [in] */ VARIANT varChild,
+ /* [retval][out] */ IDispatch **ppdispChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accName )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszName);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accValue )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszValue);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDescription )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDescription);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accRole )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarRole);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accState )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ VARIANT *pvarState);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelp )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszHelp);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accHelpTopic )(
+ IAccessible2_2 * This,
+ /* [out] */ BSTR *pszHelpFile,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ long *pidTopic);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accKeyboardShortcut )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszKeyboardShortcut);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accFocus )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accSelection )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ VARIANT *pvarChildren);
+
+ /* [id][propget][hidden] */ HRESULT ( STDMETHODCALLTYPE *get_accDefaultAction )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [retval][out] */ BSTR *pszDefaultAction);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accSelect )(
+ IAccessible2_2 * This,
+ /* [in] */ long flagsSelect,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accLocation )(
+ IAccessible2_2 * This,
+ /* [out] */ long *pxLeft,
+ /* [out] */ long *pyTop,
+ /* [out] */ long *pcxWidth,
+ /* [out] */ long *pcyHeight,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accNavigate )(
+ IAccessible2_2 * This,
+ /* [in] */ long navDir,
+ /* [optional][in] */ VARIANT varStart,
+ /* [retval][out] */ VARIANT *pvarEndUpAt);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accHitTest )(
+ IAccessible2_2 * This,
+ /* [in] */ long xLeft,
+ /* [in] */ long yTop,
+ /* [retval][out] */ VARIANT *pvarChild);
+
+ /* [id][hidden] */ HRESULT ( STDMETHODCALLTYPE *accDoDefaultAction )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accName )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szName);
+
+ /* [id][propput][hidden] */ HRESULT ( STDMETHODCALLTYPE *put_accValue )(
+ IAccessible2_2 * This,
+ /* [optional][in] */ VARIANT varChild,
+ /* [in] */ BSTR szValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRelations )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *nRelations);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relation )(
+ IAccessible2_2 * This,
+ /* [in] */ long relationIndex,
+ /* [retval][out] */ IAccessibleRelation **relation);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relations )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxRelations,
+ /* [length_is][size_is][out] */ IAccessibleRelation **relations,
+ /* [retval][out] */ long *nRelations);
+
+ HRESULT ( STDMETHODCALLTYPE *role )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *role);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollTo )(
+ IAccessible2_2 * This,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollToPoint )(
+ IAccessible2_2 * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_groupPosition )(
+ IAccessible2_2 * This,
+ /* [out] */ long *groupLevel,
+ /* [out] */ long *similarItemsInGroup,
+ /* [retval][out] */ long *positionInGroup);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_states )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ AccessibleStates *states);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedRole )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *extendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedRole )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *localizedExtendedRole);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nExtendedStates )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_extendedStates )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **extendedStates,
+ /* [retval][out] */ long *nExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedExtendedStates )(
+ IAccessible2_2 * This,
+ /* [in] */ long maxLocalizedExtendedStates,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedExtendedStates,
+ /* [retval][out] */ long *nLocalizedExtendedStates);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_uniqueID )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *uniqueID);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_windowHandle )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ HWND *windowHandle);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_indexInParent )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ long *indexInParent);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locale )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ IA2Locale *locale);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessible2_2 * This,
+ /* [retval][out] */ BSTR *attributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attribute )(
+ IAccessible2_2 * This,
+ /* [in] */ BSTR name,
+ /* [retval][out] */ VARIANT *attribute);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleWithCaret )(
+ IAccessible2_2 * This,
+ /* [out] */ IUnknown **accessible,
+ /* [retval][out] */ long *caretOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_relationTargetsOfType )(
+ IAccessible2_2 * This,
+ /* [in] */ BSTR type,
+ /* [in] */ long maxTargets,
+ /* [size_is][size_is][out] */ IUnknown ***targets,
+ /* [retval][out] */ long *nTargets);
+
+ END_INTERFACE
+ } IAccessible2_2Vtbl;
+
+ interface IAccessible2_2
+ {
+ CONST_VTBL struct IAccessible2_2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessible2_2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessible2_2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessible2_2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessible2_2_GetTypeInfoCount(This,pctinfo) \
+ ( (This)->lpVtbl -> GetTypeInfoCount(This,pctinfo) )
+
+#define IAccessible2_2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) \
+ ( (This)->lpVtbl -> GetTypeInfo(This,iTInfo,lcid,ppTInfo) )
+
+#define IAccessible2_2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) \
+ ( (This)->lpVtbl -> GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) )
+
+#define IAccessible2_2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) \
+ ( (This)->lpVtbl -> Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) )
+
+
+#define IAccessible2_2_get_accParent(This,ppdispParent) \
+ ( (This)->lpVtbl -> get_accParent(This,ppdispParent) )
+
+#define IAccessible2_2_get_accChildCount(This,pcountChildren) \
+ ( (This)->lpVtbl -> get_accChildCount(This,pcountChildren) )
+
+#define IAccessible2_2_get_accChild(This,varChild,ppdispChild) \
+ ( (This)->lpVtbl -> get_accChild(This,varChild,ppdispChild) )
+
+#define IAccessible2_2_get_accName(This,varChild,pszName) \
+ ( (This)->lpVtbl -> get_accName(This,varChild,pszName) )
+
+#define IAccessible2_2_get_accValue(This,varChild,pszValue) \
+ ( (This)->lpVtbl -> get_accValue(This,varChild,pszValue) )
+
+#define IAccessible2_2_get_accDescription(This,varChild,pszDescription) \
+ ( (This)->lpVtbl -> get_accDescription(This,varChild,pszDescription) )
+
+#define IAccessible2_2_get_accRole(This,varChild,pvarRole) \
+ ( (This)->lpVtbl -> get_accRole(This,varChild,pvarRole) )
+
+#define IAccessible2_2_get_accState(This,varChild,pvarState) \
+ ( (This)->lpVtbl -> get_accState(This,varChild,pvarState) )
+
+#define IAccessible2_2_get_accHelp(This,varChild,pszHelp) \
+ ( (This)->lpVtbl -> get_accHelp(This,varChild,pszHelp) )
+
+#define IAccessible2_2_get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) \
+ ( (This)->lpVtbl -> get_accHelpTopic(This,pszHelpFile,varChild,pidTopic) )
+
+#define IAccessible2_2_get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) \
+ ( (This)->lpVtbl -> get_accKeyboardShortcut(This,varChild,pszKeyboardShortcut) )
+
+#define IAccessible2_2_get_accFocus(This,pvarChild) \
+ ( (This)->lpVtbl -> get_accFocus(This,pvarChild) )
+
+#define IAccessible2_2_get_accSelection(This,pvarChildren) \
+ ( (This)->lpVtbl -> get_accSelection(This,pvarChildren) )
+
+#define IAccessible2_2_get_accDefaultAction(This,varChild,pszDefaultAction) \
+ ( (This)->lpVtbl -> get_accDefaultAction(This,varChild,pszDefaultAction) )
+
+#define IAccessible2_2_accSelect(This,flagsSelect,varChild) \
+ ( (This)->lpVtbl -> accSelect(This,flagsSelect,varChild) )
+
+#define IAccessible2_2_accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) \
+ ( (This)->lpVtbl -> accLocation(This,pxLeft,pyTop,pcxWidth,pcyHeight,varChild) )
+
+#define IAccessible2_2_accNavigate(This,navDir,varStart,pvarEndUpAt) \
+ ( (This)->lpVtbl -> accNavigate(This,navDir,varStart,pvarEndUpAt) )
+
+#define IAccessible2_2_accHitTest(This,xLeft,yTop,pvarChild) \
+ ( (This)->lpVtbl -> accHitTest(This,xLeft,yTop,pvarChild) )
+
+#define IAccessible2_2_accDoDefaultAction(This,varChild) \
+ ( (This)->lpVtbl -> accDoDefaultAction(This,varChild) )
+
+#define IAccessible2_2_put_accName(This,varChild,szName) \
+ ( (This)->lpVtbl -> put_accName(This,varChild,szName) )
+
+#define IAccessible2_2_put_accValue(This,varChild,szValue) \
+ ( (This)->lpVtbl -> put_accValue(This,varChild,szValue) )
+
+
+#define IAccessible2_2_get_nRelations(This,nRelations) \
+ ( (This)->lpVtbl -> get_nRelations(This,nRelations) )
+
+#define IAccessible2_2_get_relation(This,relationIndex,relation) \
+ ( (This)->lpVtbl -> get_relation(This,relationIndex,relation) )
+
+#define IAccessible2_2_get_relations(This,maxRelations,relations,nRelations) \
+ ( (This)->lpVtbl -> get_relations(This,maxRelations,relations,nRelations) )
+
+#define IAccessible2_2_role(This,role) \
+ ( (This)->lpVtbl -> role(This,role) )
+
+#define IAccessible2_2_scrollTo(This,scrollType) \
+ ( (This)->lpVtbl -> scrollTo(This,scrollType) )
+
+#define IAccessible2_2_scrollToPoint(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollToPoint(This,coordinateType,x,y) )
+
+#define IAccessible2_2_get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) \
+ ( (This)->lpVtbl -> get_groupPosition(This,groupLevel,similarItemsInGroup,positionInGroup) )
+
+#define IAccessible2_2_get_states(This,states) \
+ ( (This)->lpVtbl -> get_states(This,states) )
+
+#define IAccessible2_2_get_extendedRole(This,extendedRole) \
+ ( (This)->lpVtbl -> get_extendedRole(This,extendedRole) )
+
+#define IAccessible2_2_get_localizedExtendedRole(This,localizedExtendedRole) \
+ ( (This)->lpVtbl -> get_localizedExtendedRole(This,localizedExtendedRole) )
+
+#define IAccessible2_2_get_nExtendedStates(This,nExtendedStates) \
+ ( (This)->lpVtbl -> get_nExtendedStates(This,nExtendedStates) )
+
+#define IAccessible2_2_get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) \
+ ( (This)->lpVtbl -> get_extendedStates(This,maxExtendedStates,extendedStates,nExtendedStates) )
+
+#define IAccessible2_2_get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) \
+ ( (This)->lpVtbl -> get_localizedExtendedStates(This,maxLocalizedExtendedStates,localizedExtendedStates,nLocalizedExtendedStates) )
+
+#define IAccessible2_2_get_uniqueID(This,uniqueID) \
+ ( (This)->lpVtbl -> get_uniqueID(This,uniqueID) )
+
+#define IAccessible2_2_get_windowHandle(This,windowHandle) \
+ ( (This)->lpVtbl -> get_windowHandle(This,windowHandle) )
+
+#define IAccessible2_2_get_indexInParent(This,indexInParent) \
+ ( (This)->lpVtbl -> get_indexInParent(This,indexInParent) )
+
+#define IAccessible2_2_get_locale(This,locale) \
+ ( (This)->lpVtbl -> get_locale(This,locale) )
+
+#define IAccessible2_2_get_attributes(This,attributes) \
+ ( (This)->lpVtbl -> get_attributes(This,attributes) )
+
+
+#define IAccessible2_2_get_attribute(This,name,attribute) \
+ ( (This)->lpVtbl -> get_attribute(This,name,attribute) )
+
+#define IAccessible2_2_get_accessibleWithCaret(This,accessible,caretOffset) \
+ ( (This)->lpVtbl -> get_accessibleWithCaret(This,accessible,caretOffset) )
+
+#define IAccessible2_2_get_relationTargetsOfType(This,type,maxTargets,targets,nTargets) \
+ ( (This)->lpVtbl -> get_relationTargetsOfType(This,type,maxTargets,targets,nTargets) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessible2_2_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0004 */
+/* [local] */
+
+typedef long IA2Color;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0004_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0004_v0_0_s_ifspec;
+
+#ifndef __IAccessibleComponent_INTERFACE_DEFINED__
+#define __IAccessibleComponent_INTERFACE_DEFINED__
+
+/* interface IAccessibleComponent */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleComponent;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("1546D4B0-4C98-4bda-89AE-9A64748BDDE4")
+ IAccessibleComponent : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_locationInParent(
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_foreground(
+ /* [retval][out] */ IA2Color *foreground) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_background(
+ /* [retval][out] */ IA2Color *background) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleComponentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleComponent * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleComponent * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleComponent * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_locationInParent )(
+ IAccessibleComponent * This,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_foreground )(
+ IAccessibleComponent * This,
+ /* [retval][out] */ IA2Color *foreground);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_background )(
+ IAccessibleComponent * This,
+ /* [retval][out] */ IA2Color *background);
+
+ END_INTERFACE
+ } IAccessibleComponentVtbl;
+
+ interface IAccessibleComponent
+ {
+ CONST_VTBL struct IAccessibleComponentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleComponent_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleComponent_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleComponent_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleComponent_get_locationInParent(This,x,y) \
+ ( (This)->lpVtbl -> get_locationInParent(This,x,y) )
+
+#define IAccessibleComponent_get_foreground(This,foreground) \
+ ( (This)->lpVtbl -> get_foreground(This,foreground) )
+
+#define IAccessibleComponent_get_background(This,background) \
+ ( (This)->lpVtbl -> get_background(This,background) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleComponent_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleValue_INTERFACE_DEFINED__
+#define __IAccessibleValue_INTERFACE_DEFINED__
+
+/* interface IAccessibleValue */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleValue;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("35855B5B-C566-4fd0-A7B1-E65465600394")
+ IAccessibleValue : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_currentValue(
+ /* [retval][out] */ VARIANT *currentValue) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setCurrentValue(
+ /* [in] */ VARIANT value) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_maximumValue(
+ /* [retval][out] */ VARIANT *maximumValue) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_minimumValue(
+ /* [retval][out] */ VARIANT *minimumValue) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleValueVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleValue * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleValue * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleValue * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_currentValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *currentValue);
+
+ HRESULT ( STDMETHODCALLTYPE *setCurrentValue )(
+ IAccessibleValue * This,
+ /* [in] */ VARIANT value);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_maximumValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *maximumValue);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_minimumValue )(
+ IAccessibleValue * This,
+ /* [retval][out] */ VARIANT *minimumValue);
+
+ END_INTERFACE
+ } IAccessibleValueVtbl;
+
+ interface IAccessibleValue
+ {
+ CONST_VTBL struct IAccessibleValueVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleValue_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleValue_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleValue_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleValue_get_currentValue(This,currentValue) \
+ ( (This)->lpVtbl -> get_currentValue(This,currentValue) )
+
+#define IAccessibleValue_setCurrentValue(This,value) \
+ ( (This)->lpVtbl -> setCurrentValue(This,value) )
+
+#define IAccessibleValue_get_maximumValue(This,maximumValue) \
+ ( (This)->lpVtbl -> get_maximumValue(This,maximumValue) )
+
+#define IAccessibleValue_get_minimumValue(This,minimumValue) \
+ ( (This)->lpVtbl -> get_minimumValue(This,minimumValue) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleValue_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0006 */
+/* [local] */
+
+typedef struct IA2TextSegment
+ {
+ BSTR text;
+ long start;
+ long end;
+ } IA2TextSegment;
+
+
+enum IA2TextBoundaryType
+ { IA2_TEXT_BOUNDARY_CHAR = 0,
+ IA2_TEXT_BOUNDARY_WORD = ( IA2_TEXT_BOUNDARY_CHAR + 1 ) ,
+ IA2_TEXT_BOUNDARY_SENTENCE = ( IA2_TEXT_BOUNDARY_WORD + 1 ) ,
+ IA2_TEXT_BOUNDARY_PARAGRAPH = ( IA2_TEXT_BOUNDARY_SENTENCE + 1 ) ,
+ IA2_TEXT_BOUNDARY_LINE = ( IA2_TEXT_BOUNDARY_PARAGRAPH + 1 ) ,
+ IA2_TEXT_BOUNDARY_ALL = ( IA2_TEXT_BOUNDARY_LINE + 1 )
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0006_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0006_v0_0_s_ifspec;
+
+#ifndef __IAccessibleText_INTERFACE_DEFINED__
+#define __IAccessibleText_INTERFACE_DEFINED__
+
+/* interface IAccessibleText */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleText;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B")
+ IAccessibleText : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE addSelection(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributes(
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caretOffset(
+ /* [retval][out] */ long *offset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_characterExtents(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelections(
+ /* [retval][out] */ long *nSelections) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_offsetAtPoint(
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selection(
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_text(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textBeforeOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAfterOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_textAtOffset(
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE removeSelection(
+ /* [in] */ long selectionIndex) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setCaretOffset(
+ /* [in] */ long offset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setSelection(
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nCharacters(
+ /* [retval][out] */ long *nCharacters) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringTo(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE scrollSubstringToPoint(
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_newText(
+ /* [retval][out] */ IA2TextSegment *newText) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_oldText(
+ /* [retval][out] */ IA2TextSegment *oldText) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleText * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleText * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleText * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleText * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleText * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleText * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleText * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleText * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleText * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleText * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleText * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ END_INTERFACE
+ } IAccessibleTextVtbl;
+
+ interface IAccessibleText
+ {
+ CONST_VTBL struct IAccessibleTextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleText_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleText_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleText_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleText_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleText_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleText_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleText_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleText_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleText_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleText_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleText_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleText_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleText_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleText_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleText_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleText_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleText_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleText2_INTERFACE_DEFINED__
+#define __IAccessibleText2_INTERFACE_DEFINED__
+
+/* interface IAccessibleText2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleText2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("9690A9CC-5C80-4DF5-852E-2D5AE4189A54")
+ IAccessibleText2 : public IAccessibleText
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_attributeRange(
+ /* [in] */ long offset,
+ /* [in] */ BSTR filter,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *attributeValues) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleText2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleText2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleText2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleText2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleText2 * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleText2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleText2 * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleText2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleText2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleText2 * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributeRange )(
+ IAccessibleText2 * This,
+ /* [in] */ long offset,
+ /* [in] */ BSTR filter,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *attributeValues);
+
+ END_INTERFACE
+ } IAccessibleText2Vtbl;
+
+ interface IAccessibleText2
+ {
+ CONST_VTBL struct IAccessibleText2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleText2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleText2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleText2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleText2_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleText2_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleText2_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleText2_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleText2_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleText2_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleText2_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText2_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleText2_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleText2_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleText2_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleText2_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleText2_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleText2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleText2_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleText2_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleText2_get_attributeRange(This,offset,filter,startOffset,endOffset,attributeValues) \
+ ( (This)->lpVtbl -> get_attributeRange(This,offset,filter,startOffset,endOffset,attributeValues) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleText2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleEditableText_INTERFACE_DEFINED__
+#define __IAccessibleEditableText_INTERFACE_DEFINED__
+
+/* interface IAccessibleEditableText */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleEditableText;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("A59AA09A-7011-4b65-939D-32B1FB5547E3")
+ IAccessibleEditableText : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE copyText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE deleteText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE insertText(
+ /* [in] */ long offset,
+ /* [in] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE cutText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE pasteText(
+ /* [in] */ long offset) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE replaceText(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *text) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE setAttributes(
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *attributes) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleEditableTextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleEditableText * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleEditableText * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleEditableText * This);
+
+ HRESULT ( STDMETHODCALLTYPE *copyText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *deleteText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *insertText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long offset,
+ /* [in] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *cutText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ HRESULT ( STDMETHODCALLTYPE *pasteText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *replaceText )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *setAttributes )(
+ IAccessibleEditableText * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [in] */ BSTR *attributes);
+
+ END_INTERFACE
+ } IAccessibleEditableTextVtbl;
+
+ interface IAccessibleEditableText
+ {
+ CONST_VTBL struct IAccessibleEditableTextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleEditableText_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleEditableText_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleEditableText_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleEditableText_copyText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> copyText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_deleteText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> deleteText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_insertText(This,offset,text) \
+ ( (This)->lpVtbl -> insertText(This,offset,text) )
+
+#define IAccessibleEditableText_cutText(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> cutText(This,startOffset,endOffset) )
+
+#define IAccessibleEditableText_pasteText(This,offset) \
+ ( (This)->lpVtbl -> pasteText(This,offset) )
+
+#define IAccessibleEditableText_replaceText(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> replaceText(This,startOffset,endOffset,text) )
+
+#define IAccessibleEditableText_setAttributes(This,startOffset,endOffset,attributes) \
+ ( (This)->lpVtbl -> setAttributes(This,startOffset,endOffset,attributes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleEditableText_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHyperlink_INTERFACE_DEFINED__
+#define __IAccessibleHyperlink_INTERFACE_DEFINED__
+
+/* interface IAccessibleHyperlink */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHyperlink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("01C20F2B-3DD2-400f-949F-AD00BDAB1D41")
+ IAccessibleHyperlink : public IAccessibleAction
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchor(
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchor) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchorTarget) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_startIndex(
+ /* [retval][out] */ long *index) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_endIndex(
+ /* [retval][out] */ long *index) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_valid(
+ /* [retval][out] */ boolean *valid) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHyperlinkVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHyperlink * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHyperlink * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHyperlink * This);
+
+ HRESULT ( STDMETHODCALLTYPE *nActions )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *nActions);
+
+ HRESULT ( STDMETHODCALLTYPE *doAction )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_keyBinding )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [in] */ long nMaxBindings,
+ /* [length_is][length_is][size_is][size_is][out] */ BSTR **keyBindings,
+ /* [retval][out] */ long *nBindings);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_name )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_localizedName )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long actionIndex,
+ /* [retval][out] */ BSTR *localizedName);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchor )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchor);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
+ IAccessibleHyperlink * This,
+ /* [in] */ long index,
+ /* [retval][out] */ VARIANT *anchorTarget);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_startIndex )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *index);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_endIndex )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ long *index);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_valid )(
+ IAccessibleHyperlink * This,
+ /* [retval][out] */ boolean *valid);
+
+ END_INTERFACE
+ } IAccessibleHyperlinkVtbl;
+
+ interface IAccessibleHyperlink
+ {
+ CONST_VTBL struct IAccessibleHyperlinkVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHyperlink_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHyperlink_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHyperlink_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHyperlink_nActions(This,nActions) \
+ ( (This)->lpVtbl -> nActions(This,nActions) )
+
+#define IAccessibleHyperlink_doAction(This,actionIndex) \
+ ( (This)->lpVtbl -> doAction(This,actionIndex) )
+
+#define IAccessibleHyperlink_get_description(This,actionIndex,description) \
+ ( (This)->lpVtbl -> get_description(This,actionIndex,description) )
+
+#define IAccessibleHyperlink_get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) \
+ ( (This)->lpVtbl -> get_keyBinding(This,actionIndex,nMaxBindings,keyBindings,nBindings) )
+
+#define IAccessibleHyperlink_get_name(This,actionIndex,name) \
+ ( (This)->lpVtbl -> get_name(This,actionIndex,name) )
+
+#define IAccessibleHyperlink_get_localizedName(This,actionIndex,localizedName) \
+ ( (This)->lpVtbl -> get_localizedName(This,actionIndex,localizedName) )
+
+
+#define IAccessibleHyperlink_get_anchor(This,index,anchor) \
+ ( (This)->lpVtbl -> get_anchor(This,index,anchor) )
+
+#define IAccessibleHyperlink_get_anchorTarget(This,index,anchorTarget) \
+ ( (This)->lpVtbl -> get_anchorTarget(This,index,anchorTarget) )
+
+#define IAccessibleHyperlink_get_startIndex(This,index) \
+ ( (This)->lpVtbl -> get_startIndex(This,index) )
+
+#define IAccessibleHyperlink_get_endIndex(This,index) \
+ ( (This)->lpVtbl -> get_endIndex(This,index) )
+
+#define IAccessibleHyperlink_get_valid(This,valid) \
+ ( (This)->lpVtbl -> get_valid(This,valid) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHyperlink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext_INTERFACE_DEFINED__
+#define __IAccessibleHypertext_INTERFACE_DEFINED__
+
+/* interface IAccessibleHypertext */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHypertext;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6B4F8BBF-F1F2-418a-B35E-A195BC4103B9")
+ IAccessibleHypertext : public IAccessibleText
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nHyperlinks(
+ /* [retval][out] */ long *hyperlinkCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlink(
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinkIndex(
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHypertextVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHypertext * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHypertext * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHypertext * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleHypertext * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleHypertext * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleHypertext * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleHypertext * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
+ IAccessibleHypertext * This,
+ /* [retval][out] */ long *hyperlinkCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
+ IAccessibleHypertext * This,
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
+ IAccessibleHypertext * This,
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex);
+
+ END_INTERFACE
+ } IAccessibleHypertextVtbl;
+
+ interface IAccessibleHypertext
+ {
+ CONST_VTBL struct IAccessibleHypertextVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHypertext_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHypertext_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHypertext_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHypertext_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleHypertext_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleHypertext_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleHypertext_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleHypertext_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleHypertext_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleHypertext_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleHypertext_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleHypertext_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleHypertext_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleHypertext_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleHypertext_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleHypertext_get_nHyperlinks(This,hyperlinkCount) \
+ ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
+
+#define IAccessibleHypertext_get_hyperlink(This,index,hyperlink) \
+ ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
+
+#define IAccessibleHypertext_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
+ ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHypertext_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleHypertext2_INTERFACE_DEFINED__
+#define __IAccessibleHypertext2_INTERFACE_DEFINED__
+
+/* interface IAccessibleHypertext2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleHypertext2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("CF64D89F-8287-4B44-8501-A827453A6077")
+ IAccessibleHypertext2 : public IAccessibleHypertext
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_hyperlinks(
+ /* [size_is][size_is][out] */ IAccessibleHyperlink ***hyperlinks,
+ /* [retval][out] */ long *nHyperlinks) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleHypertext2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleHypertext2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleHypertext2 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *addSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_attributes )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *textAttributes);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caretOffset )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_characterExtents )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [out] */ long *x,
+ /* [out] */ long *y,
+ /* [out] */ long *width,
+ /* [retval][out] */ long *height);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelections )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *nSelections);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_offsetAtPoint )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long x,
+ /* [in] */ long y,
+ /* [in] */ enum IA2CoordinateType coordType,
+ /* [retval][out] */ long *offset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex,
+ /* [out] */ long *startOffset,
+ /* [retval][out] */ long *endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_text )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textBeforeOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAfterOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_textAtOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset,
+ /* [in] */ enum IA2TextBoundaryType boundaryType,
+ /* [out] */ long *startOffset,
+ /* [out] */ long *endOffset,
+ /* [retval][out] */ BSTR *text);
+
+ HRESULT ( STDMETHODCALLTYPE *removeSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex);
+
+ HRESULT ( STDMETHODCALLTYPE *setCaretOffset )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long offset);
+
+ HRESULT ( STDMETHODCALLTYPE *setSelection )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long selectionIndex,
+ /* [in] */ long startOffset,
+ /* [in] */ long endOffset);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nCharacters )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *nCharacters);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringTo )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2ScrollType scrollType);
+
+ HRESULT ( STDMETHODCALLTYPE *scrollSubstringToPoint )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long startIndex,
+ /* [in] */ long endIndex,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [in] */ long x,
+ /* [in] */ long y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_newText )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ IA2TextSegment *newText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_oldText )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ IA2TextSegment *oldText);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nHyperlinks )(
+ IAccessibleHypertext2 * This,
+ /* [retval][out] */ long *hyperlinkCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlink )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long index,
+ /* [retval][out] */ IAccessibleHyperlink **hyperlink);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinkIndex )(
+ IAccessibleHypertext2 * This,
+ /* [in] */ long charIndex,
+ /* [retval][out] */ long *hyperlinkIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_hyperlinks )(
+ IAccessibleHypertext2 * This,
+ /* [size_is][size_is][out] */ IAccessibleHyperlink ***hyperlinks,
+ /* [retval][out] */ long *nHyperlinks);
+
+ END_INTERFACE
+ } IAccessibleHypertext2Vtbl;
+
+ interface IAccessibleHypertext2
+ {
+ CONST_VTBL struct IAccessibleHypertext2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleHypertext2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleHypertext2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleHypertext2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleHypertext2_addSelection(This,startOffset,endOffset) \
+ ( (This)->lpVtbl -> addSelection(This,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_attributes(This,offset,startOffset,endOffset,textAttributes) \
+ ( (This)->lpVtbl -> get_attributes(This,offset,startOffset,endOffset,textAttributes) )
+
+#define IAccessibleHypertext2_get_caretOffset(This,offset) \
+ ( (This)->lpVtbl -> get_caretOffset(This,offset) )
+
+#define IAccessibleHypertext2_get_characterExtents(This,offset,coordType,x,y,width,height) \
+ ( (This)->lpVtbl -> get_characterExtents(This,offset,coordType,x,y,width,height) )
+
+#define IAccessibleHypertext2_get_nSelections(This,nSelections) \
+ ( (This)->lpVtbl -> get_nSelections(This,nSelections) )
+
+#define IAccessibleHypertext2_get_offsetAtPoint(This,x,y,coordType,offset) \
+ ( (This)->lpVtbl -> get_offsetAtPoint(This,x,y,coordType,offset) )
+
+#define IAccessibleHypertext2_get_selection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> get_selection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_text(This,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_text(This,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textBeforeOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAfterOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) \
+ ( (This)->lpVtbl -> get_textAtOffset(This,offset,boundaryType,startOffset,endOffset,text) )
+
+#define IAccessibleHypertext2_removeSelection(This,selectionIndex) \
+ ( (This)->lpVtbl -> removeSelection(This,selectionIndex) )
+
+#define IAccessibleHypertext2_setCaretOffset(This,offset) \
+ ( (This)->lpVtbl -> setCaretOffset(This,offset) )
+
+#define IAccessibleHypertext2_setSelection(This,selectionIndex,startOffset,endOffset) \
+ ( (This)->lpVtbl -> setSelection(This,selectionIndex,startOffset,endOffset) )
+
+#define IAccessibleHypertext2_get_nCharacters(This,nCharacters) \
+ ( (This)->lpVtbl -> get_nCharacters(This,nCharacters) )
+
+#define IAccessibleHypertext2_scrollSubstringTo(This,startIndex,endIndex,scrollType) \
+ ( (This)->lpVtbl -> scrollSubstringTo(This,startIndex,endIndex,scrollType) )
+
+#define IAccessibleHypertext2_scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) \
+ ( (This)->lpVtbl -> scrollSubstringToPoint(This,startIndex,endIndex,coordinateType,x,y) )
+
+#define IAccessibleHypertext2_get_newText(This,newText) \
+ ( (This)->lpVtbl -> get_newText(This,newText) )
+
+#define IAccessibleHypertext2_get_oldText(This,oldText) \
+ ( (This)->lpVtbl -> get_oldText(This,oldText) )
+
+
+#define IAccessibleHypertext2_get_nHyperlinks(This,hyperlinkCount) \
+ ( (This)->lpVtbl -> get_nHyperlinks(This,hyperlinkCount) )
+
+#define IAccessibleHypertext2_get_hyperlink(This,index,hyperlink) \
+ ( (This)->lpVtbl -> get_hyperlink(This,index,hyperlink) )
+
+#define IAccessibleHypertext2_get_hyperlinkIndex(This,charIndex,hyperlinkIndex) \
+ ( (This)->lpVtbl -> get_hyperlinkIndex(This,charIndex,hyperlinkIndex) )
+
+
+#define IAccessibleHypertext2_get_hyperlinks(This,hyperlinks,nHyperlinks) \
+ ( (This)->lpVtbl -> get_hyperlinks(This,hyperlinks,nHyperlinks) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleHypertext2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTable_INTERFACE_DEFINED__
+#define __IAccessibleTable_INTERFACE_DEFINED__
+
+/* interface IAccessibleTable */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTable;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("35AD8070-C20C-4fb4-B094-F4F7275DD469")
+ IAccessibleTable : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_accessibleAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_childIndex(
+ /* [in] */ long rowIndex,
+ /* [in] */ long columnIndex,
+ /* [retval][out] */ long *cellIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtentAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nColumnsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeader(
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingRowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *columnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedChildren(
+ /* [retval][out] */ long *cellCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtentAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nRowsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeader(
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingColumnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *rowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedChildren(
+ /* [in] */ long maxChildren,
+ /* [length_is][length_is][size_is][size_is][out] */ long **children,
+ /* [retval][out] */ long *nChildren) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
+ /* [in] */ long maxColumns,
+ /* [length_is][length_is][size_is][size_is][out] */ long **columns,
+ /* [retval][out] */ long *nColumns) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
+ /* [in] */ long maxRows,
+ /* [length_is][length_is][size_is][size_is][out] */ long **rows,
+ /* [retval][out] */ long *nRows) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtentsAtIndex(
+ /* [in] */ long index,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
+ /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTableVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTable * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTable * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTable * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_accessibleAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_childIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long rowIndex,
+ /* [in] */ long columnIndex,
+ /* [retval][out] */ long *cellIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
+ IAccessibleTable * This,
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtentAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nColumnsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeader )(
+ IAccessibleTable * This,
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingRowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *columnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedChildren )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *cellCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
+ IAccessibleTable * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtentAt )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ long *nRowsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeader )(
+ IAccessibleTable * This,
+ /* [out] */ IAccessibleTable **accessibleTable,
+ /* [retval][out] */ long *startingColumnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long cellIndex,
+ /* [retval][out] */ long *rowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedChildren )(
+ IAccessibleTable * This,
+ /* [in] */ long maxChildren,
+ /* [length_is][length_is][size_is][size_is][out] */ long **children,
+ /* [retval][out] */ long *nChildren);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
+ IAccessibleTable * This,
+ /* [in] */ long maxColumns,
+ /* [length_is][length_is][size_is][size_is][out] */ long **columns,
+ /* [retval][out] */ long *nColumns);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
+ IAccessibleTable * This,
+ /* [in] */ long maxRows,
+ /* [length_is][length_is][size_is][size_is][out] */ long **rows,
+ /* [retval][out] */ long *nRows);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
+ IAccessibleTable * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ HRESULT ( STDMETHODCALLTYPE *selectRow )(
+ IAccessibleTable * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *selectColumn )(
+ IAccessibleTable * This,
+ /* [in] */ long column);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectRow )(
+ IAccessibleTable * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
+ IAccessibleTable * This,
+ /* [in] */ long column);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtentsAtIndex )(
+ IAccessibleTable * This,
+ /* [in] */ long index,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
+ IAccessibleTable * This,
+ /* [retval][out] */ IA2TableModelChange *modelChange);
+
+ END_INTERFACE
+ } IAccessibleTableVtbl;
+
+ interface IAccessibleTable
+ {
+ CONST_VTBL struct IAccessibleTableVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTable_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTable_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTable_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTable_get_accessibleAt(This,row,column,accessible) \
+ ( (This)->lpVtbl -> get_accessibleAt(This,row,column,accessible) )
+
+#define IAccessibleTable_get_caption(This,accessible) \
+ ( (This)->lpVtbl -> get_caption(This,accessible) )
+
+#define IAccessibleTable_get_childIndex(This,rowIndex,columnIndex,cellIndex) \
+ ( (This)->lpVtbl -> get_childIndex(This,rowIndex,columnIndex,cellIndex) )
+
+#define IAccessibleTable_get_columnDescription(This,column,description) \
+ ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
+
+#define IAccessibleTable_get_columnExtentAt(This,row,column,nColumnsSpanned) \
+ ( (This)->lpVtbl -> get_columnExtentAt(This,row,column,nColumnsSpanned) )
+
+#define IAccessibleTable_get_columnHeader(This,accessibleTable,startingRowIndex) \
+ ( (This)->lpVtbl -> get_columnHeader(This,accessibleTable,startingRowIndex) )
+
+#define IAccessibleTable_get_columnIndex(This,cellIndex,columnIndex) \
+ ( (This)->lpVtbl -> get_columnIndex(This,cellIndex,columnIndex) )
+
+#define IAccessibleTable_get_nColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
+
+#define IAccessibleTable_get_nRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nRows(This,rowCount) )
+
+#define IAccessibleTable_get_nSelectedChildren(This,cellCount) \
+ ( (This)->lpVtbl -> get_nSelectedChildren(This,cellCount) )
+
+#define IAccessibleTable_get_nSelectedColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
+
+#define IAccessibleTable_get_nSelectedRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
+
+#define IAccessibleTable_get_rowDescription(This,row,description) \
+ ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
+
+#define IAccessibleTable_get_rowExtentAt(This,row,column,nRowsSpanned) \
+ ( (This)->lpVtbl -> get_rowExtentAt(This,row,column,nRowsSpanned) )
+
+#define IAccessibleTable_get_rowHeader(This,accessibleTable,startingColumnIndex) \
+ ( (This)->lpVtbl -> get_rowHeader(This,accessibleTable,startingColumnIndex) )
+
+#define IAccessibleTable_get_rowIndex(This,cellIndex,rowIndex) \
+ ( (This)->lpVtbl -> get_rowIndex(This,cellIndex,rowIndex) )
+
+#define IAccessibleTable_get_selectedChildren(This,maxChildren,children,nChildren) \
+ ( (This)->lpVtbl -> get_selectedChildren(This,maxChildren,children,nChildren) )
+
+#define IAccessibleTable_get_selectedColumns(This,maxColumns,columns,nColumns) \
+ ( (This)->lpVtbl -> get_selectedColumns(This,maxColumns,columns,nColumns) )
+
+#define IAccessibleTable_get_selectedRows(This,maxRows,rows,nRows) \
+ ( (This)->lpVtbl -> get_selectedRows(This,maxRows,rows,nRows) )
+
+#define IAccessibleTable_get_summary(This,accessible) \
+ ( (This)->lpVtbl -> get_summary(This,accessible) )
+
+#define IAccessibleTable_get_isColumnSelected(This,column,isSelected) \
+ ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
+
+#define IAccessibleTable_get_isRowSelected(This,row,isSelected) \
+ ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
+
+#define IAccessibleTable_get_isSelected(This,row,column,isSelected) \
+ ( (This)->lpVtbl -> get_isSelected(This,row,column,isSelected) )
+
+#define IAccessibleTable_selectRow(This,row) \
+ ( (This)->lpVtbl -> selectRow(This,row) )
+
+#define IAccessibleTable_selectColumn(This,column) \
+ ( (This)->lpVtbl -> selectColumn(This,column) )
+
+#define IAccessibleTable_unselectRow(This,row) \
+ ( (This)->lpVtbl -> unselectRow(This,row) )
+
+#define IAccessibleTable_unselectColumn(This,column) \
+ ( (This)->lpVtbl -> unselectColumn(This,column) )
+
+#define IAccessibleTable_get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) \
+ ( (This)->lpVtbl -> get_rowColumnExtentsAtIndex(This,index,row,column,rowExtents,columnExtents,isSelected) )
+
+#define IAccessibleTable_get_modelChange(This,modelChange) \
+ ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTable_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTable2_INTERFACE_DEFINED__
+#define __IAccessibleTable2_INTERFACE_DEFINED__
+
+/* interface IAccessibleTable2 */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTable2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("6167f295-06f0-4cdd-a1fa-02e25153d869")
+ IAccessibleTable2 : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_cellAt(
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **cell) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_caption(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnDescription(
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedCells(
+ /* [retval][out] */ long *cellCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedColumns(
+ /* [retval][out] */ long *columnCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_nSelectedRows(
+ /* [retval][out] */ long *rowCount) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowDescription(
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedCells(
+ /* [size_is][size_is][out] */ IUnknown ***cells,
+ /* [retval][out] */ long *nSelectedCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedColumns(
+ /* [size_is][size_is][out] */ long **selectedColumns,
+ /* [retval][out] */ long *nColumns) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_selectedRows(
+ /* [size_is][size_is][out] */ long **selectedRows,
+ /* [retval][out] */ long *nRows) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_summary(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isColumnSelected(
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isRowSelected(
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE selectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectRow(
+ /* [in] */ long row) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE unselectColumn(
+ /* [in] */ long column) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_modelChange(
+ /* [retval][out] */ IA2TableModelChange *modelChange) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTable2Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTable2 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTable2 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTable2 * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_cellAt )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [in] */ long column,
+ /* [retval][out] */ IUnknown **cell);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_caption )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnDescription )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nColumns )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nRows )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedCells )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *cellCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedColumns )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *columnCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_nSelectedRows )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ long *rowCount);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowDescription )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedCells )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ IUnknown ***cells,
+ /* [retval][out] */ long *nSelectedCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedColumns )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ long **selectedColumns,
+ /* [retval][out] */ long *nColumns);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_selectedRows )(
+ IAccessibleTable2 * This,
+ /* [size_is][size_is][out] */ long **selectedRows,
+ /* [retval][out] */ long *nRows);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_summary )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isColumnSelected )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isRowSelected )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row,
+ /* [retval][out] */ boolean *isSelected);
+
+ HRESULT ( STDMETHODCALLTYPE *selectRow )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *selectColumn )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectRow )(
+ IAccessibleTable2 * This,
+ /* [in] */ long row);
+
+ HRESULT ( STDMETHODCALLTYPE *unselectColumn )(
+ IAccessibleTable2 * This,
+ /* [in] */ long column);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_modelChange )(
+ IAccessibleTable2 * This,
+ /* [retval][out] */ IA2TableModelChange *modelChange);
+
+ END_INTERFACE
+ } IAccessibleTable2Vtbl;
+
+ interface IAccessibleTable2
+ {
+ CONST_VTBL struct IAccessibleTable2Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTable2_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTable2_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTable2_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTable2_get_cellAt(This,row,column,cell) \
+ ( (This)->lpVtbl -> get_cellAt(This,row,column,cell) )
+
+#define IAccessibleTable2_get_caption(This,accessible) \
+ ( (This)->lpVtbl -> get_caption(This,accessible) )
+
+#define IAccessibleTable2_get_columnDescription(This,column,description) \
+ ( (This)->lpVtbl -> get_columnDescription(This,column,description) )
+
+#define IAccessibleTable2_get_nColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nColumns(This,columnCount) )
+
+#define IAccessibleTable2_get_nRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nRows(This,rowCount) )
+
+#define IAccessibleTable2_get_nSelectedCells(This,cellCount) \
+ ( (This)->lpVtbl -> get_nSelectedCells(This,cellCount) )
+
+#define IAccessibleTable2_get_nSelectedColumns(This,columnCount) \
+ ( (This)->lpVtbl -> get_nSelectedColumns(This,columnCount) )
+
+#define IAccessibleTable2_get_nSelectedRows(This,rowCount) \
+ ( (This)->lpVtbl -> get_nSelectedRows(This,rowCount) )
+
+#define IAccessibleTable2_get_rowDescription(This,row,description) \
+ ( (This)->lpVtbl -> get_rowDescription(This,row,description) )
+
+#define IAccessibleTable2_get_selectedCells(This,cells,nSelectedCells) \
+ ( (This)->lpVtbl -> get_selectedCells(This,cells,nSelectedCells) )
+
+#define IAccessibleTable2_get_selectedColumns(This,selectedColumns,nColumns) \
+ ( (This)->lpVtbl -> get_selectedColumns(This,selectedColumns,nColumns) )
+
+#define IAccessibleTable2_get_selectedRows(This,selectedRows,nRows) \
+ ( (This)->lpVtbl -> get_selectedRows(This,selectedRows,nRows) )
+
+#define IAccessibleTable2_get_summary(This,accessible) \
+ ( (This)->lpVtbl -> get_summary(This,accessible) )
+
+#define IAccessibleTable2_get_isColumnSelected(This,column,isSelected) \
+ ( (This)->lpVtbl -> get_isColumnSelected(This,column,isSelected) )
+
+#define IAccessibleTable2_get_isRowSelected(This,row,isSelected) \
+ ( (This)->lpVtbl -> get_isRowSelected(This,row,isSelected) )
+
+#define IAccessibleTable2_selectRow(This,row) \
+ ( (This)->lpVtbl -> selectRow(This,row) )
+
+#define IAccessibleTable2_selectColumn(This,column) \
+ ( (This)->lpVtbl -> selectColumn(This,column) )
+
+#define IAccessibleTable2_unselectRow(This,row) \
+ ( (This)->lpVtbl -> unselectRow(This,row) )
+
+#define IAccessibleTable2_unselectColumn(This,column) \
+ ( (This)->lpVtbl -> unselectColumn(This,column) )
+
+#define IAccessibleTable2_get_modelChange(This,modelChange) \
+ ( (This)->lpVtbl -> get_modelChange(This,modelChange) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTable2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleTableCell_INTERFACE_DEFINED__
+#define __IAccessibleTableCell_INTERFACE_DEFINED__
+
+/* interface IAccessibleTableCell */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleTableCell;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("594116B1-C99F-4847-AD06-0A7A86ECE645")
+ IAccessibleTableCell : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnExtent(
+ /* [retval][out] */ long *nColumnsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnHeaderCells(
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nColumnHeaderCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_columnIndex(
+ /* [retval][out] */ long *columnIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowExtent(
+ /* [retval][out] */ long *nRowsSpanned) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowHeaderCells(
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nRowHeaderCells) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowIndex(
+ /* [retval][out] */ long *rowIndex) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_isSelected(
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_rowColumnExtents(
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_table(
+ /* [retval][out] */ IUnknown **table) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleTableCellVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleTableCell * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleTableCell * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleTableCell * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnExtent )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *nColumnsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnHeaderCells )(
+ IAccessibleTableCell * This,
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nColumnHeaderCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_columnIndex )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *columnIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowExtent )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *nRowsSpanned);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowHeaderCells )(
+ IAccessibleTableCell * This,
+ /* [size_is][size_is][out] */ IUnknown ***cellAccessibles,
+ /* [retval][out] */ long *nRowHeaderCells);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowIndex )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ long *rowIndex);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_isSelected )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_rowColumnExtents )(
+ IAccessibleTableCell * This,
+ /* [out] */ long *row,
+ /* [out] */ long *column,
+ /* [out] */ long *rowExtents,
+ /* [out] */ long *columnExtents,
+ /* [retval][out] */ boolean *isSelected);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_table )(
+ IAccessibleTableCell * This,
+ /* [retval][out] */ IUnknown **table);
+
+ END_INTERFACE
+ } IAccessibleTableCellVtbl;
+
+ interface IAccessibleTableCell
+ {
+ CONST_VTBL struct IAccessibleTableCellVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleTableCell_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleTableCell_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleTableCell_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleTableCell_get_columnExtent(This,nColumnsSpanned) \
+ ( (This)->lpVtbl -> get_columnExtent(This,nColumnsSpanned) )
+
+#define IAccessibleTableCell_get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) \
+ ( (This)->lpVtbl -> get_columnHeaderCells(This,cellAccessibles,nColumnHeaderCells) )
+
+#define IAccessibleTableCell_get_columnIndex(This,columnIndex) \
+ ( (This)->lpVtbl -> get_columnIndex(This,columnIndex) )
+
+#define IAccessibleTableCell_get_rowExtent(This,nRowsSpanned) \
+ ( (This)->lpVtbl -> get_rowExtent(This,nRowsSpanned) )
+
+#define IAccessibleTableCell_get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) \
+ ( (This)->lpVtbl -> get_rowHeaderCells(This,cellAccessibles,nRowHeaderCells) )
+
+#define IAccessibleTableCell_get_rowIndex(This,rowIndex) \
+ ( (This)->lpVtbl -> get_rowIndex(This,rowIndex) )
+
+#define IAccessibleTableCell_get_isSelected(This,isSelected) \
+ ( (This)->lpVtbl -> get_isSelected(This,isSelected) )
+
+#define IAccessibleTableCell_get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) \
+ ( (This)->lpVtbl -> get_rowColumnExtents(This,row,column,rowExtents,columnExtents,isSelected) )
+
+#define IAccessibleTableCell_get_table(This,table) \
+ ( (This)->lpVtbl -> get_table(This,table) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleTableCell_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleImage_INTERFACE_DEFINED__
+#define __IAccessibleImage_INTERFACE_DEFINED__
+
+/* interface IAccessibleImage */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleImage;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE")
+ IAccessibleImage : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_description(
+ /* [retval][out] */ BSTR *description) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imagePosition(
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_imageSize(
+ /* [out] */ long *height,
+ /* [retval][out] */ long *width) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleImageVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleImage * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleImage * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleImage * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_description )(
+ IAccessibleImage * This,
+ /* [retval][out] */ BSTR *description);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imagePosition )(
+ IAccessibleImage * This,
+ /* [in] */ enum IA2CoordinateType coordinateType,
+ /* [out] */ long *x,
+ /* [retval][out] */ long *y);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_imageSize )(
+ IAccessibleImage * This,
+ /* [out] */ long *height,
+ /* [retval][out] */ long *width);
+
+ END_INTERFACE
+ } IAccessibleImageVtbl;
+
+ interface IAccessibleImage
+ {
+ CONST_VTBL struct IAccessibleImageVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleImage_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleImage_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleImage_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleImage_get_description(This,description) \
+ ( (This)->lpVtbl -> get_description(This,description) )
+
+#define IAccessibleImage_get_imagePosition(This,coordinateType,x,y) \
+ ( (This)->lpVtbl -> get_imagePosition(This,coordinateType,x,y) )
+
+#define IAccessibleImage_get_imageSize(This,height,width) \
+ ( (This)->lpVtbl -> get_imageSize(This,height,width) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleImage_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0016 */
+/* [local] */
+
+
+enum IA2EventID
+ { IA2_EVENT_ACTION_CHANGED = 0x101,
+ IA2_EVENT_ACTIVE_DECENDENT_CHANGED = ( IA2_EVENT_ACTION_CHANGED + 1 ) ,
+ IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
+ IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED = ( IA2_EVENT_ACTIVE_DESCENDANT_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_CONTENT_CHANGED = ( IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_LOAD_COMPLETE = ( IA2_EVENT_DOCUMENT_CONTENT_CHANGED + 1 ) ,
+ IA2_EVENT_DOCUMENT_LOAD_STOPPED = ( IA2_EVENT_DOCUMENT_LOAD_COMPLETE + 1 ) ,
+ IA2_EVENT_DOCUMENT_RELOAD = ( IA2_EVENT_DOCUMENT_LOAD_STOPPED + 1 ) ,
+ IA2_EVENT_HYPERLINK_END_INDEX_CHANGED = ( IA2_EVENT_DOCUMENT_RELOAD + 1 ) ,
+ IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED = ( IA2_EVENT_HYPERLINK_END_INDEX_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED = ( IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_LINK_ACTIVATED = ( IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_LINK_SELECTED = ( IA2_EVENT_HYPERTEXT_LINK_ACTIVATED + 1 ) ,
+ IA2_EVENT_HYPERLINK_START_INDEX_CHANGED = ( IA2_EVENT_HYPERTEXT_LINK_SELECTED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_CHANGED = ( IA2_EVENT_HYPERLINK_START_INDEX_CHANGED + 1 ) ,
+ IA2_EVENT_HYPERTEXT_NLINKS_CHANGED = ( IA2_EVENT_HYPERTEXT_CHANGED + 1 ) ,
+ IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED = ( IA2_EVENT_HYPERTEXT_NLINKS_CHANGED + 1 ) ,
+ IA2_EVENT_PAGE_CHANGED = ( IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_SECTION_CHANGED = ( IA2_EVENT_PAGE_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_CAPTION_CHANGED = ( IA2_EVENT_SECTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_CAPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED = ( IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_MODEL_CHANGED = ( IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED = ( IA2_EVENT_TABLE_MODEL_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_ROW_HEADER_CHANGED = ( IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED + 1 ) ,
+ IA2_EVENT_TABLE_SUMMARY_CHANGED = ( IA2_EVENT_TABLE_ROW_HEADER_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_ATTRIBUTE_CHANGED = ( IA2_EVENT_TABLE_SUMMARY_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_CARET_MOVED = ( IA2_EVENT_TEXT_ATTRIBUTE_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_CHANGED = ( IA2_EVENT_TEXT_CARET_MOVED + 1 ) ,
+ IA2_EVENT_TEXT_COLUMN_CHANGED = ( IA2_EVENT_TEXT_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_INSERTED = ( IA2_EVENT_TEXT_COLUMN_CHANGED + 1 ) ,
+ IA2_EVENT_TEXT_REMOVED = ( IA2_EVENT_TEXT_INSERTED + 1 ) ,
+ IA2_EVENT_TEXT_UPDATED = ( IA2_EVENT_TEXT_REMOVED + 1 ) ,
+ IA2_EVENT_TEXT_SELECTION_CHANGED = ( IA2_EVENT_TEXT_UPDATED + 1 ) ,
+ IA2_EVENT_VISIBLE_DATA_CHANGED = ( IA2_EVENT_TEXT_SELECTION_CHANGED + 1 )
+ } ;
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0016_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0016_v0_0_s_ifspec;
+
+#ifndef __IAccessibleApplication_INTERFACE_DEFINED__
+#define __IAccessibleApplication_INTERFACE_DEFINED__
+
+/* interface IAccessibleApplication */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleApplication;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("D49DED83-5B25-43F4-9B95-93B44595979E")
+ IAccessibleApplication : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appName(
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_appVersion(
+ /* [retval][out] */ BSTR *version) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitName(
+ /* [retval][out] */ BSTR *name) = 0;
+
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_toolkitVersion(
+ /* [retval][out] */ BSTR *version) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleApplicationVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleApplication * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleApplication * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleApplication * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appName )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_appVersion )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *version);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitName )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *name);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_toolkitVersion )(
+ IAccessibleApplication * This,
+ /* [retval][out] */ BSTR *version);
+
+ END_INTERFACE
+ } IAccessibleApplicationVtbl;
+
+ interface IAccessibleApplication
+ {
+ CONST_VTBL struct IAccessibleApplicationVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleApplication_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleApplication_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleApplication_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleApplication_get_appName(This,name) \
+ ( (This)->lpVtbl -> get_appName(This,name) )
+
+#define IAccessibleApplication_get_appVersion(This,version) \
+ ( (This)->lpVtbl -> get_appVersion(This,version) )
+
+#define IAccessibleApplication_get_toolkitName(This,name) \
+ ( (This)->lpVtbl -> get_toolkitName(This,name) )
+
+#define IAccessibleApplication_get_toolkitVersion(This,version) \
+ ( (This)->lpVtbl -> get_toolkitVersion(This,version) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleApplication_INTERFACE_DEFINED__ */
+
+
+#ifndef __IAccessibleDocument_INTERFACE_DEFINED__
+#define __IAccessibleDocument_INTERFACE_DEFINED__
+
+/* interface IAccessibleDocument */
+/* [uuid][object] */
+
+
+EXTERN_C const IID IID_IAccessibleDocument;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("C48C7FCF-4AB5-4056-AFA6-902D6E1D1149")
+ IAccessibleDocument : public IUnknown
+ {
+ public:
+ virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_anchorTarget(
+ /* [retval][out] */ IUnknown **accessible) = 0;
+
+ };
+
+#else /* C style interface */
+
+ typedef struct IAccessibleDocumentVtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ IAccessibleDocument * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ __RPC__deref_out void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ IAccessibleDocument * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ IAccessibleDocument * This);
+
+ /* [propget] */ HRESULT ( STDMETHODCALLTYPE *get_anchorTarget )(
+ IAccessibleDocument * This,
+ /* [retval][out] */ IUnknown **accessible);
+
+ END_INTERFACE
+ } IAccessibleDocumentVtbl;
+
+ interface IAccessibleDocument
+ {
+ CONST_VTBL struct IAccessibleDocumentVtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define IAccessibleDocument_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define IAccessibleDocument_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define IAccessibleDocument_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define IAccessibleDocument_get_anchorTarget(This,accessible) \
+ ( (This)->lpVtbl -> get_anchorTarget(This,accessible) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __IAccessibleDocument_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_ia2_api_all_0000_0018 */
+/* [local] */
+
+
+// Type Library Definitions
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0018_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_ia2_api_all_0000_0018_v0_0_s_ifspec;
+
+
+#ifndef __IAccessible2Lib_LIBRARY_DEFINED__
+#define __IAccessible2Lib_LIBRARY_DEFINED__
+
+/* library IAccessible2Lib */
+/* [hidden][version][helpstring][uuid] */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EXTERN_C const IID LIBID_IAccessible2Lib;
+#endif /* __IAccessible2Lib_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+unsigned long __RPC_USER BSTR_UserSize( unsigned long *, unsigned long , BSTR * );
+unsigned char * __RPC_USER BSTR_UserMarshal( unsigned long *, unsigned char *, BSTR * );
+unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR * );
+void __RPC_USER BSTR_UserFree( unsigned long *, BSTR * );
+
+unsigned long __RPC_USER HWND_UserSize( unsigned long *, unsigned long , HWND * );
+unsigned char * __RPC_USER HWND_UserMarshal( unsigned long *, unsigned char *, HWND * );
+unsigned char * __RPC_USER HWND_UserUnmarshal(unsigned long *, unsigned char *, HWND * );
+void __RPC_USER HWND_UserFree( unsigned long *, HWND * );
+
+unsigned long __RPC_USER VARIANT_UserSize( unsigned long *, unsigned long , VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserMarshal( unsigned long *, unsigned char *, VARIANT * );
+unsigned char * __RPC_USER VARIANT_UserUnmarshal(unsigned long *, unsigned char *, VARIANT * );
+void __RPC_USER VARIANT_UserFree( unsigned long *, VARIANT * );
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
diff --git a/src/3rdparty/iaccessible2/generated/x86/ia2_api_all_i.c b/src/3rdparty/iaccessible2/generated/x86/ia2_api_all_i.c
new file mode 100644
index 0000000000..c50b3e9a4f
--- /dev/null
+++ b/src/3rdparty/iaccessible2/generated/x86/ia2_api_all_i.c
@@ -0,0 +1,133 @@
+
+
+/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Mon Aug 11 14:34:41 2014
+ */
+/* Compiler settings for ia2_api_all.idl:
+ Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555
+ protocol : dce , ms_ext, c_ext, robust
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
+ __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+ DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING( ) */
+
+#pragma warning( disable: 4049 ) /* more than 64k source lines */
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else // !_MIDL_USE_GUIDDEF_
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+ unsigned long x;
+ unsigned short s1;
+ unsigned short s2;
+ unsigned char c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+ const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif !_MIDL_USE_GUIDDEF_
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleRelation,0x7CDF86EE,0xC3DA,0x496a,0xBD,0xA4,0x28,0x1B,0x33,0x6E,0x1F,0xDC);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleAction,0xB70D9F59,0x3B5A,0x4dba,0xAB,0x9E,0x22,0x01,0x2F,0x60,0x7D,0xF5);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessible2,0xE89F726E,0xC4F4,0x4c19,0xBB,0x19,0xB6,0x47,0xD7,0xFA,0x84,0x78);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessible2_2,0x6C9430E9,0x299D,0x4E6F,0xBD,0x01,0xA8,0x2A,0x1E,0x88,0xD3,0xFF);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleComponent,0x1546D4B0,0x4C98,0x4bda,0x89,0xAE,0x9A,0x64,0x74,0x8B,0xDD,0xE4);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleValue,0x35855B5B,0xC566,0x4fd0,0xA7,0xB1,0xE6,0x54,0x65,0x60,0x03,0x94);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleText,0x24FD2FFB,0x3AAD,0x4a08,0x83,0x35,0xA3,0xAD,0x89,0xC0,0xFB,0x4B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleText2,0x9690A9CC,0x5C80,0x4DF5,0x85,0x2E,0x2D,0x5A,0xE4,0x18,0x9A,0x54);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleEditableText,0xA59AA09A,0x7011,0x4b65,0x93,0x9D,0x32,0xB1,0xFB,0x55,0x47,0xE3);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHyperlink,0x01C20F2B,0x3DD2,0x400f,0x94,0x9F,0xAD,0x00,0xBD,0xAB,0x1D,0x41);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext,0x6B4F8BBF,0xF1F2,0x418a,0xB3,0x5E,0xA1,0x95,0xBC,0x41,0x03,0xB9);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleHypertext2,0xCF64D89F,0x8287,0x4B44,0x85,0x01,0xA8,0x27,0x45,0x3A,0x60,0x77);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTable,0x35AD8070,0xC20C,0x4fb4,0xB0,0x94,0xF4,0xF7,0x27,0x5D,0xD4,0x69);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTable2,0x6167f295,0x06f0,0x4cdd,0xa1,0xfa,0x02,0xe2,0x51,0x53,0xd8,0x69);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleTableCell,0x594116B1,0xC99F,0x4847,0xAD,0x06,0x0A,0x7A,0x86,0xEC,0xE6,0x45);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleImage,0xFE5ABB3D,0x615E,0x4f7b,0x90,0x9F,0x5F,0x0E,0xDA,0x9E,0x8D,0xDE);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleApplication,0xD49DED83,0x5B25,0x43F4,0x9B,0x95,0x93,0xB4,0x45,0x95,0x97,0x9E);
+
+
+MIDL_DEFINE_GUID(IID, IID_IAccessibleDocument,0xC48C7FCF,0x4AB5,0x4056,0xAF,0xA6,0x90,0x2D,0x6E,0x1D,0x11,0x49);
+
+
+MIDL_DEFINE_GUID(IID, LIBID_IAccessible2Lib,0xCE3F726E,0xD1D3,0x44FE,0xB9,0x95,0xFF,0x1D,0xB3,0xB4,0x8B,0x2B);
+
+#undef MIDL_DEFINE_GUID
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
diff --git a/src/3rdparty/iaccessible2/iaccessible2.pri b/src/3rdparty/iaccessible2/iaccessible2.pri
index b3cdfa9356..367980a0d2 100644
--- a/src/3rdparty/iaccessible2/iaccessible2.pri
+++ b/src/3rdparty/iaccessible2/iaccessible2.pri
@@ -10,84 +10,12 @@ MIDL_GENERATED = $$PWD/generated/$${ARCH_SUBDIR}
INCLUDEPATH += $$MIDL_GENERATED
-SOURCES += $${MIDL_GENERATED}/Accessible2_p.c \
- $${MIDL_GENERATED}/AccessibleAction_p.c \
- $${MIDL_GENERATED}/AccessibleApplication_p.c \
- $${MIDL_GENERATED}/AccessibleComponent_p.c \
- $${MIDL_GENERATED}/AccessibleEditableText_p.c \
- $${MIDL_GENERATED}/AccessibleHyperlink_p.c \
- $${MIDL_GENERATED}/AccessibleHypertext_p.c \
- $${MIDL_GENERATED}/AccessibleImage_p.c \
- $${MIDL_GENERATED}/AccessibleRelation_p.c \
- $${MIDL_GENERATED}/AccessibleTable2_p.c \
- $${MIDL_GENERATED}/AccessibleTableCell_p.c \
- $${MIDL_GENERATED}/AccessibleTable_p.c \
- $${MIDL_GENERATED}/AccessibleText_p.c \
- $${MIDL_GENERATED}/AccessibleValue_p.c
-
-SOURCES += $${MIDL_GENERATED}/Accessible2_i.c \
- $${MIDL_GENERATED}/AccessibleAction_i.c \
- $${MIDL_GENERATED}/AccessibleApplication_i.c \
- $${MIDL_GENERATED}/AccessibleComponent_i.c \
- $${MIDL_GENERATED}/AccessibleEditableText_i.c \
- $${MIDL_GENERATED}/AccessibleHyperlink_i.c \
- $${MIDL_GENERATED}/AccessibleHypertext_i.c \
- $${MIDL_GENERATED}/AccessibleImage_i.c \
- $${MIDL_GENERATED}/AccessibleRelation_i.c \
- $${MIDL_GENERATED}/AccessibleTable2_i.c \
- $${MIDL_GENERATED}/AccessibleTableCell_i.c \
- $${MIDL_GENERATED}/AccessibleTable_i.c \
- $${MIDL_GENERATED}/AccessibleText_i.c \
- $${MIDL_GENERATED}/AccessibleValue_i.c
-
-SOURCES += $${MIDL_GENERATED}/IA2TypeLibrary_i.c
-
-# Do not add dlldata.c when building accessibility into a static library, as the COM entry points
-# defined there can cause duplicate symbol errors when linking into a binary that also defines
-# such entry points, e.g. anything linked against QtAxServer.
-!static: SOURCES += $${MIDL_GENERATED}/dlldata.c
-
-HEADERS += $${MIDL_GENERATED}/Accessible2.h \
- $${MIDL_GENERATED}/AccessibleAction.h \
- $${MIDL_GENERATED}/AccessibleApplication.h \
- $${MIDL_GENERATED}/AccessibleComponent.h \
- $${MIDL_GENERATED}/AccessibleEditableText.h \
- $${MIDL_GENERATED}/AccessibleEventID.h \
- $${MIDL_GENERATED}/AccessibleHyperlink.h \
- $${MIDL_GENERATED}/AccessibleHypertext.h \
- $${MIDL_GENERATED}/AccessibleImage.h \
- $${MIDL_GENERATED}/AccessibleRelation.h \
- $${MIDL_GENERATED}/AccessibleRole.h \
- $${MIDL_GENERATED}/AccessibleStates.h \
- $${MIDL_GENERATED}/AccessibleTable.h \
- $${MIDL_GENERATED}/AccessibleTable2.h \
- $${MIDL_GENERATED}/AccessibleTableCell.h \
- $${MIDL_GENERATED}/AccessibleText.h \
- $${MIDL_GENERATED}/AccessibleValue.h \
- $${MIDL_GENERATED}/IA2CommonTypes.h \
- $${MIDL_GENERATED}/IA2TypeLibrary.h
+SOURCES += $${MIDL_GENERATED}/ia2_api_all_i.c
+HEADERS += $${MIDL_GENERATED}/ia2_api_all.h
OTHER_FILES = \
- $$PWD/idl/Accessible2.idl \
- $$PWD/idl/AccessibleAction.idl \
- $$PWD/idl/AccessibleApplication.idl \
- $$PWD/idl/AccessibleComponent.idl \
- $$PWD/idl/AccessibleEditableText.idl \
- $$PWD/idl/AccessibleEventID.idl \
- $$PWD/idl/AccessibleHyperlink.idl \
- $$PWD/idl/AccessibleHypertext.idl \
- $$PWD/idl/AccessibleImage.idl \
- $$PWD/idl/AccessibleRelation.idl \
- $$PWD/idl/AccessibleRole.idl \
- $$PWD/idl/AccessibleStates.idl \
- $$PWD/idl/AccessibleTable.idl \
- $$PWD/idl/AccessibleTable2.idl \
- $$PWD/idl/AccessibleTableCell.idl \
- $$PWD/idl/AccessibleText.idl \
- $$PWD/idl/AccessibleValue.idl \
- $$PWD/idl/IA2CommonTypes.idl \
- $$PWD/idl/IA2TypeLibrary.idl
+ $$PWD/idl/ia2_api_all.idl
LIBS += -lrpcrt4
diff --git a/src/3rdparty/iaccessible2/idl/Accessible2.idl b/src/3rdparty/iaccessible2/idl/Accessible2.idl
deleted file mode 100644
index 6a0d750483..0000000000
--- a/src/3rdparty/iaccessible2/idl/Accessible2.idl
+++ /dev/null
@@ -1,679 +0,0 @@
-/*************************************************************************
- *
- * File Name (Accessible2.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-/** @mainpage
-
- @section _interfaces Interfaces
- IAccessible2\n
- IAccessibleAction\n
- IAccessibleApplication\n
- IAccessibleComponent\n
- IAccessibleHypertext\n
- IAccessibleHyperlink\n
- IAccessibleImage\n
- IAccessibleRelation\n
- IAccessibleTable [Deprecated]\n
- IAccessibleTable2\n
- IAccessibleTableCell\n
- IAccessibleText\n
- IAccessibleEditableText\n
- IAccessibleValue
-
- @section _structs Structs
- IA2Locale\n
- IA2TableModelChange\n
- IA2TextSegment
-
- @section _enums Enums
- ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n
- ::IA2EventID values identify events.\n
- ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n
- ::IA2ScrollType values define where to place an object or substring on the screen.\n
- ::IA2States values define states which are in addition to the existing MSAA states.\n
- ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n
- ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n
- ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces.
-
- @section _constants Constants
- @ref grpRelations
-
- @section _misc Miscellaneous
- @ref _licensePage "BSD License"\n
- @ref _generalInfo "General Information"\n
-
- @page _licensePage BSD License
- %IAccessible2 IDL Specification
-
- Copyright (c) 2007, 2010 Linux Foundation\n
- Copyright (c) 2006 IBM Corporation\n
- Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
-
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- 2. Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
-
- 3. Neither the name of the Linux Foundation nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior written
- permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- This BSD License conforms to the Open Source Initiative "Simplified
- BSD License" as published at:
- http://www.opensource.org/licenses/bsd-license.php
-
- %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2
- mark may be used in accordance with the
- <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy">
- Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification.
-
- @page _generalInfo General Information
- The following information is applicable to two or more interfaces.
-
- @ref _errors\n
- @ref _memory\n
- &nbsp;&nbsp;@ref _arrayConsideration\n
- @ref _indexes\n
- @ref _enums\n
- @ref _specialOffsets\n
- @ref _dicoveringInterfaces\n
- @ref _changingInterfaces\n
- @ref _applicationInfo\n
- @ref _childIDs\n
- @ref _variants\n
- @ref _iaaction-iahyperlink\n
- @ref _trademark
-
- @section _errors Error Handling
- HRESULT values are defined by the Microsoft&reg; Win32&reg; API. For more information, refer to
- <a href="http://msdn2.microsoft.com/en-us/library/bb401631.aspx">Interpreting HRESULT Values</a>
- in MSDN&reg;.
-
- Note that the S_FALSE return value is considered a non-error value and the
- SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure
- but there was nothing valid to return, e.g. in IAccessible2::attributes when
- there are no attributes. When S_FALSE is returned [out] pointer types should
- be NULL and [out] longs should generally be 0, but sometimes -1 is used such
- as IAccessible2::indexInParent, IAccessibleText::caretOffset, and
- IAccessibleHypertext::hyperlinkIndex.
-
- Note that for BSTR [out] variables common COM practice is that the server does
- the SysAllocString and the client does the SysFreeString. Also note that when
- NULL is returned there is no need for the client to call SysFreeString. Please
- refer to the documentation for each method for more details regarding error handling.
-
- @section _memory Memory Management
- The following memory management issues should be considered:
- @li Although [out] BSTR variables are declared by the client, their space is
- allocated by the server. They need to be freed with SysFreeString by the
- client at end of life; the same is true when BSTRs are used in structs or
- arrays which are passed to the server.
- @li If there is no valid [out] BSTR to return, the server should return S_FALSE and
- assign NULL to the output, e.g. *theOutBSTR = NULL;.
- @li COM interfaces need to be referenced with AddRef when used and dereferenced
- with Release at end of life.
- @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller
- and passed by reference. The marshaller does all the memory management.
-
- The following articles may be helpful for understanding memory management issues:
- @li An article by Don Box in a
- <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a>
- of the November 1996 edition of the Microsoft Systems Journal.
- @li A posting to a CodeGuru forum,
- <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK
- String: What are the rules for BSTR allocation and deallocation?</a>
-
- @subsection _arrayConsideration Special Consideration when using Arrays
- There are several methods which return arrays. In the case of IAccessible2::relations
- and IAccessibleRelation::targets the client must allocate and free the arrays.
-
- For the remaining methods which return arrays, the server must allocate the array
- and the client must free the array when no longer needed. These methods are
- IAccessible2::extendedStates, IAccessible2::localizedExtendedStates,
- IAccessibleAction::keyBinding, IAccessibleTable2::selectedCells,
- IAccessibleTable2::selectedColumns, and IAccessibleTable2::selectedRows. For
- those methods, the server must allocate both the top level array and any storage
- associated with it, e.g. for BSTRs. The server must allocate the arrays with
- CoTaskMemAlloc and any BSTRs with SysAllocString. The client must use CoTaskMemFree
- to free the array and any BSTRs must be freed with SysFreeString.
-
- Also, the IDL for those six methods includes an extraneous [in] parameter for the
- caller to specify the max size of the array. This parameter will be ignored by
- the COM server.
-
- @section _indexes Zero and One Based Indexes
- Unless otherwise specified all offsets and indexes are 0 based.
-
- @section _enums Enums
- Note that enums start at 0.
-
- @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods
- IAccessibleText and IAccessibleEditableText can use one or more of the following
- special offset values. They are defined in the ::IA2TextSpecialOffsets enum.
- @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or
- IAccessibleEditableText methods is the same as specifying the length of the string.
- @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset,
- IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the
- text related to the physical location of the caret should be used. This is needed for
- applications that consider the character offset of the end of one line (as reached by
- pressing the End key) the same as the offset of the first character on the next line.
- Since the same offset is associated with two different lines a special means is needed
- to fetch text from the line where the caret is physically located.
-
- @section _dicoveringInterfaces Discovery of Interfaces
- In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using
- the MSAA (Microsoft&reg; Active Accessibility&reg;) interfaces. (In cases where the an application
- is known to have custom interfaces which provide information not supplied by IAccessible2
- or MSAA, then those custom interfaces can be used.) The AT can then, by default, support
- unknown IAccessible2/MSAA applications, without the application developers having to request
- AT vendors for support on an individual application by application basis.
-
- When you have a reference to an IAccessible and require a reference to an IAccessible2 use
- QueryService as follows:
- @code
- // pAcc is a reference to the accessible object's IAccessible interface.
- IServiceProvider *pService = NULL;
- hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService);
- if(SUCCEEDED(hr)) {
- IAccessible2 *pIA2 = NULL;
- hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2);
- if (SUCCEEDED(hr) && pIA2) {
- // The control supports IAccessible2.
- // pIA2 is the reference to the accessible object's IAccessible2 interface.
- }
- }
- @endcode
-
- @section _changingInterfaces Changing between Accessible Interfaces
- Note that developers must always implement MSAA's IAccessible and, if needed, some
- of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2
- IDL is coded such that IAccessible2 is a subclass of MSAA's IAccessible, none of
- MSAA's IAccessible methods are redefined by IAccessible2.
-
- QueryService must be used to switch from a reference to an MSAA IAccessible interface
- to another interface. This has been
- <a href="http://www.accessinteropalliance.org/docs/Introducing_IAccessibleEx.doc">
- documented by Microsoft</a> and the pertinent facts have been extracted below:
-
- @par
- Why use QueryService instead of just using QueryInterface to get IAccessibleEx
- directly? The reason is that since MSAA 2.0, clients don't talk to a server's
- IAccessible interface directly; instead they talk to an intermediate MSAA-provided
- wrapper that calls through to the original IAccessible. This wrapper provides services
- such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation
- service, and scaling locations when running on Windows Vista with DPI scaling enabled.
- QueryService is the supported way to expose additional interfaces from an existing
- IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding
- to IAccessibles. QueryService is often more convenient for servers to implement than
- QueryInterface because it does not have the same requirements for preserving object
- identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to
- easily implement the interface on the same object or a separate object. The latter is
- often hard to do with QueryInterface unless the original object supports aggregation.
-
- Two related references in MSDN&reg; are:
- @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx">
- "Using QueryService to expose a native object model interface for an IAccessible object"</a>
- @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj">
- "Accessing the Internet Explorer Object Associated with an Accessible Object"</a>
-
- Based on this information from Microsoft, QueryService must be used to switch back and forth
- between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces.
-
- Regarding switching between any of the IAccessible2 interfaces, applications implementing
- IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs
- will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing
- the IAccessible2 interfaces on separate objects would require the use of QueryService.
- There is one exception, IAccessibleApplication can be implemented on a separate object so
- its common code doesn't have to be included in each accessible object. ATs should use
- QueryService to access IAccessibleApplication.
-
- @section _applicationInfo Access to Information about the Application
- Servers implementing IAccessible2 should provide access to the IAccessibleApplication
- interface via QueryService from any object so that ATs can easily determine specific
- information about the application such as its name or version.
-
- @section _childIDs Child IDs
- The IAccessible2 interfaces do not support child IDs, i.e. simple child elements.
- Full accessible objects must be created for each object that supports IAccessible2.
- Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF)
- for an object that implements any of the IAccessible2 interfaces.
-
- Microsoft's UI Automation specification has the same limitation and this was resolved
- in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild
- and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth
- between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of
- IAccessible2 may include similar methods to map back and forth between an IAccessible2
- and an {IAccessible, Child ID} pair.
-
- @section _variants VARIANTs
- Some methods return a VARIANT. Implementers need to make sure that the return type is
- specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are
- IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue,
- IAccessibleValue::maximumValue, IAccessibleValue::minimumValue.
-
- @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction
- In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction.
- However, there is no practical need for that inheritance and in some cases, such as
- an image map of smart tags, it doesn't make sense because such an image map doesn't
- have actionable objects; it's the secondary smart tags that are actionable. As a
- result, implementations should not rely on the inheritance as it may be removed in
- a later version of the IDL.
-
- @section _trademark Trademark Attribution
- The names of actual companies and products mentioned herein may be the trademarks of
- their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32
- are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries.
-
-**/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "AccessibleRelation.idl";
-import "AccessibleStates.idl";
-import "IA2CommonTypes.idl";
-
-/** A structure defining the locale of an accessible object.
-
-IAccessible2::locale returns this struct.
-*/
-typedef struct IA2Locale {
- BSTR language; ///< ISO 639-1 Alpha-2 two character language code
- BSTR country; ///< ISO 3166-1 Alpha-2 two character country code
- BSTR variant; ///< Application specific variant of the locale
-} IA2Locale;
-
-/** @brief This interface exposes the primary set of information about an
- IAccessible2 enabled accessible object.
-
- This interface must always be provided for objects that support some
- portion of the collection of the %IAccessible2 interfaces.
-
- Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces"
- for special considerations related to use of the MSAA IAccessible interface and
- the set of %IAccessible2 interfaces.
- */
-[object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)]
-interface IAccessible2 : IAccessible
-{
-
- /** @brief Returns the number of accessible relations for this object.
- @param [out] nRelations
- @retval S_OK
- */
- [propget] HRESULT nRelations
- (
- [out, retval] long *nRelations
- );
-
- /** @brief Returns one accessible relation for this object.
- @param [in] relationIndex
- 0 based
- @param [out] relation
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT relation
- (
- [in] long relationIndex,
- [out, retval] IAccessibleRelation **relation
- );
-
- /** @brief Returns multiple accessible relations for this object.
- @param [in] maxRelations
- maximum size of the array allocated by the client
- @param [out] relations
- The array of accessible relation objects. Note that this array is to be
- allocated by the client and freed when no longer needed. Refer to @ref
- _arrayConsideration "Special Consideration when using Arrays" for more details.
- @param [out] nRelations
- actual number of relations in the returned array (not more than maxRelations)
- @retval S_OK
- @retval S_FALSE if there are no relations, nRelations is set to 0
- */
- [propget] HRESULT relations
- (
- [in] long maxRelations,
- [out, size_is(maxRelations), length_is(*nRelations)]
- IAccessibleRelation **relations,
- [out, retval] long *nRelations
- );
-
- /** @brief Returns the role of an %IAccessible2 object.
- @param [out] role
- The role of an %IAccessible2 object.
- @retval S_OK
- @note
- @li For convenience MSAA roles are also passed through this method so the
- AT doesn't have to also fetch roles through MSAA's get_accRole.
- @li %IAccessible2 roles should not be passed through MSAA's get_accRole.
- @li For compatibility with non IAccessible2 enabled ATs, IAccessible2
- applications should also add support to get_accRole to return the closest
- MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there
- is not a good match.
- @li This method is missing a [propget] prefix in the IDL. The result is the
- method is named role in generated C++ code instead of get_role.
- */
- HRESULT role
- (
- [out, retval] long *role
- );
-
- /** @brief Makes an object visible on the screen.
- @param [in] scrollType
- Defines where the object should be placed on the screen.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT scrollTo
- (
- [in] enum IA2ScrollType scrollType
- );
-
- /** @brief Moves the top left of an object to a specified location.
-
- @param [in] coordinateType
- Specifies whether the coordinates are relative to the screen or the parent object.
- @param [in] x
- Defines the x coordinate.
- @param [in] y
- Defines the y coordinate.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT scrollToPoint
- (
- [in] enum IA2CoordinateType coordinateType,
- [in] long x,
- [in] long y
- );
-
- /** @brief Returns grouping information.
-
- Used for tree items, list items, tab panel labels, radio buttons, etc.
- Also used for collections of non-text objects.
-
- @param [out] groupLevel
- 1 based, 0 indicates that this value is not applicable
- @param [out] similarItemsInGroup
- 1 based, 0 indicates that this value is not applicable
- @param [out] positionInGroup
- 1 based, 0 indicates that this value is not applicable. This is an index
- into the objects in the current group, not an index into all the objects
- at the same group level.
- @retval S_OK if at least one value is valid
- @retval S_FALSE if no values are valid, [out] values are 0s
- @note This method is meant to describe the nature of an object's containment
- structure. It's exposed by trees, tree grids, nested lists, nested menus,
- but not headings, which uses the level object attribute. It is also exposed
- by radio buttons (with groupLevel == 0).
- @note This is normally not implemented on a combo box to describe the nature
- of its contents. Normally an AT will get that information from its child list
- object. However, in some cases when non-edit combo boxes are not able to be structured
- such that the list is a child of the combo box, this method is implemented on
- the combo box itself. ATs can use this interface if a child list is not found.
- */
- [propget] HRESULT groupPosition
- (
- [out] long *groupLevel,
- [out] long *similarItemsInGroup,
- [out, retval] long *positionInGroup
- );
-
- /** @brief Returns the bit strip containing any IAccessible2 states.
-
- The IAccessible2 states are in addition to the MSAA states and are defined in
- the IA2States enum.
-
- @param [out] states
- @retval S_OK
- */
- [propget] HRESULT states
- (
- [out, retval] AccessibleStates *states
- );
-
- /** @brief Returns the extended role.
-
- An extended role is a role which is dynamically generated by the application.
- It is not predefined by the %IAccessible2 specification.
-
- @param [out] extendedRole
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT extendedRole
- (
- [out, retval] BSTR *extendedRole
- );
-
- /** @brief Returns the localized extended role.
- @param [out] localizedExtendedRole
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT localizedExtendedRole
- (
- [out, retval] BSTR *localizedExtendedRole
- );
-
- /** @brief Returns the number of extended states.
- @param [out] nExtendedStates
- @retval S_OK
- */
- [propget] HRESULT nExtendedStates
- (
- [out, retval] long *nExtendedStates
- );
-
- /** @brief Returns the extended states (array of strings).
-
- An extended state is a state which is dynamically generated by the application.
- It is not predefined by the %IAccessible2 specification.
-
- @param [in] maxExtendedStates
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] extendedStates
- This array is allocated by the server. Free it with CoTaskMemFree.
- @param [out] nExtendedStates
- The number of extended states returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT extendedStates
- (
- [in] long maxExtendedStates,
- [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates,
- [out, retval] long *nExtendedStates
- );
-
- /** @brief Returns the localized extended states (array of strings).
- @param [in] maxLocalizedExtendedStates
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] localizedExtendedStates
- This array is allocated by the server. Free it with CoTaskMemFree.
- @param [out] nLocalizedExtendedStates
- The number of localized extended states returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT localizedExtendedStates
- (
- [in] long maxLocalizedExtendedStates,
- [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates,
- [out, retval] long *nLocalizedExtendedStates
- );
-
- /** @brief Returns the unique ID.
-
- The uniqueID is an identifier for this object, is unique within the
- current window, and remains the same for the lifetime of the accessible
- object.
-
- The uniqueID is not related to:
- - the MSAA objectID which is used by the server to disambiguate between
- IAccessibles per HWND or
- - the MSAA childID which is used to disambiguate between children being
- managed by an IAccessible.
-
- This value is provided so the AT can have access to a unique runtime persistent
- identifier even when not handling an event for the object.
-
- An example of when this value is useful is if the AT wants to build a cache.
- The AT could cache the uniqueIDs in addition to other data being cached.
- When an event is fired the AT could map the uniqueID to its internal model.
- Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the
- internal structure has been invalidated and can refetch just that part.
-
- This value can also be used by an AT to determine when the current control
- has changed. If the role is the same for two controls that are adjacent in
- the tab order, this can be used to detect the new control.
-
- Another use of this value by an AT is to identify when a grouping object has
- changed, e.g. when moving from a radio button in one group to a radio button in a
- different group.
-
- One means of implementing this would be to create a factory with a 32 bit number
- generator and a reuse pool. The number generator would emit numbers starting
- at 1. Each time an object's life cycle ended, its number would be saved into a
- reuse pool. The number generator would be used whenever the reuse pool was empty.
-
- Another way to create a unique ID is to generate it from a pointer value, e.g. an
- object's address. That would be unique because no two active objects can use the
- same allocated memory space.
-
- @param [out] uniqueID
- @retval S_OK
- */
- [propget] HRESULT uniqueID
- (
- [out, retval] long *uniqueID
- );
-
- /** @brief Returns the window handle for the parent window which contains this object.
-
- This is the same window handle which will be passed for any events that occur on the
- object, but is cached in the accessible object for use when it would be helpful to
- access the window handle in cases where an event isn't fired on this object.
-
- A use case is when a screen reader is grabbing an entire web page on a page load.
- Without the availability of windowHandle, the AT would have to get the window handle
- by using WindowFromAccessibleObject on each IAccessible, which is slow because it's
- implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for
- a ROLE_WINDOW object, mapping that back to a window handle.
-
- @param [out] windowHandle
- @retval S_OK
- */
- [propget] HRESULT windowHandle
- (
- [out, retval] HWND *windowHandle
- );
-
- /** @brief Returns the index of this object in its parent object.
- @param [out] indexInParent
- 0 based; -1 indicates there is no parent; the upper bound is the value
- returned by the parent's IAccessible::get_accChildCount.
- @retval S_OK
- @retval S_FALSE if no parent, [out] value is -1
- */
- [propget] HRESULT indexInParent
- (
- [out, retval] long *indexInParent
- );
-
- /** @brief Returns the IA2Locale of the accessible object.
- @param [out] locale
- @retval S_OK
- */
- [propget] HRESULT locale
- (
- [out, retval] IA2Locale *locale
- );
-
- /** @brief Returns the attributes specific to this %IAccessible2 object, such as a cell's formula.
- @param [out] attributes
- @retval S_OK
- @retval S_FALSE returned if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT attributes
- (
- [out, retval] BSTR *attributes
- );
-
-}
-
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleAction.idl b/src/3rdparty/iaccessible2/idl/AccessibleAction.idl
deleted file mode 100644
index edab0d288b..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleAction.idl
+++ /dev/null
@@ -1,194 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleAction.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-
-/** @brief This interface gives access to actions that can be executed
- for accessible objects.
-
- Every accessible object that can be manipulated via the native GUI beyond the
- methods available either in the MSAA IAccessible interface or in the set of
- IAccessible2 interfaces (other than this IAccessibleAction interface) should
- support the IAccessibleAction interface in order to provide Assistive Technology
- access to all the actions that can be performed by the object. Each action can
- be performed or queried for a name, description or associated key bindings.
- Actions are needed more for ATs that assist the mobility impaired, such as
- on-screen keyboards and voice command software. By providing actions directly,
- the AT can present them to the user without the user having to perform the extra
- steps to navigate a context menu.
-
- The first action should be equivalent to the MSAA default action. If there is
- only one action, %IAccessibleAction should also be implemented.
-*/
-[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)]
-interface IAccessibleAction : IUnknown
-{
-
- /** @brief Returns the number of accessible actions available in this object.
-
- If there are more than one, the first one is considered the
- "default" action of the object.
- @param [out] nActions
- The returned value of the number of actions is zero if there are
- no actions.
- @retval S_OK
- @note This method is missing a [propget] prefix in the IDL. The result is the
- method is named nActions in generated C++ code instead of get_nActions.
- */
- HRESULT nActions
- (
- [out,retval] long* nActions
- );
-
- /** @brief Performs the specified Action on the object.
- @param [in] actionIndex
- 0 based index specifying the action to perform. If it lies outside
- the valid range no action is performed.
- @retval S_OK
- @retval S_FALSE if action could not be performed
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT doAction
- (
- [in] long actionIndex
- );
-
- /** @brief Returns a description of the specified action of the object.
- @param [in] actionIndex
- 0 based index specifying which action's description to return.
- If it lies outside the valid range an empty string is returned.
- @param [out] description
- The returned value is a localized string of the specified action.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT description
- (
- [in] long actionIndex,
- [out, retval] BSTR *description
- );
-
- /** @brief Returns an array of BSTRs describing one or more key bindings, if
- there are any, associated with the specified action.
-
- The returned strings are the localized human readable key sequences to be
- used to activate each action, e.g. "Ctrl+Shift+D". Since these key
- sequences are to be used when the object has focus, they are like
- mnemonics (access keys), and not like shortcut (accelerator) keys.
-
- There is no need to implement this method for single action controls since
- that would be redundant with the standard MSAA programming practice of
- getting the mnemonic from get_accKeyboardShortcut.
-
- An AT such as an On Screen Keyboard might not expose these bindings but
- provide alternative means of activation.
-
- Note: the client allocates and passes in an array of pointers. The server
- allocates the BSTRs and passes back one or more pointers to these BSTRs into
- the array of pointers allocated by the client. The client is responsible
- for deallocating the BSTRs.
-
- @param [in] actionIndex
- 0 based index specifying which action's key bindings should be returned.
- @param [in] nMaxBindings
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] keyBindings
- An array of BSTRs, allocated by the server, one for each key binding.
- Free it with CoTaskMemFree.
- @param [out] nBindings
- The number of key bindings returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT keyBinding
- (
- [in] long actionIndex,
- [in] long nMaxBindings,
- [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings,
- [out, retval] long *nBindings
- );
-
- /** @brief Returns the non-localized name of specified action.
- @param [in] actionIndex
- 0 based index specifying which action's non-localized name should be returned.
- @param [out] name
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT name
- (
- [in] long actionIndex,
- [out, retval] BSTR *name
- );
-
- /** @brief Returns the localized name of specified action.
- @param [in] actionIndex
- 0 based index specifying which action's localized name should be returned.
- @param [out] localizedName
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT localizedName
- (
- [in] long actionIndex,
- [out, retval] BSTR *localizedName
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl b/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl
deleted file mode 100644
index ed15aa0018..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleApplication.idl
+++ /dev/null
@@ -1,121 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleApplication.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-
-/** @brief This interface gives access to the application's name and version information.
-
- This interface provides the AT with the information it needs to differentiate
- this application from other applications, from other versions of this
- application, or from other versions of this application running on different
- versions of an accessibility bridge or accessibility toolkit.
-
- Servers implementing IAccessible2 should provide access to the %IAccessibleApplication
- interface via QueryService from any object so that ATs can easily determine specific
- information about the application such as its name or version.
-*/
-[object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)]
-interface IAccessibleApplication : IUnknown
-{
-
- /** @brief Returns the application name.
- @param [out] name
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT appName
- (
- [out, retval] BSTR *name
- );
-
- /** @brief Returns the application version.
- @param [out] version
- The version string must not contain levels when it is know beforehand that
- this information will never require a change in a client's behavior.
- For example, use "3.6.0" rather than "3.6.0.v201005131500".
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT appVersion
- (
- [out, retval] BSTR *version
- );
-
- /** @brief Returns the toolkit/bridge name.
- @param [out] name
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT toolkitName
- (
- [out, retval] BSTR *name
- );
-
- /** @brief Returns the toolkit/bridge version.
- @param [out] version
- The version string must not contain levels when it is know beforehand that
- this information will never require a change in a client's behavior.
- For example, use "3.6.0" rather than "3.6.0.v201005131500".
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT toolkitVersion
- (
- [out, retval] BSTR *version
- );
-
-}
-
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl b/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl
deleted file mode 100644
index bea623a938..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleComponent.idl
+++ /dev/null
@@ -1,124 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleComponent.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-
-/** A value specifying a color in ARGB format, where each 8 bit color component
-specifies alpha, red, green, and blue respectively. The alpha value is optional.
-*/
-typedef long IA2Color;
-
-/** @brief This interface is implemented by any object that can be rendered
- on the screen.
-
- This interface provides the standard mechanism for an assistive technology
- to retrieve information concerning the graphical representation of an object.
- Coordinates used by the functions of this interface are specified in
- different coordinate systems. Their scale is the same and is equal to
- that of the screen coordinate system. In other words all coordinates
- are measured in pixels. They differ in their respective origin:
- <ul>
- <li>The screen coordinate system has its origin in the upper left
- corner of the current screen.</li>
- <li>The origin of the parent coordinate system is the upper left corner
- of the parent's bounding box. With no parent the screen coordinate
- system is used instead.</li>
- </ul>
-*/
-[object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)]
-interface IAccessibleComponent : IUnknown
-{
-
- /** @brief Returns the location of the upper left corner of the object's
- bounding box relative to the immediate parent object.
-
- The coordinates of the bounding box are given relative to the parent's
- coordinate system. The coordinates of the returned position are relative
- to this object's parent or relative to the screen on which this object
- is rendered if it has no parent. If the object is not on any screen
- the returned position is (0,0).
-
- @param [out] x
- @param [out] y
- @retval S_OK
- */
- [propget] HRESULT locationInParent
- (
- [out] long *x,
- [out, retval] long *y
- );
-
- /** @brief Returns the foreground color of this object.
- @param [out] foreground
- The returned color is the foreground color of this object or, if
- that is not supported, the default foreground color.
- @retval S_OK
- */
- [propget] HRESULT foreground
- (
- [out, retval] IA2Color *foreground
- );
-
- /** @brief Returns the background color of this object.
- @param [out] background
- The returned color is the background color of this object or, if
- that is not supported, the default background color.
- @retval S_OK
- */
- [propget] HRESULT background
- (
- [out, retval] IA2Color *background
- );
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl b/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl
deleted file mode 100644
index 48fefd30ef..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleEditableText.idl
+++ /dev/null
@@ -1,259 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleEditableText.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "IA2CommonTypes.idl";
-
-/** @brief This interface provides clipboard capability to text objects.
-
- This interface is typically used in conjunction with the IAccessibleText
- interface and complements that interface with the additional capability of
- clipboard operations. Note that even a read only text object can support
- the copy capability so this interface is not limited to editable objects.
-
- The substrings used with this interface are specified as follows:
- If startOffset is less than endOffset, the substring starts with the
- character at startOffset and ends with the character just before endOffset.
- If endOffset is lower than startOffset, the result is the same as a call
- with the two arguments exchanged. The whole text can be defined by passing
- the indices zero and IAccessibleText::nCharacters. If both indices have the
- same value, an empty string is defined.
-
- Refer to the @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about a special offset constant that can be used in %IAccessibleEditableText methods.
-*/
-[object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)]
-interface IAccessibleEditableText : IUnknown
-{
-
- /** @brief Copies the text range into the clipboard.
-
- The selection is set to the specified offsets and then selection is copied into
- the system clipboard.
-
- @param [in] startOffset
- Start index of the text to moved into the clipboard.
- The valid range is 0..length.
- @param [in] endOffset
- End index of the text to moved into the clipboard.
- The valid range is 0..length.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- */
- HRESULT copyText
- (
- [in] long startOffset,
- [in] long endOffset
- );
-
- /** @brief Deletes a range of text.
-
- The text between and including the two given indices is deleted
- from the text represented by this object.
-
- @param [in] startOffset
- Start index of the text to be deleted.
- The valid range is 0..length.
- @param [in] endOffset
- End index of the text to be deleted.
- The valid range is 0..length.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- */
- HRESULT deleteText
- (
- [in] long startOffset,
- [in] long endOffset
- );
-
- /** @brief Inserts text at the specified position.
-
- The specified string is inserted at the given index into the text
- represented by this object.
-
- @param [in] offset
- Index at which to insert the text.
- The valid range is 0..length.
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- @param [in] text
- Text that is inserted.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT insertText
- (
- [in] long offset,
- [in] BSTR *text
- );
-
- /** @brief Deletes a range of text and copies it to the clipboard.
-
- The selection is set to the specified offsets, the selection is then copied into
- the system clipboard, and then the selection is deleted.
-
- @param [in] startOffset
- Start index of the text to be deleted.
- The valid range is 0..length.
- @param [in] endOffset
- End index of the text to be deleted.
- The valid range is 0..length.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- */
- HRESULT cutText
- (
- [in] long startOffset,
- [in] long endOffset
- );
-
- /** @brief Pastes content from the clipboard.
-
- Any existing selection is removed, the clipboard content is then pasted into
- this object's text at the given offset. This method is similar to the insertText
- method. If the index is not valid the system clipboard content is not inserted. The
- behavior is the same as when Ctrl+V is used, i.e. the pasted contents are not
- necessarily plain text.
-
- @param [in] offset
- Index at which to insert the content from the system clipboard into
- the text represented by this object.
- The valid range is 0..length.
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT pasteText
- (
- [in] long offset
- );
-
- /** @brief Replaces text.
-
- The text between the two given indices is replaced by the specified
- replacement string. This method is equivalent to calling first
- IAccessibleEditableText::deleteText with the two indices and then
- calling IAccessibleEditableText::insertText with the replacement text
- at the start index.
-
- @param [in] startOffset
- Start index of the text to be replaced.
- The valid range is 0..length.
- @param [in] endOffset
- End index of the text to be replaced.
- The valid range is 0..length.
- @param [in] text
- The Text that replaces the text between the given indices.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- */
- HRESULT replaceText
- (
- [in] long startOffset,
- [in] long endOffset,
- [in] BSTR *text
- );
-
- /** @brief Replaces the attributes of a text range by the given set of attributes.
-
- Sets the attributes for the text between the two given indices. The old
- attributes are replaced by the new list of attributes.
-
- @param [in] startOffset
- Start index of the text whose attributes are modified.
- The valid range is 0..length.
- @param [in] endOffset
- End index of the text whose attributes are modified.
- The valid range is 0..length.
- @param [in] attributes
- Set of attributes that replaces the old list of attributes of
- the specified text portion.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleEditableText
- methods.
- */
- HRESULT setAttributes
- (
- [in] long startOffset,
- [in] long endOffset,
- [in] BSTR *attributes
- );
-}
-
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl b/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl
deleted file mode 100644
index 1db957d6e5..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleEventID.idl
+++ /dev/null
@@ -1,230 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleEventID.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-/** %IAccessible2 specific event constants
-
- This enum defines the event IDs fired by %IAccessible2 objects. The event IDs
- are in addition to those used by MSAA.
-*/
-enum IA2EventID {
-
- /** The change of the number or attributes of actions of an accessible
- object is signaled by events of this type.
- */
- IA2_EVENT_ACTION_CHANGED = 0x101,
-
- /** <b>Deprecated.</b> The active descendant of a component has changed.
-
- Note: This event constant is misspelled and thus is deprecated and will be
- removed in a later version. Please use the correctly spelled version which
- follows.
- */
- IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
-
- /** The active descendant of a component has changed. The active descendant
- is used in objects with transient children.
-
- Note: Due to the fact that MSAA's WinEvents don't allow the active child index
- to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages
- descendants scheme can't be used. Instead the active child object has to fire
- MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
- added to provide for event specific data to be passed with the event. At that
- time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
- IA2_STATE_MANAGES_DESCENDANTS state would be useful.
- */
- IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
-
- /** The document wide attributes of the document object have changed.
- */
- IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED,
-
- /** The contents of the document have changed.
- */
- IA2_EVENT_DOCUMENT_CONTENT_CHANGED,
-
- /** The loading of the document has completed.
- */
- IA2_EVENT_DOCUMENT_LOAD_COMPLETE,
-
- /** The loading of the document was interrupted.
- */
- IA2_EVENT_DOCUMENT_LOAD_STOPPED,
-
- /** The document contents are being reloaded.
- */
- IA2_EVENT_DOCUMENT_RELOAD,
-
- /** The ending index of this link within the containing string has changed.
- */
- IA2_EVENT_HYPERLINK_END_INDEX_CHANGED,
-
- /** The number of anchors associated with this hyperlink object has changed.
- */
- IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED,
-
- /** The hyperlink selected state changed from selected to unselected or
- from unselected to selected.
- */
- IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED,
-
- /** One of the links associated with the hypertext object has been activated.
- */
- IA2_EVENT_HYPERTEXT_LINK_ACTIVATED,
-
- /** One of the links associated with the hypertext object has been selected.
- */
- IA2_EVENT_HYPERTEXT_LINK_SELECTED,
-
- /** The starting index of this link within the containing string has changed.
- */
- IA2_EVENT_HYPERLINK_START_INDEX_CHANGED,
-
- /** Focus has changed from one hypertext object to another, or focus moved
- from a non-hypertext object to a hypertext object, or focus moved from a
- hypertext object to a non-hypertext object.
- */
- IA2_EVENT_HYPERTEXT_CHANGED,
-
- /** The number of hyperlinks associated with a hypertext object changed
- */
- IA2_EVENT_HYPERTEXT_NLINKS_CHANGED,
-
- /** An object's attributes changed.
- Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED.
- */
- IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED,
-
- /** A slide changed in a presentation document or a page boundary was
- crossed in a word processing document.
- */
- IA2_EVENT_PAGE_CHANGED,
-
- /** The caret moved from one section to the next.
- */
- IA2_EVENT_SECTION_CHANGED,
-
- /** A table caption changed.
- */
- IA2_EVENT_TABLE_CAPTION_CHANGED,
-
- /** A table's column description changed.
- */
- IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED,
-
- /** A table's column header changed.
- */
- IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED,
-
- /** A table's data changed.
- */
- IA2_EVENT_TABLE_MODEL_CHANGED,
-
- /** A table's row description changed.
- */
- IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED,
-
- /** A table's row header changed.
- */
- IA2_EVENT_TABLE_ROW_HEADER_CHANGED,
-
- /** A table's summary changed.
- */
- IA2_EVENT_TABLE_SUMMARY_CHANGED,
-
- /** A text object's attributes changed.
- Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED.
- */
- IA2_EVENT_TEXT_ATTRIBUTE_CHANGED,
-
- /** The caret has moved to a new position.
- */
- IA2_EVENT_TEXT_CARET_MOVED,
-
- /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED.
- */
- IA2_EVENT_TEXT_CHANGED,
-
- /** The caret moved from one column to the next.
- */
- IA2_EVENT_TEXT_COLUMN_CHANGED,
-
- /** Text was inserted.
- */
- IA2_EVENT_TEXT_INSERTED,
-
- /** Text was removed.
- */
- IA2_EVENT_TEXT_REMOVED,
-
- /** This event indicates general text changes, i.e. changes to text that are
- exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI
- which does not have an equivalent event, servers can alternatively fire
- ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED.
- */
- IA2_EVENT_TEXT_UPDATED,
-
- /** The text selection changed. Later versions of Microsoft development environments
- have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers
- should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise.
- Clients should be prepared to respond to either event.
-
- */
- IA2_EVENT_TEXT_SELECTION_CHANGED,
-
- /** A visible data event indicates the change of the visual appearance
- of an accessible object. This includes for example most of the
- attributes available via the IAccessibleComponent interface.
- */
- IA2_EVENT_VISIBLE_DATA_CHANGED
-
-};
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl b/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl
deleted file mode 100644
index 9311176d9c..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleHyperlink.idl
+++ /dev/null
@@ -1,187 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleHyperlink.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "AccessibleAction.idl";
-
-/** @brief This interface represents hyperlinks.
-
- This interface represents a hyperlink associated with a single substring
- of text or single non-text object. Non-text objects can have either a
- single link or a collection of links such as when the non-text object is
- an image map.
-
- Linked objects and anchors are implementation dependent. This interface is derived
- from IAccessibleAction. IAccessibleAction::nActions is one greater than the
- maximum value for the indices used with the methods of this interface.
-
- Furthermore, the object that implements this interface has to be connected
- implicitly or explicitly with an object that implements IAccessibleText.
- IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are
- indices with respect to the text exposed by IAccessibleText.
-
- This interface provides access to a single object which can have multiple actions.
- An example is an image map which is an image with multiple links each of which is
- associated with a separate non-overlapping area of the image. This interface could
- also be applied to other kinds of objects with multiple actions such as "smart tags"
- which are objects, typically strings, which have multiple actions such as
- "Activate URI", "Bookmark URI", etc.
-
- An interesting use case is an image map where each area is associated with multiple
- actions, e.g. an image map of smart tags. In this case you would have to implement
- two levels of accessible hyperlinks. The first level hyperlinks would only implement
- anchor and anchorTarget. The anchors would all reference the image object. The
- anchorTargets would reference the second level accessible hyperlink objects. None
- of the IAccessibleAction methods would be implemented on the first level hyperlink
- objects. The second level hyperlink objects would implement the IAccessibleAction
- methods. Their anchors would also reference the image object and their anchorTargets
- would reference URLs or the objects that would be activated.
-
- This use case demonstrates that in some cases there is no need for IAccessibleHyperlink
- to derive from IAccessibleAction. As a result it may be removed in a later version of
- the IDL and it is suggested that implementations should not rely on the inheritance.
-
-*/
-[object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)]
-interface IAccessibleHyperlink : IAccessibleAction
-{
-
- /** @brief Returns an object that represents the link anchor, as appropriate
- for the link at the specified index.
- @param [in] index
- A 0 based index identifies the anchor when, as in the case of an image map,
- there is more than one link represented by this object. The valid maximal
- index is indicated by IAccessibleAction::nActions.
- @param [out] anchor
- This is an implementation dependent value. For example, for a text link this
- method could return the substring of the containing string where the substring
- is overridden with link behavior, and for an image link this method could return
- an IUnknown VARIANT for IAccessibleImage. See the section about
- @ref _variants "VARIANTs" for additional information.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT anchor
- (
- [in] long index,
- [out, retval] VARIANT *anchor
- );
-
- /** @brief Returns an object representing the target of the link, as appropriate
- for the link at the specified index.
- @param [in] index
- A 0 based index identifies the anchor when, as in the case of an image map,
- there is more than one link represented by this object. The valid maximal
- index is indicated by IAccessibleAction::nActions.
- @param [out] anchorTarget
- This is an implementation dependent value. For example this method could
- return a BSTR VARIANT of the URI. Alternatively this method could return an
- IUnknown VARIANT of a COM interface representing a target object to be
- activated when the link is activated. See the section about
- @ref _variants "VARIANTs" for additional information.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT anchorTarget
- (
- [in] long index,
- [out, retval] VARIANT *anchorTarget
- );
-
- /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts.
-
- The returned value is related to the IAccessibleText interface of the object that
- owns this hyperlink.
- @param [out] index
- @retval S_OK
- */
- [propget] HRESULT startIndex
- (
- [out, retval] long *index
- );
-
- /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends.
-
- The returned value is related to the IAccessibleText interface of the object that
- owns this hyperlink. The character at the index is not part of the hypertext.
- @param [out] index
- @retval S_OK
- */
- [propget] HRESULT endIndex
- (
- [out, retval] long *index
- );
-
- /** @brief Returns whether the target object referenced by this link is still valid.
-
- This is a volatile state that may change without sending an appropriate event.
- Returns TRUE if the referenced target is still valid and FALSE otherwise.
-
- This has also been used to indicate whether or not the URI of the anchorTarget
- is malformed.
-
- @param [out] valid
- If false, one or more of the object's links are invalid.
- If true, all of the object's links are valid.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is FALSE
- @note This method is not being used, is deprecated, and should not be implemented or
- used. It is likely that this method will be removed in a later version of the IDL.
- */
- [propget] HRESULT valid
- (
- [out, retval] boolean *valid
- );
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl b/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl
deleted file mode 100644
index 13093bf610..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleHypertext.idl
+++ /dev/null
@@ -1,123 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleHypertext.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "AccessibleText.idl";
-import "AccessibleHyperlink.idl";
-
-/** @brief This interface exposes information about hypertext in a document.
-
- The %IAccessibleHypertext interface is the main interface to expose
- hyperlinks in a document, typically a text document, that are used
- to reference other documents. A typical implementation is to implement
- this interface on the smallest text object such as a paragraph of text.
-*/
-[object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)]
-interface IAccessibleHypertext : IAccessibleText
-{
-
- /** @brief Returns the number of links and link groups contained within this hypertext
- paragraph.
- @param [out] hyperlinkCount
- The number of links and link groups within this hypertext paragraph.
- Returns 0 if there is no link.
- @retval S_OK
- */
- [propget] HRESULT nHyperlinks
- (
- [out, retval] long *hyperlinkCount
- );
-
- /** @brief Returns the specified link.
-
- The returned IAccessibleHyperlink object encapsulates the hyperlink and
- provides several kinds of information describing it.
- @param [in] index
- This 0 based index specifies the hyperlink to return.
- @param [out] hyperlink
- If the given index is valid, i.e. lies in the interval from 0 to the number
- of links minus one, a reference to the specified hyperlink object is returned.
- If the index is invalid then a NULL pointer is returned.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT hyperlink
- (
- [in] long index,
- [out, retval] IAccessibleHyperlink **hyperlink
- );
-
- /** @brief Returns the index of the hyperlink that is associated with this character index.
-
- This is the case when a link spans the given character index.
- @param [in] charIndex
- A 0 based index of the character for which to return the link index. If
- IAccessibleText is used to represent the text containing the link, then the
- character index is only valid if it is greater than or equal to zero and
- lower than the number of characters in the text.
- @param [out] hyperlinkIndex
- Returns the 0 based index of the hyperlink that is associated with this
- character index, or -1 if charIndex is not on a link.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is -1
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT hyperlinkIndex
- (
- [in] long charIndex,
- [out, retval] long *hyperlinkIndex
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleImage.idl b/src/3rdparty/iaccessible2/idl/AccessibleImage.idl
deleted file mode 100644
index e347614e29..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleImage.idl
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleImage.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "IA2CommonTypes.idl";
-
-/** @brief This interface represents images and icons.
-
- This interface is used for a representation of images like icons on buttons.
- %IAccessibleImage only needs to be implemented in certain situations. Some
- examples are:
- <ol>
- <li>The accessible name and description are not enough to fully
- describe the image, e.g. when the accessible description is used to define the
- behavior of an actionable image and the image itself conveys semantically
- significant information.
- <li>The user can edit the content that includes an
- image and therefore the user needs to be able to review the image's position.
- </ol>
-*/
-[object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)]
-interface IAccessibleImage : IUnknown
-{
- /** @brief Returns the localized description of the image.
- @param [out] description
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT description
- (
- [out, retval] BSTR *description
- );
-
- /** @brief Returns the coordinates of the image.
- @param [in] coordinateType
- Specifies whether the returned coordinates should be relative to the screen or the parent object.
- @param [out] x
- @param [out] y
- @retval S_OK
- */
- [propget] HRESULT imagePosition
- (
- [in] enum IA2CoordinateType coordinateType,
- [out] long *x,
- [out, retval] long *y
- );
-
- /** @brief Returns the size of the image in units specified by parent's coordinate system.
- @param [out] height
- @param [out] width
- @retval S_OK
- */
-
- [propget] HRESULT imageSize
- (
- [out] long *height,
- [out, retval] long *width
- );
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl b/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl
deleted file mode 100644
index b0c6dfcc97..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleRelation.idl
+++ /dev/null
@@ -1,197 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleRelation.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-
-/** @defgroup grpRelations Relations
- Use the following constants to compare against the BSTRs returned by
- IAccessibleRelation::relationType.
-*/
-///@{
-
-/** Some attribute of this object is affected by a target object. */
-const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy";
-
-/** This object is interactive and controls some attribute of a target object. */
-const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor";
-
-/** This object is described by the target object. */
-const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy";
-
-/** This object is describes the target object. */
-const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor";
-
-/** This object is embedded by a target object. */
-const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy";
-
-/** This object embeds a target object. This relation can be used on the
- OBJID_CLIENT accessible for a top level window to show where the content
- areas are.
-*/
-const WCHAR *const IA2_RELATION_EMBEDS = L"embeds";
-
-/** Content flows to this object from a target object.
- This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text
- objects together in order to allow assistive technology to follow the
- intended reading order.
-*/
-const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom";
-
-/** Content flows from this object to a target object. */
-const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo";
-
-/** This object is label for a target object. */
-const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor";
-
-/** This object is labelled by a target object. Note that the double L spelling
- which follows is preferred. Please use it instead. This single L version may
- be removed in a later version.
-*/
-const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy";
-
-/** This object is labelled by a target object. */
-const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy";
-
-/** This object is a member of a group of one or more objects. When
- there is more than one object in the group each member may have one and the
- same target, e.g. a grouping object. It is also possible that each member has
- multiple additional targets, e.g. one for every other member in the group.
-*/
-const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf";
-
-/** This object is a child of a target object. */
-const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf";
-
-/** This object is a parent window of the target object. */
-const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf";
-
-/** This object is a transient component related to the target object.
- When this object is activated the target object doesn't lose focus.
-*/
-const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor";
-
-/** This object is a sub window of a target object. */
-const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf";
-
-///@}
-
-/// This interface gives access to an object's set of relations.
-[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)]
-interface IAccessibleRelation : IUnknown
-{
- /** @brief Returns the type of the relation.
- @param [out] relationType
- The strings returned are defined @ref grpRelations "in this section of the documentation".
- @retval S_OK
- */
- [propget] HRESULT relationType
- (
- [out, retval] BSTR *relationType
- );
-
- /** @brief Returns a localized version of the relation type.
- @param [out] localizedRelationType
- @retval S_OK
- */
- [propget] HRESULT localizedRelationType
- (
- [out, retval] BSTR *localizedRelationType
- );
-
- /** @brief Returns the number of targets for this relation.
- @param [out] nTargets
- @retval S_OK
- */
- [propget] HRESULT nTargets
- (
- [out, retval] long *nTargets
- );
-
- /** @brief Returns one accessible relation target.
- @param [in] targetIndex
- 0 based index
- @param [out] target
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Use QueryInterface to get IAccessible2.
- */
- [propget] HRESULT target
- (
- [in] long targetIndex,
- [out, retval] IUnknown **target
- );
-
- /** @brief Returns multiple accessible relation targets
- @param [in] maxTargets
- maximum size of the array allocated by the client
- @param [out] targets
- The array of target objects. Note that this array is to be allocated by the
- client and freed when no longer needed. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details. You will need to use
- QueryInterface on the IUnknown to get the IAccessible2.
- @param [out] nTargets
- actual number of targets in the returned array (not more than maxTargets)
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, e.g. a negative value
- */
- [propget] HRESULT targets
- (
- [in] long maxTargets,
- [out, size_is(maxTargets), length_is(*nTargets)]
- IUnknown **targets,
- [out, retval] long *nTargets
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleRole.idl b/src/3rdparty/iaccessible2/idl/AccessibleRole.idl
deleted file mode 100644
index 385e02d05a..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleRole.idl
+++ /dev/null
@@ -1,293 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleRole.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-
-/** Collection of roles
-
- This enumerator defines an extended set of accessible roles of objects implementing
- the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained
- through the MSAA get_accRole method. Examples are 'footnote', 'heading', and
- 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role.
-*/
-enum IA2Role {
-
- /** Unknown role. The object contains some Accessible information, but its
- role is not known.
- */
- IA2_ROLE_UNKNOWN = 0,
-
- /** An object that can be drawn into and to manage events from the objects
- drawn into it. Also refer to ::IA2_ROLE_FRAME,
- ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE.
- */
- IA2_ROLE_CANVAS = 0x401,
-
- /// A caption describing another object.
- IA2_ROLE_CAPTION,
-
- /// Used for check buttons that are menu items.
- IA2_ROLE_CHECK_MENU_ITEM,
-
- /// A specialized dialog that lets the user choose a color.
- IA2_ROLE_COLOR_CHOOSER,
-
- /// A date editor.
- IA2_ROLE_DATE_EDITOR,
-
- /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE.
- Also refer to ::IA2_ROLE_INTERNAL_FRAME.
- */
- IA2_ROLE_DESKTOP_ICON,
-
- /** A desktop pane. A pane that supports internal frames and iconified
- versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME.
- */
- IA2_ROLE_DESKTOP_PANE,
-
- /** A directory pane. A pane that allows the user to navigate through
- and select the contents of a directory. May be used by a file chooser.
- Also refer to ::IA2_ROLE_FILE_CHOOSER.
- */
- IA2_ROLE_DIRECTORY_PANE,
-
- /** An editable text object in a toolbar. <b>Deprecated.</b>
- The edit bar role was meant for a text area in a tool bar. However, to detect
- a text area in a tool bar the AT can query the parent.
- */
- IA2_ROLE_EDITBAR,
-
- /// Embedded (OLE) object.
- IA2_ROLE_EMBEDDED_OBJECT,
-
- /// Text that is used as an endnote (footnote at the end of a chapter or section).
- IA2_ROLE_ENDNOTE,
-
- /** A file chooser. A specialized dialog that displays the files in the
- directory and lets the user select a file, browse a different directory,
- or specify a filename. May use the directory pane to show the contents of
- a directory.
- Also refer to ::IA2_ROLE_DIRECTORY_PANE.
- */
- IA2_ROLE_FILE_CHOOSER,
-
- /** A font chooser. A font chooser is a component that lets the user pick
- various attributes for fonts.
- */
- IA2_ROLE_FONT_CHOOSER,
-
- /** Footer of a document page.
- Also refer to ::IA2_ROLE_HEADER.
- */
- IA2_ROLE_FOOTER,
-
- /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE.
- IA2_ROLE_FOOTNOTE,
-
- /** A container of form controls. An example of the use of this role is to
- represent an HTML FORM tag.
- */
- IA2_ROLE_FORM,
-
- /** Frame role. A top level window with a title bar, border, menu bar, etc.
- It is often used as the primary window for an application. Also refer to
- ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window.
- */
- IA2_ROLE_FRAME,
-
- /** A glass pane. A pane that is guaranteed to be painted on top of all panes
- beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and
- ::IA2_ROLE_ROOT_PANE.
- */
- IA2_ROLE_GLASS_PANE,
-
- /** Header of a document page.
- Also refer to ::IA2_ROLE_FOOTER.
- */
- IA2_ROLE_HEADER,
-
- /// Heading. Use the IAccessible2::attributes level attribute to determine the heading level.
- IA2_ROLE_HEADING,
-
- /// A small fixed size picture, typically used to decorate components.
- IA2_ROLE_ICON,
-
- /** An image map object. Usually a graphic with multiple hotspots, where
- each hotspot can be activated resulting in the loading of another document
- or section of a document.
- */
- IA2_ROLE_IMAGE_MAP,
-
- /** An object which is used to allow input of characters not found on a keyboard,
- such as the input of Chinese characters on a Western keyboard.
- */
- IA2_ROLE_INPUT_METHOD_WINDOW,
-
- /** An internal frame. A frame-like object that is clipped by a desktop pane.
- The desktop pane, internal frame, and desktop icon objects are often used to
- create multiple document interfaces within an application.
- Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME.
- */
- IA2_ROLE_INTERNAL_FRAME,
-
- /// An object used to present an icon or short string in an interface.
- IA2_ROLE_LABEL,
-
- /** A layered pane. A specialized pane that allows its children to be drawn
- in layers, providing a form of stacking order. This is usually the pane that
- holds the menu bar as well as the pane that contains most of the visual
- components in a window.
- Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE.
- */
- IA2_ROLE_LAYERED_PANE,
-
- /// An embedded note which is not visible until activated.
- IA2_ROLE_NOTE,
-
- /** A specialized pane whose primary use is inside a dialog.
- Also refer to MSAA's dialog role.
- */
- IA2_ROLE_OPTION_PANE,
-
- /** An object representing a page of document content. It is used in documents
- which are accessed by the user on a page by page basis.
- */
- IA2_ROLE_PAGE,
-
- /// A paragraph of text.
- IA2_ROLE_PARAGRAPH,
-
- /** A radio button that is a menu item.
- Also refer to MSAA's button and menu item roles.
- */
- IA2_ROLE_RADIO_MENU_ITEM,
-
- /** An object which is redundant with another object in the accessible hierarchy.
- ATs typically ignore objects with this role.
- */
- IA2_ROLE_REDUNDANT_OBJECT,
-
- /** A root pane. A specialized pane that has a glass pane and a layered pane
- as its children.
- Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE
- */
- IA2_ROLE_ROOT_PANE,
-
- /** A ruler such as those used in word processors.
- */
- IA2_ROLE_RULER,
-
- /** A scroll pane. An object that allows a user to incrementally view a large
- amount of information. Its children can include scroll bars and a viewport.
- Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role.
- */
- IA2_ROLE_SCROLL_PANE,
-
- /** A container of document content. An example of the use of this role is to
- represent an HTML DIV tag. A section may be used as a region. A region is a
- group of elements that together form a perceivable unit. A region does not
- necessarily follow the logical structure of the content, but follows the
- perceivable structure of the page. A region may have an attribute in the set
- of IAccessible2::attributes which indicates that it is "live". A live region
- is content that is likely to change in response to a timed change, a user
- event, or some other programmed logic or event.
- */
- IA2_ROLE_SECTION,
-
- /// Object with graphical representation used to represent content on draw pages.
- IA2_ROLE_SHAPE,
-
- /** A split pane. A specialized panel that presents two other panels at the
- same time. Between the two panels is a divider the user can manipulate to make
- one panel larger and the other panel smaller.
- */
- IA2_ROLE_SPLIT_PANE,
-
- /** An object that forms part of a menu system but which can be "undocked"
- from or "torn off" the menu system to exist as a separate window.
- */
- IA2_ROLE_TEAR_OFF_MENU,
-
- /// An object used as a terminal emulator.
- IA2_ROLE_TERMINAL,
-
- /// Collection of objects that constitute a logical text entity.
- IA2_ROLE_TEXT_FRAME,
-
- /** A toggle button. A specialized push button that can be checked or unchecked,
- but does not provide a separate indicator for the current state.
- Also refer to MSAA's roles of push button, check box, and radio button.
- <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's
- ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED.
- */
- IA2_ROLE_TOGGLE_BUTTON,
-
- /** A viewport. An object usually used in a scroll pane. It represents the
- portion of the entire data that the user can see. As the user manipulates
- the scroll bars, the contents of the viewport can change.
- Also refer to ::IA2_ROLE_SCROLL_PANE.
- */
- IA2_ROLE_VIEW_PORT,
-
- /** An object containing content which is complementary to the main content of
- a document, but remains meaningful when separated from the main content. There
- are various types of content that would appropriately have this role. For example,
- in the case where content is delivered via a web portal to a web browser, this may
- include but not be limited to show times, current weather, related articles, or
- stocks to watch. The complementary role indicates that contained content is relevant
- to the main content. If the complementary content is completely separable main
- content, it may be appropriate to use a more general role.
- */
- IA2_ROLE_COMPLEMENTARY_CONTENT
-
-};
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleStates.idl b/src/3rdparty/iaccessible2/idl/AccessibleStates.idl
deleted file mode 100644
index 0304b643da..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleStates.idl
+++ /dev/null
@@ -1,209 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleStates.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-
-typedef long AccessibleStates;
-
-/** %IAccessible2 specific state bit constants
-
- This enum defines the state bits returned by IAccessible2::states. The
- %IAccessible2 state bits are in addition to those returned by MSAA.
-*/
-enum IA2States {
-
-/** Indicates a window is currently the active window, or is an active subelement
- within a container or table.
-
- This state can be used to indicate the current active item in a container, even
- if the container itself is not currently active. In other words this would indicate
- the item that will get focus if you tab to the container.
-
- This information is important for knowing what to report for trees and potentially
- other containers in a virtual buffer.
-
- Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
-*/
-IA2_STATE_ACTIVE = 0x1,
-
-/** Indicates that the object is armed.
-
- Used to indicate that the control is "pressed" and will be invoked when the
- actuator, e.g. a mouse button, is "released". An AT which either monitors the
- mouse or synthesizes mouse events might need to know that, and possibly a talking
- interface would even let the user know about it. It could also potentially be
- useful to on screen keyboards or test tools since the information does indicate
- something about the state of the interface, for example, code operating asynchronously
- might need to wait for the armed state to change before doing something else.
-
-*/
-IA2_STATE_ARMED = 0x2,
-
-/** Indicates the user interface object corresponding to this object no longer exists. */
-IA2_STATE_DEFUNCT = 0x4,
-
-/** An object with this state has a caret and implements the IAccessibleText interface.
-
- Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination
- with IA2_STATE_EDITABLE.
-
-*/
-IA2_STATE_EDITABLE = 0x8,
-
-/** Indicates the orientation of this object is horizontal. */
-IA2_STATE_HORIZONTAL = 0x10,
-
-/** Indicates this object is minimized and is represented only by an icon. */
-IA2_STATE_ICONIFIED = 0x20,
-
-/** Indicates an input validation failure. */
-IA2_STATE_INVALID_ENTRY = 0x40,
-
-/** Indicates that this object manages its children.
-
- Note: Due to the fact that MSAA's WinEvents don't allow the active child index
- to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages
- descendants scheme can't be used. Instead the active child object has to fire
- MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
- added to provide for event specific data to be passed with the event. At that
- time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
- IA2_STATE_MANAGES_DESCENDANTS state would be useful.
-*/
-IA2_STATE_MANAGES_DESCENDANTS = 0x80,
-
-/** Indicates that an object is modal.
-
- Modal objects have the behavior that something must be done with the object
- before the user can interact with an object in a different window.
-*/
-IA2_STATE_MODAL = 0x100,
-
-/** Indicates this text object can contain multiple lines of text. */
-IA2_STATE_MULTI_LINE = 0x200,
-
-/** Indicates this object paints every pixel within its rectangular region. */
-IA2_STATE_OPAQUE = 0x400,
-
-/** Indicates that user interaction is required.
-
- An example of when this state is used is when a field in a form must be filled
- before a form can be processed.
-*/
-IA2_STATE_REQUIRED = 0x800,
-
-/** Indicates an object which supports text selection.
-
- Note: This is different than MSAA STATE_SYSTEM_SELECTABLE.
-*/
-IA2_STATE_SELECTABLE_TEXT = 0x1000,
-
-/** Indicates that this text object can contain only a single line of text. */
-IA2_STATE_SINGLE_LINE = 0x2000,
-
-/** Indicates that the accessible object is stale.
-
- This state is used when the accessible object no longer accurately
- represents the state of the object which it is representing such as when an
- object is transient or when an object has been or is in the process of being
- destroyed or when the object's index in its parent has changed.
-*/
-IA2_STATE_STALE = 0x4000,
-
-/** Indicates that the object implements autocompletion.
-
- This state indicates that a text control will respond to the input of
- one ore more characters and cause a sub-item to become selected. The
- selection may also result in events fired on the parent object.
-*/
-IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
-
-/** Indicates this object is transient.
-
- An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS.
- For example, a list item object may be managed by its parent list object and may only
- exist as long as the object is actually rendered. Similarly a table cell's accessible
- object may exist only while the cell has focus. However, from the perspective of an
- assistive technology a transient object behaves like a non-transient object. As a
- result it is likely that this state is not of use to an assistive technology, but it
- is provided in case an assistive technology determines that knowledge of the transient
- nature of the object is useful and also for harmony with the Linux accessibility API.
-
- Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
- */
-IA2_STATE_TRANSIENT = 0x10000,
-
-/** Indicates the orientation of this object is vertical. */
-IA2_STATE_VERTICAL = 0x20000,
-
-/** Indicates this object is checkable.
-
- The standard checkable objects are check boxes, radio buttons, check box menu
- items, radio menu items, and toggle buttons. Since assistive technology will
- determine that these objects are checkable via the object's role the checkable
- state is not required. However, this state is necessary in those cases where
- an object has a role which is not one of the previously mentioned roles. An
- example is a table cell which indicates whether or not an email has an attachment,
- whether or not an mail is considered spam, and whether or not an email has been read.
- */
-IA2_STATE_CHECKABLE = 0x40000,
-
-/** Indicates this object is pinned.
-
- This state indicates that an object is fixed at a certain location. One example
- is a browser tab that when pinned cannot be moved until unpinned. Another example
- is a movable or floating object that when pinned remains in its pinned location
- until being unpinned.
- */
-IA2_STATE_PINNED = 0x80000
-
-};
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTable.idl b/src/3rdparty/iaccessible2/idl/AccessibleTable.idl
deleted file mode 100644
index 69c99a7515..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleTable.idl
+++ /dev/null
@@ -1,551 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleTable.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "Accessible2.idl";
-import "IA2CommonTypes.idl";
-
-/** @brief This interface gives access to a two-dimensional table.
-
- Typically all accessible objects that represent cells or cell-clusters of a table
- will be at the same time children of the table. In this case IAccessible2::indexInParent
- will return the child index which then can be used when calling IAccessibleTable::rowIndex
- and IAccessibleTable::columnIndex.
-
- However, in some cases that kind of implementation will not be possible. When
- the table cells are not direct children of a table, the object representing
- the cell can define a "table-cell-index" object attribute identifying the 0
- based table cell index. This object attribute is obtained by parsing the
- attribute string returned by IAccessible2::attributes. The "table-cell-index"
- attribute can be used just like a child index of the typical case. ATs should
- first test for the presence of the "table-cell-index" attribute and if it is not
- present then IAccessible2::indexInParent can be used as in the typical case
- where cells are direct children of the table.
-
- The range of valid coordinates for this interface are implementation dependent.
- However, that range includes at least the intervals from the from the first row
- or column with the index 0 up to the last (but not including) used row or column
- as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns.
-
- Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell
- rather than this interface.
-*/
-[object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)]
-interface IAccessibleTable : IUnknown
-{
-
- /** @brief Returns the accessible object at the specified row and column in
- the table. This object could be an IAccessible or an IAccessible2.
- @param [in] row
- The 0 based row index for which to retrieve the cell.
- @param [in] column
- The 0 based column index for which to retrieve the cell.
- @param [out] accessible
- If both row and column index are valid then the corresponding accessible
- object is returned that represents the requested cell regardless of whether
- the cell is currently visible (on the screen).
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
- */
- [propget] HRESULT accessibleAt
- (
- [in] long row,
- [in] long column,
- [out, retval] IUnknown **accessible
- );
-
- /** @brief Returns the caption for the table. The returned object could be
- an IAccessible or an IAccessible2.
- @param [out] accessible
- If the table has a caption then a reference to it is returned, else a NULL
- pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT caption
- (
- [out, retval] IUnknown **accessible
- );
-
- /** @brief Translates the given row and column indexes into the corresponding cell index.
- @param [in] rowIndex
- 0 based row index for the cell.
- @param [in] columnIndex
- 0 based column index for the cell.
- @param [out] cellIndex
- Returns the 0 based index of the cell at the specified row and column indexes.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is 0
- @note The returned value is not necessarily a child index of the immediate parent.
- In cases where the table cells are not direct children of the table the index
- is actually the cell index, i.e. conceptually it's an index into a one dimensional
- array of cells laid out in row order.
- */
- [propget] HRESULT childIndex
- (
- [in] long rowIndex,
- [in] long columnIndex,
- [out, retval] long *cellIndex
- );
-
- /** @brief Returns the description text of the specified column in the table.
- @param [in] column
- The 0 based index of the column for which to retrieve the description.
- @param [out] description
- Returns the description text of the specified column in the table if such a
- description exists. Otherwise a NULL pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
- */
- [propget] HRESULT columnDescription
- (
- [in] long column,
- [out, retval] BSTR *description
- );
-
- /** @brief Returns the number of columns occupied by the accessible object
- at the specified row and column in the table.
-
- The result is greater than 1 if the specified cell spans multiple columns.
- @param [in] row
- 0 based row index of the accessible for which to return the column extent.
- @param [in] column
- 0 based column index of the accessible for which to return the column extent.
- @param [out] nColumnsSpanned
- Returns the 1 based column extent of the specified cell.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is 0
- */
- [propget] HRESULT columnExtentAt
- (
- [in] long row,
- [in] long column,
- [out, retval] long *nColumnsSpanned
- );
-
- /** @brief Returns the column headers as an %IAccessibleTable object.
-
- Content and size of the returned table are implementation dependent.
- @param [out] accessibleTable
- The column header
- @param [out] startingRowIndex
- The 0 based row index where the header starts, usually 0.
- @retval S_OK
- @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT columnHeader
- (
- [out] IAccessibleTable **accessibleTable,
- [out, retval] long *startingRowIndex
- );
-
- /** @brief Translates the given cell index into the corresponding column index.
- @param [in] cellIndex
- 0 based index of the cell in the parent or closest ancestor table. Typically this
- is the value returned from IAccessible2::indexInParent, but in the case where the
- table cells are not direct children of the table this is the cell index specified
- by the "table-cell-index" object attribute obtained from parsing the attributes
- string returned by calling IAccessible2::attributes on the cell object.
- @param [out] columnIndex
- Returns the 0 based column index of the cell of the specified child or the index of
- the first column if the child spans multiple columns.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is 0
- */
- [propget] HRESULT columnIndex
- (
- [in] long cellIndex,
- [out, retval] long *columnIndex
- );
-
- /** @brief Returns the total number of columns in table
- @param [out] columnCount
- Number of columns in table (including columns outside the current viewport)
- @retval S_OK
- */
- [propget] HRESULT nColumns
- (
- [out, retval] long *columnCount
- );
-
- /** @brief Returns the total number of rows in table
- @param [out] rowCount
- Number of rows in table (including rows outside the current viewport)
- @retval S_OK
- */
- [propget] HRESULT nRows
- (
- [out, retval] long *rowCount
- );
-
- /** @brief Returns the total number of selected cells
- @param [out] cellCount
- Number of cells currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedChildren
- (
- [out, retval] long *cellCount
- );
-
- /** @brief Returns the total number of selected columns
- @param [out] columnCount
- Number of columns currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedColumns
- (
- [out, retval] long *columnCount
- );
-
- /** @brief Returns the total number of selected rows
- @param [out] rowCount
- Number of rows currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedRows
- (
- [out, retval] long *rowCount
- );
-
- /** @brief Returns the description text of the specified row in the table.
- @param [in] row
- The 0 based index of the row for which to retrieve the description.
- @param [out] description
- Returns the description text of the specified row in the table if such a
- description exists. Otherwise a NULL pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
- */
- [propget] HRESULT rowDescription
- (
- [in] long row,
- [out, retval] BSTR *description
- );
-
- /** @brief Returns the number of rows occupied by the accessible object
- at the specified row and column in the table.
-
- The result is greater than 1 if the specified cell spans multiple rows.
- @param [in] row
- 0 based row index of the accessible for which to return the row extent.
- @param [in] column
- 0 based column index of the accessible for which to return the row extent.
- @param [out] nRowsSpanned
- Returns the row extent of the specified cell.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is 0
- */
- [propget] HRESULT rowExtentAt
- (
- [in] long row,
- [in] long column,
- [out, retval] long *nRowsSpanned
- );
-
- /** @brief Returns the row headers as an %IAccessibleTable object.
-
- Content and size of the returned table are implementation dependent.
- @param [out] accessibleTable
- The row header.
- @param [out] startingColumnIndex
- The 0 based column index where the header starts, usually 0.
- @retval S_OK
- @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT rowHeader
- (
- [out] IAccessibleTable **accessibleTable,
- [out, retval] long *startingColumnIndex
- );
-
- /** @brief Translates the given cell index into a row index.
- @param [in] cellIndex
- 0 based index of the cell in the parent or closest ancestor table. Typically this
- is the value returned from IAccessible2::indexInParent, but in the case where the
- table cells are not direct children of the table this is the cell index specified
- by the "table-cell-index" object attribute obtained from parsing the attributes
- string returned by calling IAccessible2::attributes on the cell object.
- @param [out] rowIndex
- 0 based row index
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is 0
- */
- [propget] HRESULT rowIndex
- (
- [in] long cellIndex,
- [out, retval] long *rowIndex
- );
-
- /** @brief Returns a list of cell indexes currently selected (0 based).
- @param [in] maxChildren
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] children
- An array of cell indexes of selected cells (each index is 0 based),
- allocated by the server. Free it with CoTaskMemFree.
- @param [out] nChildren
- The number of cell indexes returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedChildren
- (
- [in] long maxChildren,
- [out, size_is(,maxChildren), length_is(,*nChildren)] long **children,
- [out, retval] long *nChildren
- );
-
- /** @brief Returns a list of column indexes currently selected (0 based).
- @param [in] maxColumns
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] columns
- An array of column indexes of selected columns (each index is 0 based), allocated
- by the server. Free it with CoTaskMemFree.
- @param [out] nColumns
- The number of column indexes returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedColumns
- (
- [in] long maxColumns,
- [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns,
- [out, retval] long *nColumns
- );
-
- /** @brief Returns a list of row indexes currently selected (0 based).
- @param [in] maxRows
- This parameter is ignored. Refer to @ref _arrayConsideration
- "Special Consideration when using Arrays" for more details.
- @param [out] rows
- An array of row indexes of selected rows (each index is 0 based), allocated
- by the server. Free it with CoTaskMemFree.
- @param [out] nRows
- The number of row indexes returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedRows
- (
- [in] long maxRows,
- [out, size_is(,maxRows), length_is(,*nRows)] long **rows,
- [out, retval] long *nRows
- );
-
- /** @brief Returns the summary description of the table. The returned object could be
- an IAccessible or an IAccessible2.
- @param [out] accessible
- Returns a reference to an implementation dependent accessible object
- representing the table's summary or a NULL pointer if the table
- does not support a summary.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT summary
- (
- [out, retval] IUnknown **accessible
- );
-
- /** @brief Returns a boolean value indicating whether the specified column is
- completely selected.
- @param [in] column
- 0 based index of the column for which to determine whether it is selected.
- @param [out] isSelected
- Returns TRUE if the specified column is selected completely and FALSE otherwise.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
- */
- [propget] HRESULT isColumnSelected
- (
- [in] long column,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Returns a boolean value indicating whether the specified row is completely
- selected.
- @param [in] row
- 0 based index of the row for which to determine whether it is selected.
- @param [out] isSelected
- Returns TRUE if the specified row is selected completely and FALSE otherwise.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
- */
- [propget] HRESULT isRowSelected
- (
- [in] long row,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Returns a boolean value indicating whether the specified cell is selected.
- @param [in] row
- 0 based index of the row for the cell to determine whether it is selected.
- @param [in] column
- 0 based index of the column for the cell to determine whether it is selected.
- @param [out] isSelected
- Returns TRUE if the specified cell is selected and FALSE otherwise.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
- */
- [propget] HRESULT isSelected
- (
- [in] long row,
- [in] long column,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Selects a row and unselects all previously selected rows.
- @param [in] row
- 0 based index of the row to be selected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT selectRow
- (
- [in] long row
- );
-
- /** @brief Selects a column and unselects all previously selected columns.
- @param [in] column
- 0 based index of the column to be selected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT selectColumn
- (
- [in] long column
- );
-
- /** @brief Unselects one row, leaving other selected rows selected (if any).
- @param [in] row
- 0 based index of the row to be unselected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT unselectRow
- (
- [in] long row
- );
-
- /** @brief Unselects one column, leaving other selected columns selected (if any).
- @param [in] column
- 0 based index of the column to be unselected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT unselectColumn
- (
- [in] long column
- );
-
- /** @brief Given a cell index, gets the row and column indexes and extents of a cell
- and whether or not it is selected.
-
- This is a convenience function. It is not mandatory to implement it.
- @param [in] index
- 0 based index of this cell in the table.
- @param [out] row
- 0 based row index.
- @param [out] column
- 0 based column index.
- @param [out] rowExtents
- Number of cells spanned by this cell in this row.
- @param [out] columnExtents
- Number of cells spanned by this cell in this column.
- @param [out] isSelected
- Indicates if the specified cell is selected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively
- */
- [propget] HRESULT rowColumnExtentsAtIndex
- (
- [in] long index,
- [out] long *row,
- [out] long *column,
- [out] long *rowExtents,
- [out] long *columnExtents,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Returns the type and extents describing how a table changed.
-
- Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
-
- This data is only guaranteed to be valid while the thread notifying the event
- continues. Once the handler has returned, the validity of the data depends on
- how the server manages the life cycle of its objects. Also, note that the server
- may have different life cycle management strategies for controls depending on
- whether or not a control manages its children. Lists, trees, and tables can have
- a large number of children and thus it's possible that the child objects for those
- controls would only be created as needed. Servers should document their life cycle
- strategy as this will be of interest to assistive technology or script engines
- accessing data out of process or from other threads. Servers only need to save the
- most recent row and column values associated with the change and a scope of the
- entire application is adequate.
-
- @param [out] modelChange
- A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT modelChange
- (
- [out, retval] IA2TableModelChange *modelChange
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl b/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl
deleted file mode 100644
index 9d7f3e4475..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleTable2.idl
+++ /dev/null
@@ -1,375 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleTable2.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "Accessible2.idl";
-import "IA2CommonTypes.idl";
-
-/** @brief This interface gives access to a two-dimensional table.
-
- Please also refer to the IAccessibleTableCell interface.
-
- If you want to support older applications you should also support the
- IAccessibleTable inteface.
-*/
-[object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)]
-interface IAccessibleTable2 : IUnknown
-{
-
- /** @brief Returns the accessible object at the specified row and column in
- the table. This object could be an IAccessible or an IAccessible2.
- @param [in] row
- The 0 based row index for which to retrieve the cell.
- @param [in] column
- The 0 based column index for which to retrieve the cell.
- @param [out] cell
- If both row and column index are valid then the corresponding accessible
- object is returned that represents the requested cell regardless of whether
- the cell is currently visible (on the screen).
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT cellAt
- (
- [in] long row,
- [in] long column,
- [out, retval] IUnknown **cell
- );
-
- /** @brief Returns the caption for the table. The returned object could be
- an IAccessible or an IAccessible2.
- @param [out] accessible
- If the table has a caption then a reference to it is returned, else a NULL
- pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT caption
- (
- [out, retval] IUnknown **accessible
- );
-
- /** @brief Returns the description text of the specified column in the table.
- @param [in] column
- The 0 based index of the column for which to retrieve the description.
- @param [out] description
- Returns the description text of the specified column in the table if such a
- description exists. Otherwise a NULL pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT columnDescription
- (
- [in] long column,
- [out, retval] BSTR *description
- );
-
-
- /** @brief Returns the total number of columns in table
- @param [out] columnCount
- Number of columns in table (including columns outside the current viewport)
- @retval S_OK
- */
- [propget] HRESULT nColumns
- (
- [out, retval] long *columnCount
- );
-
- /** @brief Returns the total number of rows in table
- @param [out] rowCount
- Number of rows in table (including rows outside the current viewport)
- @retval S_OK
- */
- [propget] HRESULT nRows
- (
- [out, retval] long *rowCount
- );
-
- /** @brief Returns the total number of selected cells
- @param [out] cellCount
- Number of cells currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedCells
- (
- [out, retval] long *cellCount
- );
-
- /** @brief Returns the total number of selected columns
- @param [out] columnCount
- Number of columns currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedColumns
- (
- [out, retval] long *columnCount
- );
-
- /** @brief Returns the total number of selected rows
- @param [out] rowCount
- Number of rows currently selected
- @retval S_OK
- */
- [propget] HRESULT nSelectedRows
- (
- [out, retval] long *rowCount
- );
-
- /** @brief Returns the description text of the specified row in the table.
- @param [in] row
- The 0 based index of the row for which to retrieve the description.
- @param [out] description
- Returns the description text of the specified row in the table if such a
- description exists. Otherwise a NULL pointer is returned.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT rowDescription
- (
- [in] long row,
- [out, retval] BSTR *description
- );
-
- /** @brief Returns a list of accessibles currently selected.
- @param [out] cells
- Pointer to an array of references to selected accessibles. The array is
- allocated by the server with CoTaskMemAlloc and freed by the client with
- CoTaskMemFree.
- @param [out] nSelectedCells
- The number of accessibles returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedCells
- (
- [out, size_is(,*nSelectedCells,)] IUnknown ***cells,
- [out, retval] long *nSelectedCells
- );
-
- /** @brief Returns a list of column indexes currently selected (0 based).
- @param [out] selectedColumns
- A pointer to an array of column indexes of selected columns (each index is
- 0 based). The array is allocated by the server with CoTaskMemAlloc and
- freed by the client with CoTaskMemFree.
- @param [out] nColumns
- The number of column indexes returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedColumns
- (
- [out, size_is(,*nColumns)] long **selectedColumns,
- [out, retval] long *nColumns
- );
-
- /** @brief Returns a list of row indexes currently selected (0 based).
- @param [out] selectedRows
- An array of row indexes of selected rows (each index is 0 based). The array
- is allocated by the server with CoTaskMemAlloc and freed by the client with
- CoTaskMemFree.
- @param [out] nRows
- The number of row indexes returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT selectedRows
- (
- [out, size_is(,*nRows)] long **selectedRows,
- [out, retval] long *nRows
- );
-
- /** @brief Returns the summary description of the table. The returned object could be
- an IAccessible or an IAccessible2.
- @param [out] accessible
- Returns a reference to an implementation dependent accessible object
- representing the table's summary or a NULL pointer if the table
- does not support a summary.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT summary
- (
- [out, retval] IUnknown **accessible
- );
-
- /** @brief Returns a boolean value indicating whether the specified column is
- completely selected.
- @param [in] column
- 0 based index of the column for which to determine whether it is selected.
- @param [out] isSelected
- Returns TRUE if the specified column is selected completely and FALSE otherwise.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT isColumnSelected
- (
- [in] long column,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Returns a boolean value indicating whether the specified row is completely
- selected.
- @param [in] row
- 0 based index of the row for which to determine whether it is selected.
- @param [out] isSelected
- Returns TRUE if the specified row is selected completely and FALSE otherwise.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT isRowSelected
- (
- [in] long row,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Selects a row and unselects all previously selected rows.
-
- The behavior should mimic that of the application, but for those applications
- which do not have a means in the GUI to select a full row of cells the behavior
- should be as follows: First any selected rows in the table are unselected. Then
- the entire row of cells for the specified row is selected. If any of the
- cells in the selected row span additional rows, the cells in those rows
- are also selected.
- @param [in] row
- 0 based index of the row to be selected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT selectRow
- (
- [in] long row
- );
-
- /** @brief Selects a column and unselects all previously selected columns.
-
- The behavior should mimic that of the application, but for those applications
- which do not have a means in the GUI to select a full column of cells the behavior
- should be as follows: First any selected columns in the table are unselected. Then
- the entire column of cells for the specified column is selected. If any of the
- cells in the selected column span additional columns, the cells in those columns
- are also selected.
- @param [in] column
- 0 based index of the column to be selected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT selectColumn
- (
- [in] long column
- );
-
- /** @brief Unselects one row, leaving other selected rows selected (if any).
-
- The behavior should mimic that of the application, but for those applications
- which do not have a means in the GUI to unselect a full row of cells the
- behavior should be as follows: The entire row of cells for the specified
- row is unselected. If any of the cells in the selected row span additional
- rows, the cells in those rows are also unselected.
- @param [in] row
- 0 based index of the row to be unselected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT unselectRow
- (
- [in] long row
- );
-
- /** @brief Unselects one column, leaving other selected columns selected (if any).
-
- The behavior should mimic that of the application, but for those applications
- which do not have a means in the GUI to unselect a full column of cells the
- behavior should be as follows: The entire column of cells for the specified
- column is unselected. If any of the cells in the selected column span additional
- columns, the cells in those columns are also unselected.
- @param [in] column
- 0 based index of the column to be unselected.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT unselectColumn
- (
- [in] long column
- );
-
- /** @brief Returns the type and extents describing how a table changed.
-
- Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
-
- This data is only guaranteed to be valid while the thread notifying the event
- continues. Once the handler has returned, the validity of the data depends on
- how the server manages the life cycle of its objects. Also, note that the server
- may have different life cycle management strategies for controls depending on
- whether or not a control manages its children. Lists, trees, and tables can have
- a large number of children and thus it's possible that the child objects for those
- controls would only be created as needed. Servers should document their life cycle
- strategy as this will be of interest to assistive technology or script engines
- accessing data out of process or from other threads. Servers only need to save the
- most recent row and column values associated with the change and a scope of the
- entire application is adequate.
-
- @param [out] modelChange
- A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is NULL
- */
- [propget] HRESULT modelChange
- (
- [out, retval] IA2TableModelChange *modelChange
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl b/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl
deleted file mode 100644
index a4cd988384..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleTableCell.idl
+++ /dev/null
@@ -1,194 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleTableCell.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "Accessible2.idl";
-
-/** @brief This interface gives access to the cells of a two-dimensional table.
-
- Please also refer to the IAccessibleTable2 interface.
-
-*/
-[object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)]
-interface IAccessibleTableCell : IUnknown
-{
-
- /** @brief Returns the number of columns occupied by this cell accessible.
-
- The result is greater than 1 if the specified cell spans multiple columns.
- @param [out] nColumnsSpanned
- Returns the 1 based column extent of the specified cell.
- @retval S_OK
- */
- [propget] HRESULT columnExtent
- (
- [out, retval] long *nColumnsSpanned
- );
-
- /** @brief Returns the column headers as an array of cell accessibles.
-
- @param [out] cellAccessibles
- Pointer to an array of references to cell accessibles. The array is allocated
- by the server. Free it with CoTaskMemFree.
- @param [out] nColumnHeaderCells
- The number of accessibles returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT columnHeaderCells
- (
- [out, size_is(,*nColumnHeaderCells,)] IUnknown ***cellAccessibles,
- [out, retval] long *nColumnHeaderCells
- );
-
- /** @brief Translates this cell accessible into the corresponding column index.
-
- @param [out] columnIndex
- Returns the 0 based column index of the cell of the specified cell or the index of
- the first column if the cell spans multiple columns.
- @retval S_OK
- */
- [propget] HRESULT columnIndex
- (
- [out, retval] long *columnIndex
- );
-
- /** @brief Returns the number of rows occupied by this cell accessible.
-
- @param [out] nRowsSpanned
- Returns the row extent of the specified cell.
- @retval S_OK
- */
- [propget] HRESULT rowExtent
- (
- [out, retval] long *nRowsSpanned
- );
-
- /** @brief Returns the row headers as an array of cell accessibles.
-
- @param [out] cellAccessibles
- Pointer to an array of references to cell accessibles. The array is allocated
- by the server. Free it with CoTaskMemFree.
- @param [out] nRowHeaderCells
- The number of accessibles returned; the size of the returned array.
- @retval S_OK
- @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
- */
- [propget] HRESULT rowHeaderCells
- (
- [out, size_is(,*nRowHeaderCells,)] IUnknown ***cellAccessibles,
- [out, retval] long *nRowHeaderCells
- );
-
- /** @brief Translates this cell accessible into the corresponding row index.
-
- @param [out] rowIndex
- Returns the 0 based row index of the specified cell or the index of
- the first row if the cell spans multiple rows.
- @retval S_OK
- */
- [propget] HRESULT rowIndex
- (
- [out, retval] long *rowIndex
- );
-
- /** @brief Returns a boolean value indicating whether this cell is selected.
-
- @param [out] isSelected
- Returns TRUE if the specified cell is selected and FALSE otherwise.
- @retval S_OK
- */
- [propget] HRESULT isSelected
- (
- [out, retval] boolean *isSelected
- );
-
- /** @brief Gets the row and column indexes and extents of this cell accessible
- and whether or not it is selected.
-
- This is a convenience function. It is not mandatory to implement it.
- @param [out] row
- 0 based row index.
- @param [out] column
- 0 based column index.
- @param [out] rowExtents
- Number of cells spanned by this cell in this row.
- @param [out] columnExtents
- Number of cells spanned by this cell in this column.
- @param [out] isSelected
- Indicates if the specified cell is selected.
- @retval S_OK
- */
- [propget] HRESULT rowColumnExtents
- (
- [out] long *row,
- [out] long *column,
- [out] long *rowExtents,
- [out] long *columnExtents,
- [out, retval] boolean *isSelected
- );
-
- /** @brief Returns a reference to the accessbile of the containing table.
-
- @param [out] table
- Returns a reference to the IUnknown of the containing table.
- @retval S_OK
- */
- [propget] HRESULT table
- (
- [out, retval] IUnknown **table
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleText.idl b/src/3rdparty/iaccessible2/idl/AccessibleText.idl
deleted file mode 100644
index 86fd93ad90..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleText.idl
+++ /dev/null
@@ -1,674 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleText.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-import "IA2CommonTypes.idl";
-
-/** A structure containing a substring and the start and end offsets in the enclosing string.
-
- IAccessibleText::newText and IAccessibleText::oldText return this struct.
-*/
-typedef struct IA2TextSegment {
- BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph.
- long start; ///< Index of the first character of the segment in the enclosing text.
- long end; ///< Index of the character following the last character of the segment in the enclosing text.
-} IA2TextSegment;
-
-/** This enum defines values which specify a text boundary type.
-
- IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this
- method it must return S_FALSE. Typically this feature would not be implemented
- by an application. However, if the application developer was not satisfied with
- how screen readers have handled the reading of sentences this boundary type
- could be implemented and screen readers could use the application's version of a
- sentence rather than the screen reader's.
-
- The rest of the boundary types must be supported.
-
- This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset,
- and IAccessibleText::textAfterOffset.
-*/
-
-enum IA2TextBoundaryType {
- IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than
- one character is returned, for example, when a document contains field
- data such as a field containing a date, time, or footnote reference.
- In this case the caret can move over several characters in one movement
- of the caret. Note that after the caret moves, the caret offset changes
- by the number of characters in the field, e.g. by 8 characters in the
- following date: 03/26/07. */
- IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application
- processes the Ctrl + left arrow and Ctrl + right arrow key sequences.
- Typically this is from the start of one word to the start of the next, but
- various applications are inconsistent in the handling of the end of a line. */
- IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence.
- IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph.
- IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This
- often means that an end-of-line character will appear at the end of the
- range. However in the case of some applications an end-of-line character
- indicates the end of a paragraph and the lines composing the paragraph,
- other than the last line, do not contain an end of line character. */
- IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned.
-};
-
-/** @brief This interface gives read-only access to text.
-
- The %IAccessibleText interface should be implemented by all components
- that present textual information on the display like buttons,
- text entry fields, or text portions of the document window. The interface
- provides access to the text's content, attributes, and spatial location.
- However, text can not be modified with this interface. That is the task
- of the IAccessibleEditableText interface.
-
- The text length, i.e. the number of characters in the text, is
- returned by IAccessibleText::nCharacters. All methods that operate
- on particular characters (e.g. IAccessibleText::textAtOffset) use character
- indices from 0 to length-1. All methods that operate on character positions
- (e.g. IAccessibleText::text) use indices from 0 to length.
-
- Please note that accessible text does not necessarily support selection.
- In this case it should behave as if there where no selection. An empty
- selection is used for example to express the current cursor position.
-
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
-
- E_FAIL is returned in the following cases
- @li endOffset < startOffset
- @li endoffset > length
-*/
-[object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)]
-interface IAccessibleText : IUnknown
-{
-
- /** @brief Adds a text selection
- @param [in] startOffset
- Starting offset ( 0 based).
- @param [in] endOffset
- Offset of first character after new selection (0 based).
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- */
- HRESULT addSelection
- (
- [in] long startOffset,
- [in] long endOffset
- );
-
- /** @brief Returns text attributes.
- @param [in] offset
- Text offset (0 based). Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @param [out] startOffset
- The starting offset of the character range over which all text attributes match
- those of offset. (0 based)
- @param [out] endOffset
- The offset of the first character past the character range over which all text
- attributes match those of offset. (0 based)
- @param [out] textAttributes
- A string of attributes describing the text. The attributes are described in the
- <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes">
- text attributes specification</a> on the %IAccessible2 web site.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT attributes
- (
- [in] long offset,
- [out] long *startOffset,
- [out] long *endOffset,
- [out, retval] BSTR *textAttributes
- );
-
- /** @brief Returns the position of the caret.
-
- Returns the 0-based offset of the caret within the text. If the text is
- implemented as a tree of text objects with embed characters in higher levels
- representing substrings of child text objects and the caret is in one of the
- child text objects, then the offset in the higher level text object would be
- at the embed character representing child text object that contains the caret.
-
- For example, if the string "one two three" is implemented as a two text objects,
- with a top level text object containing an embed character "one ? three" and a
- child text object containing "two" and if the caret is in the descendant object
- just before the 'o' in "two", then:
- <ul>
- <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li>
- <li>the caretOffset for "two" would be 2, matching the "o"</li>
- </ul>
- The caret position/offset is that of the character logically following it, e.g.
- to the right of it in a left to right language, or to the left of it in a right
- to left language.
- @param [out] offset
- The returned offset is relative to the text represented by this object.
- @retval S_OK
- @retval S_FALSE if the caret is not currently active on this object, i.e. the
- caret is located on some other object. The returned offset value will be -1.
- @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere
- in the text object or one of its descendants.
- */
- [propget] HRESULT caretOffset
- (
- [out, retval] long *offset
- );
-
-
- /** @brief Returns the bounding box of the specified position.
-
- The virtual character after the last character of the represented
- text, i.e. the one at position length is a special case. It represents the
- current input position and will therefore typically be queried by AT more
- often than other positions. Because it does not represent an existing character
- its bounding box is defined in relation to preceding characters. It should be
- roughly equivalent to the bounding box of some character when inserted at the
- end of the text. Its height typically being the maximal height of all the
- characters in the text or the height of the preceding character, its width being
- at least one pixel so that the bounding box is not degenerate.
-
- Note that the index 'length' is not always valid. Whether it is or not is
- implementation dependent. It typically is when text is editable or otherwise
- when on the screen the caret can be placed behind the text. You can be sure
- that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED
- event for this index.
- @param [in] offset
- Index of the character for which to return its bounding box. The valid range
- is 0..length. Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @param [in] coordType
- Specifies if the coordinates are relative to the screen or to the parent window.
- @param [out] x
- X coordinate of the top left corner of the bounding box of the referenced character.
- @param [out] y
- Y coordinate of the top left corner of the bounding box of the referenced character.
- @param [out] width
- Width of the bounding box of the referenced character.
- @param [out] height
- Height of the bounding box of the referenced character.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT characterExtents
- (
- [in] long offset,
- [in] enum IA2CoordinateType coordType,
- [out] long *x,
- [out] long *y,
- [out] long *width,
- [out, retval] long *height
- );
-
-
- /** @brief Returns the number of active non-contiguous selections
- @param [out] nSelections
- @retval S_OK
- */
- [propget] HRESULT nSelections
- (
- [out, retval] long *nSelections
- );
-
- /** @brief Returns the text position for the specified screen position.
-
- Given a point return the zero-based index of the character under that
- point. The same functionality could be achieved by using the bounding
- boxes for each character as returned by IAccessibleText::characterExtents.
- The method IAccessibleText::offsetAtPoint, however, can be implemented
- more efficiently.
-
- @param [in] x
- The position's x value for which to look up the index of the character that
- is rendered on to the display at that point.
- @param [in] y
- The position's y value for which to look up the index of the character that
- is rendered on to the display at that point.
- @param [in] coordType
- Screen coordinates or window coordinates.
- @param [out] offset
- Index of the character under the given point or -1 if the point
- is invalid or there is no character under the point.
- @retval S_OK
- @retval S_FALSE if nothing to return, [out] value is -1
-
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT offsetAtPoint
- (
- [in] long x,
- [in] long y,
- [in] enum IA2CoordinateType coordType,
- [out, retval] long *offset
- );
-
- /** @brief Returns the character offsets of Nth active text selection
-
- Returns the 0-based starting and ending offsets of the Nth selection. If the
- text is implemented as a tree of text objects with embed characters in higher
- levels representing substrings of child text objects, consider the following.
- If the starting selection offset is in one of the child text objects, then the
- starting offset in the higher level text object would be at the embed character
- representing the child text object that contains the starting selection offset.
- If the ending selection offset is in one of the child text objects, then the
- ending offset in the higher level text object would be just after the embed
- character representing the child text object that contains the ending selection
- offset.
-
- For example, if the string "one two three" is implemented as a two text objects,
- with a top level text object containing an embed character "one ? three" and a
- child text object containing "two" and if the selection is the string "two" then:
- <ul>
- <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li>
- <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li>
- </ul>
- Selection offsets are that of the character logically following it, e.g.
- to the right of it in a left to right language or to the left of it in a right to left language.
- @param [in] selectionIndex
- Index of selection (0 based).
- @param [out] startOffset
- 0 based offset of first selected character
- @param [out] endOffset
- 0 based offset of one past the last selected character.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT selection
- (
- [in] long selectionIndex,
- [out] long *startOffset,
- [out, retval] long *endOffset
- );
-
- /** @brief Returns the substring between the two given indices.
-
- The substring starts with the character at startOffset (inclusive) and up to
- the character at endOffset (exclusive), if startOffset is less or equal
- endOffset. If endOffset is lower than startOffset, the result is the same
- as a call with the two arguments being exchanged.
-
- The whole text can be requested by passing the indices zero and
- IAccessibleText::nCharacters. If both indices have the same value, an empty
- string is returned.
- @param [in] startOffset
- Index of the first character to include in the returned string. The valid range
- is 0..length.
- @param [in] endOffset
- Index of the last character to exclude in the returned string. The valid range
- is 0..length.
- @param [out] text
- Returns the substring starting with the character at startOffset (inclusive)
- and up to the character at endOffset (exclusive), if startOffset is less than
- or equal to endOffset.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note
- @li The returned string may be longer than endOffset-startOffset bytes if text
- contains multi-byte characters.
- @li Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- */
- [propget] HRESULT text
- (
- [in] long startOffset,
- [in] long endOffset,
- [out, retval] BSTR *text
- );
-
- /** @brief Returns a text portion before the given position.
-
- Returns the substring of the specified text type that is located before the
- given character and does not include it. The result of this method should be
- same as a result for IAccessibleText::textAtOffset with a suitably decreased
- index value.
-
- For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
- word that is closest to and located before offset is returned.
-
- If the index is valid, but no suitable word (or other boundary type) is found, a
- NULL pointer is returned.
-
- @param [in] offset
- Index of the character for which to return the text part before it. The index
- character will not be part of the returned string. The valid range is 0..length.
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @param [in] boundaryType
- The type of the text portion to return. See ::IA2TextBoundaryType for the
- complete list.
- @param [out] startOffset
- 0 based offset of first character.
- @param [out] endOffset
- 0 based offset of one past the last character.
- @param [out] text
- Returns the requested text portion. This portion may be empty or invalid when
- no appropriate text portion is found or text type is invalid.
- @retval S_OK
- @retval S_FALSE if the requested boundary type is not implemented, such as
- ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
- [out] values are 0s and NULL respectively
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT textBeforeOffset
- (
- [in] long offset,
- [in] enum IA2TextBoundaryType boundaryType,
- [out] long *startOffset,
- [out] long *endOffset,
- [out, retval] BSTR *text
- );
-
- /** @brief Returns a text portion after the given position.
-
- Returns the substring of the specified text type that is located after the
- given character and does not include it. The result of this method should be
- same as a result for IAccessibleText::textAtOffset with a suitably increased
- index value.
-
- For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
- word that is closest to and located after offset is returned.
-
- If the index is valid, but no suitable word (or other text type) is found, a
- NULL pointer is returned.
-
- @param [in] offset
- Index of the character for which to return the text part after it. The index
- character will not be part of the returned string. The valid range is 0..length.
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @param [in] boundaryType
- The type of the text portion to return. See ::IA2TextBoundaryType for the complete
- list.
- @param [out] startOffset
- 0 based offset of first character.
- @param [out] endOffset
- 0 based offset of one past the last character.
- @param [out] text
- Returns the requested text portion. This portion may be empty or invalid when
- no appropriate text portion is found or text type is invalid.
- @retval S_OK
- @retval S_FALSE if the requested boundary type is not implemented, such as
- ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
- [out] values are 0s and NULL respectively
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT textAfterOffset
- (
- [in] long offset,
- [in] enum IA2TextBoundaryType boundaryType,
- [out] long *startOffset,
- [out] long *endOffset,
- [out, retval] BSTR *text
- );
-
- /** @brief Returns a text portion that spans the given position.
-
- Returns the substring of the specified text type at the specified offset.
-
- If the index is valid, but no suitable word (or other text type) is found, a
- NULL pointer is returned.
-
- @param [in] offset
- Index of the character for which to return the text part before it. The index
- character will not be part of the returned string. The valid range is 0..length.
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @param [in] boundaryType
- The type of the text portion to return. See ::IA2TextBoundaryType for the complete
- list.
- @param [out] startOffset
- 0 based offset of first character.
- @param [out] endOffset
- 0 based offset of one past the last character.
- @param [out] text
- Returns the requested text portion. This portion may be empty or invalid when
- no appropriate text portion is found or text type is invalid.
- @retval S_OK
- @retval S_FALSE if the requested boundary type is not implemented, such as
- ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
- [out] values are 0s and NULL respectively
- @retval E_INVALIDARG if bad [in] passed
- */
- [propget] HRESULT textAtOffset
- (
- [in] long offset,
- [in] enum IA2TextBoundaryType boundaryType,
- [out] long *startOffset,
- [out] long *endOffset,
- [out, retval] BSTR *text
- );
-
- /** @brief Unselects a range of text.
- @param [in] selectionIndex
- Index of selection to remove (0 based).
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT removeSelection
- (
- [in] long selectionIndex
- );
-
- /** @brief Sets the position of the caret.
-
- The caret position/offset is that of the character logically following it,
- e.g. to the right of it in a left to right language.
-
- Setting the caret position may or may not alter the current selection. A
- change of the selection is notified to the accessibility event listeners with
- an ::IA2_EVENT_TEXT_SELECTION_CHANGED event.
-
- When the new caret position differs from the old one (which, of course, is the
- standard case) this is notified to the accessibility event listeners with an
- ::IA2_EVENT_TEXT_CARET_MOVED event.
- @param [in] offset
- The new index of the caret. This caret is actually placed to the left side of
- the character with that index. An index of 0 places the caret so that the next
- insertion goes before the first character. An index of IAccessibleText::nCharacters
- leads to insertion after the last character. Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- @retval S_OK
- @retval E_FAIL if the caret cannot be set
- @retval E_INVALIDARG if bad [in] passed
- */
- HRESULT setCaretOffset
- (
- [in] long offset
- );
-
- /** @brief Changes the bounds of an existing selection.
- @param [in] selectionIndex
- Index of selection to change (0 based)
- @param [in] startOffset
- New starting offset (0 based)
- @param [in] endOffset
- New ending offset (0 based) - the offset of the character just past the last character of the selection.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- */
- HRESULT setSelection
- (
- [in] long selectionIndex,
- [in] long startOffset,
- [in] long endOffset
- );
-
- /** @brief Returns total number of characters.
-
- Note that this may be different than the total number of bytes required to store the
- text, if the text contains multi-byte characters.
- @param [out] nCharacters
- @retval S_OK
- */
- [propget] HRESULT nCharacters
- (
- [out, retval] long *nCharacters
- );
-
- /** @brief Makes a specific part of string visible on screen.
- @param [in] startIndex
- 0 based character offset.
- @param [in] endIndex
- 0 based character offset - the offset of the character just past the last character of the string.
- @param [in] scrollType
- Defines where the object should be placed on the screen.
- @retval S_OK
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- */
- HRESULT scrollSubstringTo
- (
- [in] long startIndex,
- [in] long endIndex,
- [in] enum IA2ScrollType scrollType
- );
-
- /** @brief Moves the top left of a substring to a specified location.
-
- @param [in] startIndex
- 0 based character offset.
- @param [in] endIndex
- 0 based character offset - the offset of the character just past the last character of the string.
- @param [in] coordinateType
- Specifies whether the coordinates are relative to the screen or the parent object.
- @param [in] x
- Defines the x coordinate.
- @param [in] y
- Defines the y coordinate.
- @retval S_OK
- @retval S_FALSE if the object is already at the specified location.
- @retval E_INVALIDARG if bad [in] passed
- @note Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for information about special offsets that can be used in %IAccessibleText methods.
- */
- HRESULT scrollSubstringToPoint
- (
- [in] long startIndex,
- [in] long endIndex,
- [in] enum IA2CoordinateType coordinateType,
- [in] long x,
- [in] long y
- );
-
- /** @brief Returns any inserted text.
-
- Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED
- event handlers.
-
- This data is only guaranteed to be valid while the thread notifying the event
- continues. Once the handler has returned, the validity of the data depends on
- how the server manages the life cycle of its objects. Also, note that the server
- may have different life cycle management strategies for controls depending on
- whether or not a control manages its children. Lists, trees, and tables can have
- a large number of children and thus it's possible that the child objects for those
- controls would only be created as needed. Servers should document their life cycle
- strategy as this will be of interest to assistive technology or script engines
- accessing data out of process or from other threads. Servers only need to save the
- last inserted block of text and a scope of the entire application is adequate.
-
- @param [out] newText
- The text that was just inserted.
- @retval S_OK
- @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
- struct are set as follows: text = NULL, start = 0, end = 0.
-
- */
- [propget] HRESULT newText
- (
- [out, retval] IA2TextSegment *newText
- );
-
- /** @brief Returns any removed text.
-
- Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers.
-
- This data is only guaranteed to be valid while the thread notifying the event
- continues. Once the handler has returned, the validity of the data depends on
- how the server manages the life cycle of its objects. Also, note that the server
- may have different life cycle management strategies for controls depending on
- whether or not a control manages its children. Lists, trees, and tables can have
- a large number of children and thus it's possible that the child objects for those
- controls would only be created as needed. Servers should document their life cycle
- strategy as this will be of interest to assistive technology or script engines
- accessing data out of process or from other threads. Servers only need to save the
- last removed block of text and a scope of the entire application is adequate.
-
- @param [out] oldText
- The text that was just removed.
- @retval S_OK
- @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
- struct are set as follows: text = NULL, start = 0, end = 0.
- */
- [propget] HRESULT oldText
- (
- [out, retval] IA2TextSegment *oldText
- );
-
-}
diff --git a/src/3rdparty/iaccessible2/idl/AccessibleValue.idl b/src/3rdparty/iaccessible2/idl/AccessibleValue.idl
deleted file mode 100644
index cd013d76f8..0000000000
--- a/src/3rdparty/iaccessible2/idl/AccessibleValue.idl
+++ /dev/null
@@ -1,136 +0,0 @@
-/*************************************************************************
- *
- * File Name (AccessibleValue.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-import "objidl.idl";
-import "oaidl.idl";
-import "oleacc.idl";
-
-/** @brief This interface gives access to a single numerical value.
-
- The %IAccessibleValue interface represents a single numerical value and should
- be implemented by any class that supports numerical value like progress bars
- and spin boxes. This interface lets you access the value and its upper and
- lower bounds.
-*/
-[object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)]
-interface IAccessibleValue : IUnknown
-{
-
- /** @brief Returns the value of this object as a number.
-
- The exact return type is implementation dependent. Typical types are long and
- double.
- @param [out] currentValue
- Returns the current value represented by this object. See the section about
- @ref _variants "VARIANTs" for additional information.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
- */
- [propget] HRESULT currentValue
- (
- [out, retval] VARIANT *currentValue
- );
-
- /** @brief Sets the value of this object to the given number.
-
- The argument is clipped to the valid interval whose upper and lower
- bounds are returned by the methods IAccessibleValue::maximumValue and
- IAccessibleValue::minimumValue, i.e. if it is lower than the minimum
- value the new value will be the minimum and if it is greater than the
- maximum then the new value will be the maximum.
-
- @param [in] value
- The new value represented by this object. The set of admissible types for
- this argument is implementation dependent.
- @retval S_OK
- */
- HRESULT setCurrentValue
- (
- [in] VARIANT value
- );
-
- /** @brief Returns the maximal value that can be represented by this object.
-
- The type of the returned value is implementation dependent. It does not have
- to be the same type as that returned by method IAccessibleValue::currentValue.
-
- @param [out] maximumValue
- Returns the maximal value in an implementation dependent type. If this object
- has no upper bound then an empty object is returned. See the section about
- @ref _variants "VARIANTs" for additional information.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
- */
- [propget] HRESULT maximumValue
- (
- [out, retval] VARIANT *maximumValue
- );
-
- /** @brief Returns the minimal value that can be represented by this object.
-
- The type of the returned value is implementation dependent. It does not have
- to be the same type as that returned by method IAccessibleValue::currentValue.
-
- @param [out] minimumValue
- Returns the minimal value in an implementation dependent type. If this object
- has no lower bound then an empty object is returned. See the section about
- @ref _variants "VARIANTs" for additional information.
- @retval S_OK
- @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
- */
- [propget] HRESULT minimumValue
- (
- [out, retval] VARIANT *minimumValue
- );
-
-};
diff --git a/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl b/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl
deleted file mode 100644
index d3da110873..0000000000
--- a/src/3rdparty/iaccessible2/idl/IA2CommonTypes.idl
+++ /dev/null
@@ -1,191 +0,0 @@
-/*************************************************************************
- *
- * File Name (IA2CommonTypes.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
- /** These constants control the scrolling of an object or substring into a window.
-
- This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo.
-*/
-enum IA2ScrollType {
-
- /** Scroll the top left corner of the object or substring such that the top left
- corner (and as much as possible of the rest of the object or substring) is within
- the top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_TOP_LEFT,
-
- /** Scroll the bottom right corner of the object or substring such that the bottom right
- corner (and as much as possible of the rest of the object or substring) is within
- the top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_BOTTOM_RIGHT,
-
- /** Scroll the top edge of the object or substring such that the top edge
- (and as much as possible of the rest of the object or substring) is within the
- top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_TOP_EDGE,
-
- /** Scroll the bottom edge of the object or substring such that the bottom edge
- (and as much as possible of the rest of the object or substring) is within the
- top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_BOTTOM_EDGE,
-
- /** Scroll the left edge of the object or substring such that the left edge
- (and as much as possible of the rest of the object or substring) is within the
- top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_LEFT_EDGE,
-
- /** Scroll the right edge of the object or substring such that the right edge
- (and as much as possible of the rest of the object or substring) is within the
- top level window. In cases where the entire object or substring fits within
- the top level window, the placement of the object or substring is dependent on
- the application. For example, the object or substring may be scrolled to the
- closest edge, the furthest edge, or midway between those two edges. In cases
- where there is a hierarchy of nested scrollable controls, more than one control
- may have to be scrolled.
- */
- IA2_SCROLL_TYPE_RIGHT_EDGE,
-
- /** Scroll the object or substring such that as much as possible of the
- object or substring is within the top level window. The placement of
- the object is dependent on the application. For example, the object or
- substring may be scrolled to to closest edge, the furthest edge, or midway
- between those two edges.
- */
- IA2_SCROLL_TYPE_ANYWHERE
-};
-
-/** These constants define which coordinate system a point is located in.
-
- This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition,
- IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and
- IAccessibleText::scrollSubstringToPoint.
-*/
-enum IA2CoordinateType {
-
- /// The coordinates are relative to the screen.
- IA2_COORDTYPE_SCREEN_RELATIVE,
-
- /** The coordinates are relative to the upper left corner of the bounding box
- of the immediate parent.
- */
- IA2_COORDTYPE_PARENT_RELATIVE
-
-};
-
-/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods
-
- Refer to @ref _specialOffsets
- "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
- for more information.
-*/
-enum IA2TextSpecialOffsets {
- IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates
- the need to call IAccessibleText::nCharacters. */
- IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location
- of the caret should be used. */
-};
-
-/** These constants specify the kind of change made to a table.
-
- This enum is used in the IA2TableModelChange struct which in turn is used by
- IAccessibleTable::modelChange and IAccessibleTable2::modelChange.
-*/
-enum IA2TableModelChangeType {
- IA2_TABLE_MODEL_CHANGE_INSERT, // = 0;
- IA2_TABLE_MODEL_CHANGE_DELETE,
- IA2_TABLE_MODEL_CHANGE_UPDATE
-};
-
-/** A structure defining the type of and extents of changes made to a table
-
- IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct.
- In the case of an insertion or change the row and column offsets define the boundaries
- of the inserted or changed subtable after the operation. In the case of a deletion
- the row and column offsets define the boundaries of the subtable being removed before
- the removal.
-*/
-typedef struct IA2TableModelChange {
- enum IA2TableModelChangeType type; // insert, delete, update
- long firstRow; ///< 0 based, inclusive
- long lastRow; ///< 0 based, inclusive
- long firstColumn; ///< 0 based, inclusive
- long lastColumn; ///< 0 based, inclusive
-} IA2TableModelChange;
diff --git a/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl b/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl
deleted file mode 100644
index 7753825751..0000000000
--- a/src/3rdparty/iaccessible2/idl/IA2TypeLibrary.idl
+++ /dev/null
@@ -1,94 +0,0 @@
-/*************************************************************************
- *
- * File Name (IA2TypeLibrary.idl)
- *
- * IAccessible2 IDL Specification
- *
- * Copyright (c) 2007, 2010 Linux Foundation
- * Copyright (c) 2006 IBM Corporation
- * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
- * All rights reserved.
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of the Linux Foundation nor the names of its
- * contributors may be used to endorse or promote products
- * derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * This BSD License conforms to the Open Source Initiative "Simplified
- * BSD License" as published at:
- * http://www.opensource.org/licenses/bsd-license.php
- *
- * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
- * mark may be used in accordance with the Linux Foundation Trademark
- * Policy to indicate compliance with the IAccessible2 specification.
- *
- ************************************************************************/
-
-// This is not a standalone file. It is to be appended to the end of the
-// merged IDL file.
-
-cpp_quote("")
-cpp_quote("// Type Library Definitions")
-cpp_quote("")
-
-[
- uuid(c974e070-3787-490a-87b0-e333b06ca1e2),
- helpstring("IAccessible2 Type Library"),
- version(1.2),
- hidden
-]
-
-library IAccessible2Lib
-{
- importlib ("stdole2.tlb");
- importlib ("oleacc.dll");
- interface IAccessible2;
- interface IAccessibleAction;
- interface IAccessibleApplication;
- interface IAccessibleComponent;
- interface IAccessibleEditableText;
- interface IAccessibleHyperlink;
- interface IAccessibleHypertext;
- interface IAccessibleImage;
- interface IAccessibleRelation;
- interface IAccessibleTable;
- interface IAccessibleTable2;
- interface IAccessibleTableCell;
- interface IAccessibleText;
- interface IAccessibleValue;
- enum IA2CoordinateType;
- enum IA2EventID;
- enum IA2Role;
- enum IA2ScrollType;
- enum IA2States;
- enum IA2TableModelChangeType;
- enum IA2TextBoundaryType;
- enum IA2TextSpecialOffsets;
-}
diff --git a/src/3rdparty/iaccessible2/idl/Makefile b/src/3rdparty/iaccessible2/idl/Makefile
index eb56d9fb60..e3a1d5e4a1 100644
--- a/src/3rdparty/iaccessible2/idl/Makefile
+++ b/src/3rdparty/iaccessible2/idl/Makefile
@@ -1,58 +1,17 @@
MIDL = midl
-MIDL_OPTS = /out ..\generated
+MIDL_OPTS = /dlldata NUL /proxy NUL /notlb /out ..\generated
first: all
all: x86 amd64
-MIDL_OPTS = /out ..\generated\x86 /env win32
-
x86:
- -del ..\generated\x86\dlldata.c
-md ..\generated\x86
- $(MIDL) $(MIDL_OPTS) Accessible2.idl
- $(MIDL) $(MIDL_OPTS) AccessibleAction.idl
- $(MIDL) $(MIDL_OPTS) AccessibleApplication.idl
- $(MIDL) $(MIDL_OPTS) AccessibleComponent.idl
- $(MIDL) $(MIDL_OPTS) AccessibleEditableText.idl
- $(MIDL) $(MIDL_OPTS) AccessibleEventID.idl
- $(MIDL) $(MIDL_OPTS) AccessibleHyperlink.idl
- $(MIDL) $(MIDL_OPTS) AccessibleHypertext.idl
- $(MIDL) $(MIDL_OPTS) AccessibleImage.idl
- $(MIDL) $(MIDL_OPTS) AccessibleRelation.idl
- $(MIDL) $(MIDL_OPTS) AccessibleRole.idl
- $(MIDL) $(MIDL_OPTS) AccessibleStates.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTable.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTable2.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTableCell.idl
- $(MIDL) $(MIDL_OPTS) AccessibleText.idl
- $(MIDL) $(MIDL_OPTS) AccessibleValue.idl
- $(MIDL) $(MIDL_OPTS) IA2CommonTypes.idl
- $(MIDL) $(MIDL_OPTS) IA2TypeLibrary.idl
+ $(MIDL) $(MIDL_OPTS)\x86 /env win32 ia2_api_all.idl
-MIDL_OPTS = /out ..\generated\amd64 /env amd64
amd64:
- -del ..\generated\amd64\dlldata.c
-md ..\generated\amd64
- $(MIDL) $(MIDL_OPTS) Accessible2.idl
- $(MIDL) $(MIDL_OPTS) AccessibleAction.idl
- $(MIDL) $(MIDL_OPTS) AccessibleApplication.idl
- $(MIDL) $(MIDL_OPTS) AccessibleComponent.idl
- $(MIDL) $(MIDL_OPTS) AccessibleEditableText.idl
- $(MIDL) $(MIDL_OPTS) AccessibleEventID.idl
- $(MIDL) $(MIDL_OPTS) AccessibleHyperlink.idl
- $(MIDL) $(MIDL_OPTS) AccessibleHypertext.idl
- $(MIDL) $(MIDL_OPTS) AccessibleImage.idl
- $(MIDL) $(MIDL_OPTS) AccessibleRelation.idl
- $(MIDL) $(MIDL_OPTS) AccessibleRole.idl
- $(MIDL) $(MIDL_OPTS) AccessibleStates.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTable.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTable2.idl
- $(MIDL) $(MIDL_OPTS) AccessibleTableCell.idl
- $(MIDL) $(MIDL_OPTS) AccessibleText.idl
- $(MIDL) $(MIDL_OPTS) AccessibleValue.idl
- $(MIDL) $(MIDL_OPTS) IA2CommonTypes.idl
- $(MIDL) $(MIDL_OPTS) IA2TypeLibrary.idl
+ $(MIDL) $(MIDL_OPTS)\amd64 /env amd64 ia2_api_all.idl
diff --git a/src/3rdparty/iaccessible2/idl/README b/src/3rdparty/iaccessible2/idl/README
index 0a299f16b4..7751447fd4 100644
--- a/src/3rdparty/iaccessible2/idl/README
+++ b/src/3rdparty/iaccessible2/idl/README
@@ -4,3 +4,6 @@ in this directory to generate the files from the idl files.
The generated files will be put in
..\generated\x86 and ..\generated\amd64
+In order for it to work on msvc-2010 you need to use MIDL shipped with
+that version
+(Microsoft (R) 32b/64b MIDL Compiler Version 7.00.0555).
diff --git a/src/3rdparty/iaccessible2/idl/ia2_api_all.idl b/src/3rdparty/iaccessible2/idl/ia2_api_all.idl
new file mode 100644
index 0000000000..729ed2627d
--- /dev/null
+++ b/src/3rdparty/iaccessible2/idl/ia2_api_all.idl
@@ -0,0 +1,5473 @@
+/*************************************************************************
+ *
+ * File Name (api_all_headers.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2013 Linux Foundation
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+import "objidl.idl";
+import "oaidl.idl";
+import "oleacc.idl";
+
+/*************************************************************************
+ *
+ * File Name (IA2CommonTypes.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+ /** These constants control the scrolling of an object or substring into a window.
+
+ This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo.
+*/
+enum IA2ScrollType {
+
+ /** Scroll the top left corner of the object or substring such that the top left
+ corner (and as much as possible of the rest of the object or substring) is within
+ the top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_TOP_LEFT,
+
+ /** Scroll the bottom right corner of the object or substring such that the bottom right
+ corner (and as much as possible of the rest of the object or substring) is within
+ the top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_BOTTOM_RIGHT,
+
+ /** Scroll the top edge of the object or substring such that the top edge
+ (and as much as possible of the rest of the object or substring) is within the
+ top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_TOP_EDGE,
+
+ /** Scroll the bottom edge of the object or substring such that the bottom edge
+ (and as much as possible of the rest of the object or substring) is within the
+ top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_BOTTOM_EDGE,
+
+ /** Scroll the left edge of the object or substring such that the left edge
+ (and as much as possible of the rest of the object or substring) is within the
+ top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_LEFT_EDGE,
+
+ /** Scroll the right edge of the object or substring such that the right edge
+ (and as much as possible of the rest of the object or substring) is within the
+ top level window. In cases where the entire object or substring fits within
+ the top level window, the placement of the object or substring is dependent on
+ the application. For example, the object or substring may be scrolled to the
+ closest edge, the furthest edge, or midway between those two edges. In cases
+ where there is a hierarchy of nested scrollable controls, more than one control
+ may have to be scrolled.
+ */
+ IA2_SCROLL_TYPE_RIGHT_EDGE,
+
+ /** Scroll the object or substring such that as much as possible of the
+ object or substring is within the top level window. The placement of
+ the object is dependent on the application. For example, the object or
+ substring may be scrolled to to closest edge, the furthest edge, or midway
+ between those two edges.
+ */
+ IA2_SCROLL_TYPE_ANYWHERE
+};
+
+/** These constants define which coordinate system a point is located in.
+
+ This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition,
+ IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and
+ IAccessibleText::scrollSubstringToPoint.
+*/
+enum IA2CoordinateType {
+
+ /// The coordinates are relative to the screen.
+ IA2_COORDTYPE_SCREEN_RELATIVE,
+
+ /** The coordinates are relative to the upper left corner of the bounding box
+ of the immediate parent.
+ */
+ IA2_COORDTYPE_PARENT_RELATIVE
+
+};
+
+/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods
+
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for more information.
+*/
+enum IA2TextSpecialOffsets {
+ IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates
+ the need to call IAccessibleText::nCharacters. */
+ IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location
+ of the caret should be used. */
+};
+
+/** These constants specify the kind of change made to a table.
+
+ This enum is used in the IA2TableModelChange struct which in turn is used by
+ IAccessibleTable::modelChange and IAccessibleTable2::modelChange.
+*/
+enum IA2TableModelChangeType {
+ IA2_TABLE_MODEL_CHANGE_INSERT, // = 0;
+ IA2_TABLE_MODEL_CHANGE_DELETE,
+ IA2_TABLE_MODEL_CHANGE_UPDATE
+};
+
+/** A structure defining the type of and extents of changes made to a table
+
+ IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct.
+ In the case of an insertion or change the row and column offsets define the boundaries
+ of the inserted or changed subtable after the operation. In the case of a deletion
+ the row and column offsets define the boundaries of the subtable being removed before
+ the removal.
+*/
+typedef struct IA2TableModelChange {
+ enum IA2TableModelChangeType type; // insert, delete, update
+ long firstRow; ///< 0 based, inclusive
+ long lastRow; ///< 0 based, inclusive
+ long firstColumn; ///< 0 based, inclusive
+ long lastColumn; ///< 0 based, inclusive
+} IA2TableModelChange;
+/*************************************************************************
+ *
+ * File Name (AccessibleRelation.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+/** @defgroup grpRelations Relations
+ Use the following constants to compare against the BSTRs returned by
+ IAccessibleRelation::relationType.
+*/
+///@{
+
+/** The target object is the containing application object. */
+const WCHAR *const IA2_RELATION_CONTAINING_APPLICATION = L"containingApplication";
+
+/** The target object is the containing document object. The target object implements
+ the IAccessibleDocument interface.
+*/
+const WCHAR *const IA2_RELATION_CONTAINING_DOCUMENT = L"containingDocument";
+
+/** The target object is the containing tab pane object. */
+const WCHAR *const IA2_RELATION_CONTAINING_TAB_PANE = L"containingTabPane";
+
+/** The target object is the containing window object. */
+const WCHAR *const IA2_RELATION_CONTAINING_WINDOW = L"containingWindow";
+
+/** Some attribute of this object is affected by a target object. */
+const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy";
+
+/** This object is interactive and controls some attribute of a target object. */
+const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor";
+
+/** This object is described by the target object. */
+const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy";
+
+/** This object is describes the target object. */
+const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor";
+
+/** This object is embedded by a target object. */
+const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy";
+
+/** This object embeds a target object. This relation can be used on the
+ OBJID_CLIENT accessible for a top level window to show where the content
+ areas are.
+*/
+const WCHAR *const IA2_RELATION_EMBEDS = L"embeds";
+
+/** Content flows to this object from a target object.
+ This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text
+ objects together in order to allow assistive technology to follow the
+ intended reading order.
+*/
+const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom";
+
+/** Content flows from this object to a target object. */
+const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo";
+
+/** This object is label for a target object. */
+const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor";
+
+/** This object is labelled by a target object. Note that the double L spelling
+ which follows is preferred. Please use it instead. This single L version may
+ be removed in a later version.
+*/
+const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy";
+
+/** This object is labelled by a target object. */
+const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy";
+
+/** This object is a member of a group of one or more objects. When
+ there is more than one object in the group each member may have one and the
+ same target, e.g. a grouping object. It is also possible that each member has
+ multiple additional targets, e.g. one for every other member in the group.
+*/
+const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf";
+
+/** The target object is the next object in the tab order. */
+const WCHAR *const IA2_RELATION_NEXT_TABBABLE = L"nextTabbable";
+
+/** This object is a logical child of a target object. This relation is the reciprocal
+ of the IA2_RELATION_NODE_PARENT_OF relation. In some cases an application's accessible
+ tree is such that objects can be in a logical parent-child relationship which is
+ different from the hierarchy of the accessible tree. */
+const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf";
+
+/** This object is a logical parent of a target object. This relation is the reciprocal
+ of the IA2_RELATION_NODE_CHILD_OF relation. In some cases an application's accessible
+ tree is such that objects can be in a logical parent-child relationship which is
+ different from the hierarchy of the accessible tree. */
+const WCHAR *const IA2_RELATION_NODE_PARENT_OF = L"nodeParentOf";
+
+/** This object is a parent window of the target object. */
+const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf";
+
+/** This object is a transient component related to the target object.
+ When this object is activated the target object doesn't lose focus.
+*/
+const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor";
+
+/** The target object is the previous object in the tab order. */
+const WCHAR *const IA2_RELATION_PREVIOUS_TABBABLE = L"previousTabbable";
+
+/** This object is a sub window of a target object. */
+const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf";
+
+///@}
+
+/** This interface gives access to an object's set of relations.
+*/
+[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)]
+interface IAccessibleRelation : IUnknown
+{
+ /** @brief Returns the type of the relation.
+ @param [out] relationType
+ The strings returned are defined @ref grpRelations "in this section of the documentation".
+ @retval S_OK
+ */
+ [propget] HRESULT relationType
+ (
+ [out, retval] BSTR *relationType
+ );
+
+ /** @brief Returns a localized version of the relation type.
+ @param [out] localizedRelationType
+ @retval S_OK
+ */
+ [propget] HRESULT localizedRelationType
+ (
+ [out, retval] BSTR *localizedRelationType
+ );
+
+ /** @brief Returns the number of targets for this relation.
+ @param [out] nTargets
+ @retval S_OK
+ */
+ [propget] HRESULT nTargets
+ (
+ [out, retval] long *nTargets
+ );
+
+ /** @brief Returns one accessible relation target.
+ @param [in] targetIndex
+ 0 based index
+ @param [out] target
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Use QueryInterface to get IAccessible2.
+ */
+ [propget] HRESULT target
+ (
+ [in] long targetIndex,
+ [out, retval] IUnknown **target
+ );
+
+ /** @brief Returns multiple accessible relation targets
+ @param [in] maxTargets
+ maximum size of the array allocated by the client
+ @param [out] targets
+ The array of target objects. Note that this array is to be allocated by the
+ client and freed when no longer needed. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details. You will need to use
+ QueryInterface on the IUnknown to get the IAccessible2.
+ @param [out] nTargets
+ actual number of targets in the returned array (not more than maxTargets)
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, e.g. a negative value
+ */
+ [propget] HRESULT targets
+ (
+ [in] long maxTargets,
+ [out, size_is(maxTargets), length_is(*nTargets)]
+ IUnknown **targets,
+ [out, retval] long *nTargets
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleAction.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+/** This enum defines values which are predefined actions for use when implementing
+ support for media.
+
+ This enum is used when specifying an action for IAccessibleAction::doAction.
+*/
+
+enum IA2Actions {
+ IA2_ACTION_OPEN = -1, /**< Used to inform the server that the client will
+ signal via IA2_ACTION_COMPLETE when it has consumed
+ the content provided by the object. This action
+ allows the object's server to wait for all clients
+ to signal their readiness for additional content.
+ Any form of content generation that requires
+ synchronization with an AT would require use of this
+ action. One example is the generation of text describing
+ visual content not obvious from a video's sound track.
+ In this scenario the Text to Speech or Braille output
+ may take more time than the related length of silence
+ in the video's sound track. */
+ IA2_ACTION_COMPLETE = -2, /**< Used by the client to inform the server that it has
+ consumed the most recent content provided by this object. */
+ IA2_ACTION_CLOSE = -3 /**< Used to inform the server that the client no longer
+ requires synchronization. */
+};
+
+/** @brief This interface gives access to actions that can be executed
+ for accessible objects.
+
+ Every accessible object that can be manipulated via the native GUI beyond the
+ methods available either in the MSAA IAccessible interface or in the set of
+ IAccessible2 interfaces (other than this IAccessibleAction interface) should
+ support the IAccessibleAction interface in order to provide Assistive Technology
+ access to all the actions that can be performed by the object. Each action can
+ be performed or queried for a name, description or associated key bindings.
+ Actions are needed more for ATs that assist the mobility impaired, such as
+ on-screen keyboards and voice command software. By providing actions directly,
+ the AT can present them to the user without the user having to perform the extra
+ steps to navigate a context menu.
+
+ The first action should be equivalent to the MSAA default action. If there is
+ only one action, %IAccessibleAction should also be implemented.
+*/
+[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)]
+interface IAccessibleAction : IUnknown
+{
+
+ /** @brief Returns the number of accessible actions available in this object.
+
+ If there are more than one, the first one is considered the
+ "default" action of the object.
+ @param [out] nActions
+ The returned value of the number of actions is zero if there are
+ no actions.
+ @retval S_OK
+ @note This method is missing a [propget] prefix in the IDL. The result is the
+ method is named nActions in generated C++ code instead of get_nActions.
+ */
+ HRESULT nActions
+ (
+ [out,retval] long* nActions
+ );
+
+ /** @brief Performs the specified Action on the object.
+ @param [in] actionIndex
+ 0 based index specifying the action to perform. If it lies outside
+ the valid range no action is performed.
+ @retval S_OK
+ @retval S_FALSE if action could not be performed
+ @retval E_INVALIDARG if bad [in] passed
+ @note If implementing support for media, refer to the predefined constants in the ::IA2Actions enum.
+ */
+ HRESULT doAction
+ (
+ [in] long actionIndex
+ );
+
+ /** @brief Returns a description of the specified action of the object.
+ @param [in] actionIndex
+ 0 based index specifying which action's description to return.
+ If it lies outside the valid range an empty string is returned.
+ @param [out] description
+ The returned value is a localized string of the specified action.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT description
+ (
+ [in] long actionIndex,
+ [out, retval] BSTR *description
+ );
+
+ /** @brief Returns an array of BSTRs describing one or more key bindings, if
+ there are any, associated with the specified action.
+
+ The returned strings are the localized human readable key sequences to be
+ used to activate each action, e.g. "Ctrl+Shift+D". Since these key
+ sequences are to be used when the object has focus, they are like
+ mnemonics (access keys), and not like shortcut (accelerator) keys.
+
+ There is no need to implement this method for single action controls since
+ that would be redundant with the standard MSAA programming practice of
+ getting the mnemonic from get_accKeyboardShortcut.
+
+ An AT such as an On Screen Keyboard might not expose these bindings but
+ provide alternative means of activation.
+
+ Note: the client allocates and passes in an array of pointers. The server
+ allocates the BSTRs and passes back one or more pointers to these BSTRs into
+ the array of pointers allocated by the client. The client is responsible
+ for deallocating the BSTRs.
+
+ @param [in] actionIndex
+ 0 based index specifying which action's key bindings should be returned.
+ @param [in] nMaxBindings
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] keyBindings
+ An array of BSTRs, allocated by the server, one for each key binding.
+ The client must free it with CoTaskMemFree.
+ @param [out] nBindings
+ The number of key bindings returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT keyBinding
+ (
+ [in] long actionIndex,
+ [in] long nMaxBindings,
+ [out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings,
+ [out, retval] long *nBindings
+ );
+
+ /** @brief Returns the non-localized name of specified action.
+ @param [in] actionIndex
+ 0 based index specifying which action's non-localized name should be returned.
+ @param [out] name
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT name
+ (
+ [in] long actionIndex,
+ [out, retval] BSTR *name
+ );
+
+ /** @brief Returns the localized name of specified action.
+ @param [in] actionIndex
+ 0 based index specifying which action's localized name should be returned.
+ @param [out] localizedName
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT localizedName
+ (
+ [in] long actionIndex,
+ [out, retval] BSTR *localizedName
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleRole.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+/** Collection of roles
+
+ This enumerator defines an extended set of accessible roles of objects implementing
+ the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained
+ through the MSAA get_accRole method. Examples are 'footnote', 'heading', and
+ 'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role.
+*/
+enum IA2Role {
+
+ /** Unknown role. The object contains some Accessible information, but its
+ role is not known.
+ */
+ IA2_ROLE_UNKNOWN = 0,
+
+ /** An object that can be drawn into and to manage events from the objects
+ drawn into it. Also refer to ::IA2_ROLE_FRAME,
+ ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE.
+ */
+ IA2_ROLE_CANVAS = 0x401,
+
+ /// A caption describing another object.
+ IA2_ROLE_CAPTION,
+
+ /// Used for check buttons that are menu items.
+ IA2_ROLE_CHECK_MENU_ITEM,
+
+ /// A specialized dialog that lets the user choose a color.
+ IA2_ROLE_COLOR_CHOOSER,
+
+ /// A date editor.
+ IA2_ROLE_DATE_EDITOR,
+
+ /** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE.
+ Also refer to ::IA2_ROLE_INTERNAL_FRAME.
+ */
+ IA2_ROLE_DESKTOP_ICON,
+
+ /** A desktop pane. A pane that supports internal frames and iconified
+ versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME.
+ */
+ IA2_ROLE_DESKTOP_PANE,
+
+ /** A directory pane. A pane that allows the user to navigate through
+ and select the contents of a directory. May be used by a file chooser.
+ Also refer to ::IA2_ROLE_FILE_CHOOSER.
+ */
+ IA2_ROLE_DIRECTORY_PANE,
+
+ /** An editable text object in a toolbar. <b>Deprecated.</b>
+ The edit bar role was meant for a text area in a tool bar. However, to detect
+ a text area in a tool bar the AT can query the parent.
+ */
+ IA2_ROLE_EDITBAR,
+
+ /// Embedded (OLE) object.
+ IA2_ROLE_EMBEDDED_OBJECT,
+
+ /// Text that is used as an endnote (footnote at the end of a chapter or section).
+ IA2_ROLE_ENDNOTE,
+
+ /** A file chooser. A specialized dialog that displays the files in the
+ directory and lets the user select a file, browse a different directory,
+ or specify a filename. May use the directory pane to show the contents of
+ a directory.
+ Also refer to ::IA2_ROLE_DIRECTORY_PANE.
+ */
+ IA2_ROLE_FILE_CHOOSER,
+
+ /** A font chooser. A font chooser is a component that lets the user pick
+ various attributes for fonts.
+ */
+ IA2_ROLE_FONT_CHOOSER,
+
+ /** Footer of a document page.
+ Also refer to ::IA2_ROLE_HEADER.
+ */
+ IA2_ROLE_FOOTER,
+
+ /// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE.
+ IA2_ROLE_FOOTNOTE,
+
+ /** A container of form controls. An example of the use of this role is to
+ represent an HTML FORM tag.
+ */
+ IA2_ROLE_FORM,
+
+ /** Frame role. A top level window with a title bar, border, menu bar, etc.
+ It is often used as the primary window for an application. Also refer to
+ ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window.
+ */
+ IA2_ROLE_FRAME,
+
+ /** A glass pane. A pane that is guaranteed to be painted on top of all panes
+ beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and
+ ::IA2_ROLE_ROOT_PANE.
+ */
+ IA2_ROLE_GLASS_PANE,
+
+ /** Header of a document page.
+ Also refer to ::IA2_ROLE_FOOTER.
+ */
+ IA2_ROLE_HEADER,
+
+ /// Heading. Use the IAccessible2::attributes level attribute to determine the heading level.
+ IA2_ROLE_HEADING,
+
+ /// A small fixed size picture, typically used to decorate components.
+ IA2_ROLE_ICON,
+
+ /** An image map object. Usually a graphic with multiple hotspots, where
+ each hotspot can be activated resulting in the loading of another document
+ or section of a document.
+ */
+ IA2_ROLE_IMAGE_MAP,
+
+ /** An object which is used to allow input of characters not found on a keyboard,
+ such as the input of Chinese characters on a Western keyboard.
+ */
+ IA2_ROLE_INPUT_METHOD_WINDOW,
+
+ /** An internal frame. A frame-like object that is clipped by a desktop pane.
+ The desktop pane, internal frame, and desktop icon objects are often used to
+ create multiple document interfaces within an application.
+ Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME.
+ */
+ IA2_ROLE_INTERNAL_FRAME,
+
+ /// An object used to present an icon or short string in an interface.
+ IA2_ROLE_LABEL,
+
+ /** A layered pane. A specialized pane that allows its children to be drawn
+ in layers, providing a form of stacking order. This is usually the pane that
+ holds the menu bar as well as the pane that contains most of the visual
+ components in a window.
+ Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE.
+ */
+ IA2_ROLE_LAYERED_PANE,
+
+ /** A section whose content is parenthetic or ancillary to the main content
+ of the resource.
+ */
+ IA2_ROLE_NOTE,
+
+ /** A specialized pane whose primary use is inside a dialog.
+ Also refer to MSAA's dialog role.
+ */
+ IA2_ROLE_OPTION_PANE,
+
+ /** An object representing a page of document content. It is used in documents
+ which are accessed by the user on a page by page basis.
+ */
+ IA2_ROLE_PAGE,
+
+ /// A paragraph of text.
+ IA2_ROLE_PARAGRAPH,
+
+ /** A radio button that is a menu item.
+ Also refer to MSAA's button and menu item roles.
+ */
+ IA2_ROLE_RADIO_MENU_ITEM,
+
+ /** An object which is redundant with another object in the accessible hierarchy.
+ ATs typically ignore objects with this role.
+ */
+ IA2_ROLE_REDUNDANT_OBJECT,
+
+ /** A root pane. A specialized pane that has a glass pane and a layered pane
+ as its children.
+ Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE
+ */
+ IA2_ROLE_ROOT_PANE,
+
+ /** A ruler such as those used in word processors.
+ */
+ IA2_ROLE_RULER,
+
+ /** A scroll pane. An object that allows a user to incrementally view a large
+ amount of information. Its children can include scroll bars and a viewport.
+ Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role.
+ */
+ IA2_ROLE_SCROLL_PANE,
+
+ /** A container of document content. An example of the use of this role is to
+ represent an HTML DIV tag. A section may be used as a region. A region is a
+ group of elements that together form a perceivable unit. A region does not
+ necessarily follow the logical structure of the content, but follows the
+ perceivable structure of the page. A region may have an attribute in the set
+ of IAccessible2::attributes which indicates that it is "live". A live region
+ is content that is likely to change in response to a timed change, a user
+ event, or some other programmed logic or event.
+ */
+ IA2_ROLE_SECTION,
+
+ /// Object with graphical representation used to represent content on draw pages.
+ IA2_ROLE_SHAPE,
+
+ /** A split pane. A specialized panel that presents two other panels at the
+ same time. Between the two panels is a divider the user can manipulate to make
+ one panel larger and the other panel smaller.
+ */
+ IA2_ROLE_SPLIT_PANE,
+
+ /** An object that forms part of a menu system but which can be "undocked"
+ from or "torn off" the menu system to exist as a separate window.
+ */
+ IA2_ROLE_TEAR_OFF_MENU,
+
+ /// An object used as a terminal emulator.
+ IA2_ROLE_TERMINAL,
+
+ /// Collection of objects that constitute a logical text entity.
+ IA2_ROLE_TEXT_FRAME,
+
+ /** A toggle button. A specialized push button that can be checked or unchecked,
+ but does not provide a separate indicator for the current state.
+ Also refer to MSAA's roles of push button, check box, and radio button.
+ <BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's
+ ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED.
+ */
+ IA2_ROLE_TOGGLE_BUTTON,
+
+ /** A viewport. An object usually used in a scroll pane. It represents the
+ portion of the entire data that the user can see. As the user manipulates
+ the scroll bars, the contents of the viewport can change.
+ Also refer to ::IA2_ROLE_SCROLL_PANE.
+ */
+ IA2_ROLE_VIEW_PORT,
+
+ /** An object containing content which is complementary to the main content of
+ a document, but remains meaningful when separated from the main content. There
+ are various types of content that would appropriately have this role. For example,
+ in the case where content is delivered via a web portal to a web browser, this may
+ include but not be limited to show times, current weather, related articles, or
+ stocks to watch. The complementary role indicates that contained content is relevant
+ to the main content. If the complementary content is completely separable main
+ content, it may be appropriate to use a more general role.
+ */
+ IA2_ROLE_COMPLEMENTARY_CONTENT
+
+};
+/*************************************************************************
+ *
+ * File Name (AccessibleStates.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+typedef long AccessibleStates;
+
+/** %IAccessible2 specific state bit constants
+
+ This enum defines the state bits returned by IAccessible2::states. The
+ %IAccessible2 state bits are in addition to those returned by MSAA.
+*/
+enum IA2States {
+
+/** Indicates a window is currently the active window, or is an active subelement
+ within a container or table.
+
+ This state can be used to indicate the current active item in a container, even
+ if the container itself is not currently active. In other words this would indicate
+ the item that will get focus if you tab to the container.
+
+ This information is important for knowing what to report for trees and potentially
+ other containers in a virtual buffer.
+
+ Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
+*/
+IA2_STATE_ACTIVE = 0x1,
+
+/** Indicates that the object is armed.
+
+ Used to indicate that the control is "pressed" and will be invoked when the
+ actuator, e.g. a mouse button, is "released". An AT which either monitors the
+ mouse or synthesizes mouse events might need to know that, and possibly a talking
+ interface would even let the user know about it. It could also potentially be
+ useful to on screen keyboards or test tools since the information does indicate
+ something about the state of the interface, for example, code operating asynchronously
+ might need to wait for the armed state to change before doing something else.
+
+*/
+IA2_STATE_ARMED = 0x2,
+
+/** Indicates the user interface object corresponding to this object no longer exists. */
+IA2_STATE_DEFUNCT = 0x4,
+
+/** An object with this state has a caret and implements the IAccessibleText interface.
+
+ Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination
+ with IA2_STATE_EDITABLE.
+
+*/
+IA2_STATE_EDITABLE = 0x8,
+
+/** Indicates the orientation of this object is horizontal. */
+IA2_STATE_HORIZONTAL = 0x10,
+
+/** Indicates this object is minimized and is represented only by an icon. */
+IA2_STATE_ICONIFIED = 0x20,
+
+/** Indicates an input validation failure. */
+IA2_STATE_INVALID_ENTRY = 0x40,
+
+/** Indicates that this object manages its children.
+
+ Note: Due to the fact that MSAA's WinEvents don't allow the active child index
+ to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages
+ descendants scheme can't be used. Instead the active child object has to fire
+ MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
+ added to provide for event specific data to be passed with the event. At that
+ time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
+ IA2_STATE_MANAGES_DESCENDANTS state would be useful.
+*/
+IA2_STATE_MANAGES_DESCENDANTS = 0x80,
+
+/** Indicates that an object is modal.
+
+ Modal objects have the behavior that something must be done with the object
+ before the user can interact with an object in a different window.
+*/
+IA2_STATE_MODAL = 0x100,
+
+/** Indicates this text object can contain multiple lines of text. */
+IA2_STATE_MULTI_LINE = 0x200,
+
+/** Indicates this object paints every pixel within its rectangular region. */
+IA2_STATE_OPAQUE = 0x400,
+
+/** Indicates that user interaction is required.
+
+ An example of when this state is used is when a field in a form must be filled
+ before a form can be processed.
+*/
+IA2_STATE_REQUIRED = 0x800,
+
+/** Indicates an object which supports text selection.
+
+ Note: This is different than MSAA STATE_SYSTEM_SELECTABLE.
+*/
+IA2_STATE_SELECTABLE_TEXT = 0x1000,
+
+/** Indicates that this text object can contain only a single line of text. */
+IA2_STATE_SINGLE_LINE = 0x2000,
+
+/** Indicates that the accessible object is stale.
+
+ This state is used when the accessible object no longer accurately
+ represents the state of the object which it is representing such as when an
+ object is transient or when an object has been or is in the process of being
+ destroyed or when the object's index in its parent has changed.
+*/
+IA2_STATE_STALE = 0x4000,
+
+/** Indicates that the object implements autocompletion.
+
+ This state indicates that a text control will respond to the input of
+ one ore more characters and cause a sub-item to become selected. The
+ selection may also result in events fired on the parent object.
+*/
+IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
+
+/** Indicates this object is transient.
+
+ An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS.
+ For example, a list item object may be managed by its parent list object and may only
+ exist as long as the object is actually rendered. Similarly a table cell's accessible
+ object may exist only while the cell has focus. However, from the perspective of an
+ assistive technology a transient object behaves like a non-transient object. As a
+ result it is likely that this state is not of use to an assistive technology, but it
+ is provided in case an assistive technology determines that knowledge of the transient
+ nature of the object is useful and also for harmony with the Linux accessibility API.
+
+ Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
+ */
+IA2_STATE_TRANSIENT = 0x10000,
+
+/** Indicates the orientation of this object is vertical. */
+IA2_STATE_VERTICAL = 0x20000,
+
+/** Indicates this object is checkable.
+
+ The standard checkable objects are check boxes, radio buttons, check box menu
+ items, radio menu items, and toggle buttons. Since assistive technology will
+ determine that these objects are checkable via the object's role the checkable
+ state is not required. However, this state is necessary in those cases where
+ an object has a role which is not one of the previously mentioned roles. An
+ example is a table cell which indicates whether or not an email has an attachment,
+ whether or not an mail is considered spam, and whether or not an email has been read.
+ */
+IA2_STATE_CHECKABLE = 0x40000,
+
+/** Indicates this object is pinned.
+
+ This state indicates that an object is fixed at a certain location. One example
+ is a browser tab that when pinned cannot be moved until unpinned. Another example
+ is a movable or floating object that when pinned remains in its pinned location
+ until being unpinned.
+ */
+IA2_STATE_PINNED = 0x80000
+
+};
+/*************************************************************************
+ *
+ * File Name (Accessible2.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+/** @mainpage
+
+ @section _interfaces Interfaces
+ IAccessible2\n
+ IAccessible2_2\n
+ IAccessibleAction\n
+ IAccessibleApplication\n
+ IAccessibleComponent\n
+ IAccessibleDocument\n
+ IAccessibleEditableText\n
+ IAccessibleHypertext\n
+ IAccessibleHypertext2\n
+ IAccessibleHyperlink\n
+ IAccessibleImage\n
+ IAccessibleRelation\n
+ IAccessibleTable [Deprecated]\n
+ IAccessibleTable2\n
+ IAccessibleTableCell\n
+ IAccessibleText\n
+ IAccessibleText2\n
+ IAccessibleValue
+
+ @section _structs Structs
+ IA2Locale\n
+ IA2TableModelChange\n
+ IA2TextSegment
+
+ @section _enums Enums
+ ::IA2Actions values are predefined actions for use when implementing support for HTML5 media.\n
+ ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n
+ ::IA2EventID values identify events.\n
+ ::IA2Role values defines roles which are in addition to the existing MSAA roles.\n
+ ::IA2ScrollType values define where to place an object or substring on the screen.\n
+ ::IA2States values define states which are in addition to the existing MSAA states.\n
+ ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n
+ ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n
+ ::IA2TextSpecialOffsets values define special offsets for use in the text interfaces.
+
+ @section _constants Constants
+ @ref grpRelations
+
+ @section _misc Miscellaneous
+ @ref _licensePage "BSD License"\n
+ @ref _generalInfo "General Information"\n
+
+ @page _licensePage BSD License
+ %IAccessible2 IDL Specification
+
+ Copyright (c) 2007, 2013 Linux Foundation\n
+ Copyright (c) 2006 IBM Corporation\n
+ Copyright (c) 2000, 2006 Sun Microsystems, Inc.\n
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+ 3. Neither the name of the Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products
+ derived from this software without specific prior written
+ permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ This BSD License conforms to the Open Source Initiative "Simplified
+ BSD License" as published at:
+ http://www.opensource.org/licenses/bsd-license.php
+
+ %IAccessible2 is a trademark of the Linux Foundation. The %IAccessible2
+ mark may be used in accordance with the
+ <a href="http://www.linuxfoundation.org/collaborate/workgroups/accessibility/trademark-policy">
+ Linux Foundation Trademark Policy</a> to indicate compliance with the %IAccessible2 specification.
+
+ @page _generalInfo General Information
+ The following information is applicable to two or more interfaces.
+
+ @ref _errors\n
+ @ref _memory\n
+ &nbsp;&nbsp;@ref _arrayConsideration\n
+ @ref _indexes\n
+ @ref _enumBase\n
+ @ref _specialOffsets\n
+ @ref _dicoveringInterfaces\n
+ @ref _changingInterfaces\n
+ @ref _applicationInfo\n
+ @ref _childIDs\n
+ @ref _variants\n
+ @ref _iaaction-iahyperlink\n
+ @ref _trademark
+
+ @section _errors Error Handling
+ HRESULT values are defined by the Microsoft&reg; Win32&reg; API. For more information, refer to
+ <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa378137%28v=vs.85%29.aspx">
+ Interpreting HRESULT Values</a> in MSDN&reg;.
+
+ Note that the S_FALSE return value is considered a non-error value and the
+ SUCCEEDED macro will return TRUE. S_FALSE is used when there is no failure
+ but there was nothing valid to return, e.g. in IAccessible2::attributes when
+ there are no attributes. When S_FALSE is returned [out] pointer types should
+ be NULL and [out] longs should generally be 0, but sometimes -1 is used such
+ as IAccessible2::indexInParent, IAccessibleText::caretOffset, and
+ IAccessibleHypertext::hyperlinkIndex.
+
+ Note that for BSTR [out] variables common COM practice is that the server does
+ the SysAllocString and the client does the SysFreeString. Also note that when
+ NULL is returned there is no need for the client to call SysFreeString. Please
+ refer to the documentation for each method for more details regarding error handling.
+
+ @section _memory Memory Management
+ The following memory management issues should be considered:
+ @li Although [out] BSTR variables are declared by the client, their space is
+ allocated by the server. They need to be freed with SysFreeString by the
+ client at end of life; the same is true when BSTRs are used in structs or
+ arrays which are passed to the server.
+ @li If there is no valid [out] BSTR to return, the server should return S_FALSE and
+ assign NULL to the output, e.g. *theOutBSTR = NULL;.
+ @li COM interfaces need to be referenced with AddRef when used and dereferenced
+ with Release at end of life.
+ @li Single [out] longs, HWNDs, booleans, and structs are declared by the caller
+ and passed by reference. The marshaller does all the memory management.
+
+ The following articles may be helpful for understanding memory management issues:
+ @li An article by Don Box in a
+ <a href="http://www.microsoft.com/msj/1196/activex1196.aspx">Q & A section</a>
+ of the November 1996 edition of the Microsoft Systems Journal.
+ @li A posting to a CodeGuru forum,
+ <a href="http://www.codeguru.com/forum/showthread.php?t=364511">Windows SDK
+ String: What are the rules for BSTR allocation and deallocation?</a>
+
+ @subsection _arrayConsideration Special Consideration when using Arrays
+ There are several methods which return arrays. In the case of IAccessible2::relations
+ and IAccessibleRelation::targets the client must allocate and free the arrays.
+
+ For the remaining methods which return arrays, the server must allocate the array
+ and the client must free the array when no longer needed. These methods are
+ IAccessible2::extendedStates, IAccessible2::localizedExtendedStates,
+ IAccessible2_2::relationTargetsOfType, IAccessibleAction::keyBinding,
+ IAccessibleHypertext2::hyperlinks, IAccessibleTable::selectedChildren,
+ IAccessibleTable::selectedColumns, IAccessibleTable::selectedRows,
+ IAccessibleTable2::selectedCells, IAccessibleTable2::selectedColumns,
+ IAccessibleTable2::selectedRows, IAccessibleTableCell::columnHeaderCells,
+ and IAccessibleTableCell::rowHeaderCells.
+ For those methods, the server must allocate both the top level array and any storage
+ associated with it, e.g. for BSTRs. The server must allocate the arrays with
+ CoTaskMemAlloc and any BSTRs with SysAllocString. The client must use CoTaskMemFree
+ to free the array and any BSTRs must be freed with SysFreeString.
+
+ Also, the IDL for IAccessible2::extendedStates, IAccessible2::localizedExtendedStates,
+ IAccessibleAction::keyBinding, IAccessibleTable::selectedChildren,
+ IAccessibleTable::selectedColumns, and IAccessibleTable::selectedRows includes an
+ extraneous [in] parameter for the caller to specify the max size of the array.
+ This parameter will be ignored by the COM server.
+
+ @section _indexes Zero and One Based Indexes
+ Unless otherwise specified all offsets and indexes are 0 based.
+
+ @section _enumBase Enum Base
+ Note that enums start at 0.
+
+ @section _specialOffsets Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods
+ IAccessibleText and IAccessibleEditableText can use one or more of the following
+ special offset values. They are defined in the ::IA2TextSpecialOffsets enum.
+ @li Using ::IA2_TEXT_OFFSET_LENGTH (-1) as an offset in any of the IAccessibleText or
+ IAccessibleEditableText methods is the same as specifying the length of the string.
+ @li Using ::IA2_TEXT_OFFSET_CARET (-2) as an offset for IAccessibleText::textBeforeOffset,
+ IAccessibleText::textAtOffset, and IAccessibleText::textAfterOffset indicates that the
+ text related to the physical location of the caret should be used. This is needed for
+ applications that consider the character offset of the end of one line (as reached by
+ pressing the End key) the same as the offset of the first character on the next line.
+ Since the same offset is associated with two different lines a special means is needed
+ to fetch text from the line where the caret is physically located.
+
+ @section _dicoveringInterfaces Discovery of Interfaces
+ In general AT (Assistive Technology) should try IAccessible2 interfaces, followed by using
+ the MSAA (Microsoft&reg; Active Accessibility&reg;) interfaces. (In cases where the an application
+ is known to have custom interfaces which provide information not supplied by IAccessible2
+ or MSAA, then those custom interfaces can be used.) The AT can then, by default, support
+ unknown IAccessible2/MSAA applications, without the application developers having to request
+ AT vendors for support on an individual application by application basis.
+
+ When you have a reference to an IAccessible and require a reference to an IAccessible2 use
+ QueryService as follows:
+ @code
+ // pAcc is a reference to the accessible object's IAccessible interface.
+ IServiceProvider *pService = NULL;
+ hr = pAcc->QueryInterface(IID_IServiceProvider, (void **)&pService);
+ if(SUCCEEDED(hr)) {
+ IAccessible2 *pIA2 = NULL;
+ hr = pService->QueryService(IID_IAccessible, IID_IAccessible2, (void**)&pIA2);
+ if (SUCCEEDED(hr) && pIA2) {
+ // The control supports IAccessible2.
+ // pIA2 is the reference to the accessible object's IAccessible2 interface.
+ }
+ }
+ @endcode
+
+ @section _changingInterfaces Changing between Accessible Interfaces
+ Note that developers must always implement MSAA's IAccessible and, if needed, some
+ of the interfaces in the set of IAccessible2 interfaces. Although the IAccessible2
+ IDL is coded such that IAccessible2 is a subclass of MSAA's IAccessible, none of
+ MSAA's IAccessible methods are redefined by IAccessible2.
+
+ QueryService must be used to switch from a reference to an MSAA IAccessible interface
+ to another interface. This has been
+ <a href="http://www.atia.org/files/public/Introducing_IAccessibleEx.doc">
+ documented</a> and the pertinent facts have been extracted below:
+
+ @par
+ Why use QueryService instead of just using QueryInterface to get IAccessibleEx
+ directly? The reason is that since MSAA 2.0, clients don't talk to a server's
+ IAccessible interface directly; instead they talk to an intermediate MSAA-provided
+ wrapper that calls through to the original IAccessible. This wrapper provides services
+ such as implementing IDispatch, supplying information from MSAA 2.0's Dynamic Annotation
+ service, and scaling locations when running on Windows Vista with DPI scaling enabled.
+ QueryService is the supported way to expose additional interfaces from an existing
+ IAccessible and was originally used by MSHTML to expose IHTMLElement objects corresponding
+ to IAccessibles. QueryService is often more convenient for servers to implement than
+ QueryInterface because it does not have the same requirements for preserving object
+ identity or symmetry/transitivity as QueryInterface, so QueryService allows servers to
+ easily implement the interface on the same object or a separate object. The latter is
+ often hard to do with QueryInterface unless the original object supports aggregation.
+
+ Two related references in MSDN&reg; are:
+ @li <a href="http://msdn.microsoft.com/en-us/library/ms696078(VS.85).aspx">
+ "Using QueryService to expose a native object model interface for an IAccessible object"</a>
+ @li <a href="http://msdn.microsoft.com/en-us/library/ms528415.aspx#acc_obj">
+ "Accessing the Internet Explorer Object Associated with an Accessible Object"</a>
+
+ Based on this information from Microsoft, QueryService must be used to switch back and forth
+ between a reference to an MSAA IAccessible interface and any of the IAccessible2 interfaces.
+
+ Regarding switching between any of the IAccessible2 interfaces, applications implementing
+ IAccessible2 should implement the IAccessible2 interfaces on a single object since ATs
+ will be using QueryInterface to switch between the IAccessilbe2 interfaces. Implementing
+ the IAccessible2 interfaces on separate objects would require the use of QueryService.
+ There is one exception, IAccessibleApplication can be implemented on a separate object so
+ its common code doesn't have to be included in each accessible object. ATs should use
+ QueryService to access IAccessibleApplication.
+
+ @section _applicationInfo Access to Information about the Application
+ Servers implementing IAccessible2 should provide access to the IAccessibleApplication
+ interface via QueryService from any object so that ATs can easily determine specific
+ information about the application such as its name or version.
+
+ @section _childIDs Child IDs
+ The IAccessible2 interfaces do not support child IDs, i.e. simple child elements.
+ Full accessible objects must be created for each object that supports IAccessible2.
+ Therefore MSAA's get_accChild should never return a child ID (other than CHILDID_SELF)
+ for an object that implements any of the IAccessible2 interfaces.
+
+ Microsoft's UI Automation specification has the same limitation and this was resolved
+ in the UI Automation Express specification by adding IAccessibleEx::GetObjectForChild
+ and IAccessibleEx::GetIAccessiblePair. These methods allow mapping back and forth
+ between an IAccessibleEx and an {IAccessible, Child ID} pair. A future version of
+ IAccessible2 may include similar methods to map back and forth between an IAccessible2
+ and an {IAccessible, Child ID} pair.
+
+ @section _variants VARIANTs
+ Some methods return a VARIANT. Implementers need to make sure that the return type is
+ specified, i.e. VT_I4, VT_IDISPATCH, etc. The methods that return VARIANTs are
+ IAccessibleHyperlink::anchor, IAccessibleHyperlink::anchorTarget, IAccessibleValue::currentValue,
+ IAccessibleValue::maximumValue, IAccessibleValue::minimumValue.
+
+ @section _iaaction-iahyperlink IAccessibleHyperlink as subclass of IAccessibleAction
+ In this version of the IDL, IAccessibleHyperlink is a subclass of IAccessibleAction.
+ However, there is no practical need for that inheritance and in some cases, such as
+ an image map of smart tags, it doesn't make sense because such an image map doesn't
+ have actionable objects; it's the secondary smart tags that are actionable. As a
+ result, implementations should not rely on the inheritance as it may be removed in
+ a later version of the IDL.
+
+ @section _trademark Trademark Attribution
+ The names of actual companies and products mentioned herein may be the trademarks of
+ their respective owners. In particular, Active Accessibility, Microsoft, MSDN, and Win32
+ are trademarks of the Microsoft group of companies in the U.S.A. and/or other countries.
+
+**/
+
+
+
+
+
+
+
+
+/** A structure defining the locale of an accessible object.
+
+IAccessible2::locale returns this struct.
+*/
+typedef struct IA2Locale {
+ BSTR language; ///< ISO 639-1 Alpha-2 two character language code
+ BSTR country; ///< ISO 3166-1 Alpha-2 two character country code
+ BSTR variant; ///< Application specific variant of the locale
+} IA2Locale;
+
+/** @brief This interface exposes the primary set of information about an
+ IAccessible2 enabled accessible object.
+
+ This interface must always be provided for objects that support some
+ portion of the collection of the %IAccessible2 interfaces.
+
+ Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces"
+ for special considerations related to use of the MSAA IAccessible interface and
+ the set of %IAccessible2 interfaces.
+ */
+[object, uuid(E89F726E-C4F4-4c19-BB19-B647D7FA8478)]
+interface IAccessible2 : IAccessible
+{
+
+ /** @brief Returns the number of accessible relations for this object.
+ @param [out] nRelations
+ @retval S_OK
+ */
+ [propget] HRESULT nRelations
+ (
+ [out, retval] long *nRelations
+ );
+
+ /** @brief Returns one accessible relation for this object.
+ @param [in] relationIndex
+ 0 based
+ @param [out] relation
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT relation
+ (
+ [in] long relationIndex,
+ [out, retval] IAccessibleRelation **relation
+ );
+
+ /** @brief Returns multiple accessible relations for this object.
+ @param [in] maxRelations
+ maximum size of the array allocated by the client
+ @param [out] relations
+ The array of accessible relation objects. Note that this array is to be
+ allocated by the client and freed when no longer needed. Refer to @ref
+ _arrayConsideration "Special Consideration when using Arrays" for more details.
+ @param [out] nRelations
+ actual number of relations in the returned array (not more than maxRelations)
+ @retval S_OK
+ @retval S_FALSE if there are no relations, nRelations is set to 0
+ @note As a performant alternative, client code should consider using IAccessible2_2::relationTargetsOfType.
+ */
+ [propget] HRESULT relations
+ (
+ [in] long maxRelations,
+ [out, size_is(maxRelations), length_is(*nRelations)]
+ IAccessibleRelation **relations,
+ [out, retval] long *nRelations
+ );
+
+ /** @brief Returns the role of an %IAccessible2 object.
+ @param [out] role
+ The role of an %IAccessible2 object.
+ @retval S_OK
+ @note
+ @li For convenience MSAA roles are also passed through this method so the
+ AT doesn't have to also fetch roles through MSAA's get_accRole.
+ @li %IAccessible2 roles should not be passed through MSAA's get_accRole.
+ @li For compatibility with non IAccessible2 enabled ATs, IAccessible2
+ applications should also add support to get_accRole to return the closest
+ MSAA role or ROLE_SYSTEM_CLIENT (the MSAA defined default role) if there
+ is not a good match.
+ @li This method is missing a [propget] prefix in the IDL. The result is the
+ method is named role in generated C++ code instead of get_role.
+ */
+ HRESULT role
+ (
+ [out, retval] long *role
+ );
+
+ /** @brief Makes an object visible on the screen.
+ @param [in] scrollType
+ Defines where the object should be placed on the screen.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT scrollTo
+ (
+ [in] enum IA2ScrollType scrollType
+ );
+
+ /** @brief Moves the top left of an object to a specified location.
+
+ @param [in] coordinateType
+ Specifies whether the coordinates are relative to the screen or the parent object.
+ @param [in] x
+ Defines the x coordinate.
+ @param [in] y
+ Defines the y coordinate.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT scrollToPoint
+ (
+ [in] enum IA2CoordinateType coordinateType,
+ [in] long x,
+ [in] long y
+ );
+
+ /** @brief Returns grouping information.
+
+ Used for tree items, list items, tab panel labels, radio buttons, etc.
+ Also used for collections of non-text objects.
+
+ @param [out] groupLevel
+ 1 based, 0 indicates that this value is not applicable
+ @param [out] similarItemsInGroup
+ 1 based, 0 indicates that this value is not applicable
+ @param [out] positionInGroup
+ 1 based, 0 indicates that this value is not applicable. This is an index
+ into the objects in the current group, not an index into all the objects
+ at the same group level.
+ @retval S_OK if at least one value is valid
+ @retval S_FALSE if no values are valid, [out] values are 0s
+ @note This method is meant to describe the nature of an object's containment
+ structure. It's exposed by trees, tree grids, nested lists, nested menus,
+ but not headings, which uses the level object attribute. It is also exposed
+ by radio buttons (with groupLevel == 0).
+ @note This is normally not implemented on a combo box to describe the nature
+ of its contents. Normally an AT will get that information from its child list
+ object. However, in some cases when non-edit combo boxes are not able to be structured
+ such that the list is a child of the combo box, this method is implemented on
+ the combo box itself. ATs can use this interface if a child list is not found.
+ */
+ [propget] HRESULT groupPosition
+ (
+ [out] long *groupLevel,
+ [out] long *similarItemsInGroup,
+ [out, retval] long *positionInGroup
+ );
+
+ /** @brief Returns the bit strip containing any IAccessible2 states.
+
+ The IAccessible2 states are in addition to the MSAA states and are defined in
+ the IA2States enum.
+
+ @param [out] states
+ @retval S_OK
+ */
+ [propget] HRESULT states
+ (
+ [out, retval] AccessibleStates *states
+ );
+
+ /** @brief Returns the extended role.
+
+ An extended role is a role which is dynamically generated by the application.
+ It is not predefined by the %IAccessible2 specification.
+
+ @param [out] extendedRole
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT extendedRole
+ (
+ [out, retval] BSTR *extendedRole
+ );
+
+ /** @brief Returns the localized extended role.
+ @param [out] localizedExtendedRole
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT localizedExtendedRole
+ (
+ [out, retval] BSTR *localizedExtendedRole
+ );
+
+ /** @brief Returns the number of extended states.
+ @param [out] nExtendedStates
+ @retval S_OK
+ */
+ [propget] HRESULT nExtendedStates
+ (
+ [out, retval] long *nExtendedStates
+ );
+
+ /** @brief Returns the extended states (array of strings).
+
+ An extended state is a state which is dynamically generated by the application.
+ It is not predefined by the %IAccessible2 specification.
+
+ @param [in] maxExtendedStates
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] extendedStates
+ This array is allocated by the server. The client must free it with CoTaskMemFree.
+ @param [out] nExtendedStates
+ The number of extended states returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT extendedStates
+ (
+ [in] long maxExtendedStates,
+ [out, size_is(,maxExtendedStates), length_is(,*nExtendedStates)] BSTR **extendedStates,
+ [out, retval] long *nExtendedStates
+ );
+
+ /** @brief Returns the localized extended states (array of strings).
+
+ @param [in] maxLocalizedExtendedStates
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] localizedExtendedStates
+ This array is allocated by the server. The client must free it with CoTaskMemFree.
+ @param [out] nLocalizedExtendedStates
+ The number of localized extended states returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are no states, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT localizedExtendedStates
+ (
+ [in] long maxLocalizedExtendedStates,
+ [out, size_is(,maxLocalizedExtendedStates), length_is(,*nLocalizedExtendedStates)] BSTR **localizedExtendedStates,
+ [out, retval] long *nLocalizedExtendedStates
+ );
+
+ /** @brief Returns the unique ID.
+
+ The uniqueID is an identifier for this object, is unique within the
+ current window, and remains the same for the lifetime of the accessible
+ object.
+
+ The uniqueID is not related to:
+ - the MSAA objectID which is used by the server to disambiguate between
+ IAccessibles per HWND or
+ - the MSAA childID which is used to disambiguate between children being
+ managed by an IAccessible.
+
+ This value is provided so the AT can have access to a unique runtime persistent
+ identifier even when not handling an event for the object.
+
+ An example of when this value is useful is if the AT wants to build a cache.
+ The AT could cache the uniqueIDs in addition to other data being cached.
+ When an event is fired the AT could map the uniqueID to its internal model.
+ Thus, if there's a REORDER/SHOW/HIDE event the AT knows which part of the
+ internal structure has been invalidated and can refetch just that part.
+
+ This value can also be used by an AT to determine when the current control
+ has changed. If the role is the same for two controls that are adjacent in
+ the tab order, this can be used to detect the new control.
+
+ Another use of this value by an AT is to identify when a grouping object has
+ changed, e.g. when moving from a radio button in one group to a radio button in a
+ different group.
+
+ One means of implementing this would be to create a factory with a 32 bit number
+ generator and a reuse pool. The number generator would emit numbers starting
+ at 1. Each time an object's life cycle ended, its number would be saved into a
+ reuse pool. The number generator would be used whenever the reuse pool was empty.
+
+ Another way to create a unique ID is to generate it from a pointer value, e.g. an
+ object's address. That would be unique because no two active objects can use the
+ same allocated memory space.
+
+ @param [out] uniqueID
+ @retval S_OK
+ */
+ [propget] HRESULT uniqueID
+ (
+ [out, retval] long *uniqueID
+ );
+
+ /** @brief Returns the window handle for the parent window which contains this object.
+
+ This is the same window handle which will be passed for any events that occur on the
+ object, but is cached in the accessible object for use when it would be helpful to
+ access the window handle in cases where an event isn't fired on this object.
+
+ A use case is when a screen reader is grabbing an entire web page on a page load.
+ Without the availability of windowHandle, the AT would have to get the window handle
+ by using WindowFromAccessibleObject on each IAccessible, which is slow because it's
+ implemented by oleacc.dll as a loop which crawls up the ancestor chain and looks for
+ a ROLE_WINDOW object, mapping that back to a window handle.
+
+ @param [out] windowHandle
+ @retval S_OK
+ */
+ [propget] HRESULT windowHandle
+ (
+ [out, retval] HWND *windowHandle
+ );
+
+ /** @brief Returns the index of this object in its parent object.
+ @param [out] indexInParent
+ 0 based; -1 indicates there is no parent; the upper bound is the value
+ returned by the parent's IAccessible::get_accChildCount.
+ @retval S_OK
+ @retval S_FALSE if no parent, [out] value is -1
+ */
+ [propget] HRESULT indexInParent
+ (
+ [out, retval] long *indexInParent
+ );
+
+ /** @brief Returns the IA2Locale of the accessible object.
+ @param [out] locale
+ @retval S_OK
+ */
+ [propget] HRESULT locale
+ (
+ [out, retval] IA2Locale *locale
+ );
+
+ /** @brief Returns the attributes specific to this object, such as a cell's formula.
+ @param [out] attributes
+ @retval S_OK
+ @retval S_FALSE returned if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT attributes
+ (
+ [out, retval] BSTR *attributes
+ );
+
+}
+
+/*************************************************************************
+ *
+ * File Name (Accessible2_2.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface exposes the primary set of information about an
+ IAccessible2 enabled accessible object.
+
+ This interface must always be provided for objects that support some
+ portion of the collection of the %IAccessible2 interfaces.
+
+ Please refer to @ref _changingInterfaces "Changing between Accessible Interfaces"
+ for special considerations related to use of the MSAA IAccessible interface and
+ the set of %IAccessible2 interfaces.
+ */
+[object, uuid(6C9430E9-299D-4E6F-BD01-A82A1E88D3FF)]
+interface IAccessible2_2 : IAccessible2
+{
+ /** @brief Returns the attribute value of a specified attribute specific to this object.
+ @param [in] name
+ @param [out] attribute
+ @retval S_OK
+ @retval S_FALSE returned if there is nothing to return, [out] value is NULL.
+ @retval E_INVALIDARG if bad [in] passed.
+ @note The output value is a VARIANT. Typically it will be a VT_BSTR, but there
+ are some cases where it will be a VT_I4 or VT_BOOL. Refer to the <a href=
+ "http://www.linuxfoundation.org/collaborate/workgroups/accessibility/iaccessible2/objectattributesIAccessible2">
+ Object Attributes specification</a> for more information.
+ */
+ [propget] HRESULT attribute
+ (
+ [in] BSTR name,
+ [out, retval] VARIANT *attribute
+ );
+
+ /** @brief Returns the deepest hypertext accessible in the subtree of this object, and the caret offset within it.
+ @param [out] accessible
+ @param [out] caretOffset
+ @retval S_OK
+ @retval S_FALSE returned if there is no caret in any of the objects in the subtree, [out] accessible is NULL and [out] caretOffset is -1.
+ */
+ [propget] HRESULT accessibleWithCaret
+ (
+ [out] IUnknown **accessible,
+ [out, retval] long *caretOffset
+ );
+
+ /** @brief Returns relation targets for a specified target type.
+ @param [in] type
+ The requested @ref grpRelations "relation type".
+ @param [in] maxTargets
+ The number of targets requested. 0 indicates that all targets should be returned.
+ @param [out] targets
+ This array is allocated by the server. The client must free it with CoTaskMemFree.
+ @param [out] nTargets
+ The number of targets returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are no targets, [out] values are NULL and 0 respectively.
+ @retval E_INVALIDARG if bad [in] passed.
+ */
+ [propget] HRESULT relationTargetsOfType
+ (
+ [in] BSTR type,
+ [in] long maxTargets,
+ [out, size_is(,*nTargets)] IUnknown ***targets,
+ [out, retval] long *nTargets
+ );
+
+}
+
+/*************************************************************************
+ *
+ * File Name (AccessibleComponent.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+/** A value specifying a color in ARGB format, where each 8 bit color component
+specifies alpha, red, green, and blue respectively. The alpha value is optional.
+*/
+typedef long IA2Color;
+
+/** @brief This interface is implemented by any object that can be rendered
+ on the screen.
+
+ This interface provides the standard mechanism for an assistive technology
+ to retrieve information concerning the graphical representation of an object.
+ Coordinates used by the functions of this interface are specified in
+ different coordinate systems. Their scale is the same and is equal to
+ that of the screen coordinate system. In other words all coordinates
+ are measured in pixels. They differ in their respective origin:
+ <ul>
+ <li>The screen coordinate system has its origin in the upper left
+ corner of the current screen.</li>
+ <li>The origin of the parent coordinate system is the upper left corner
+ of the parent's bounding box. With no parent the screen coordinate
+ system is used instead.</li>
+ </ul>
+*/
+[object, uuid(1546D4B0-4C98-4bda-89AE-9A64748BDDE4)]
+interface IAccessibleComponent : IUnknown
+{
+
+ /** @brief Returns the location of the upper left corner of the object's
+ bounding box relative to the immediate parent object.
+
+ The coordinates of the bounding box are given relative to the parent's
+ coordinate system. The coordinates of the returned position are relative
+ to this object's parent or relative to the screen on which this object
+ is rendered if it has no parent. If the object is not on any screen
+ the returned position is (0,0).
+
+ @param [out] x
+ @param [out] y
+ @retval S_OK
+ */
+ [propget] HRESULT locationInParent
+ (
+ [out] long *x,
+ [out, retval] long *y
+ );
+
+ /** @brief Returns the foreground color of this object.
+ @param [out] foreground
+ The returned color is the foreground color of this object or, if
+ that is not supported, the default foreground color.
+ @retval S_OK
+ */
+ [propget] HRESULT foreground
+ (
+ [out, retval] IA2Color *foreground
+ );
+
+ /** @brief Returns the background color of this object.
+ @param [out] background
+ The returned color is the background color of this object or, if
+ that is not supported, the default background color.
+ @retval S_OK
+ */
+ [propget] HRESULT background
+ (
+ [out, retval] IA2Color *background
+ );
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleValue.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+/** @brief This interface gives access to a single numerical value.
+
+ The %IAccessibleValue interface represents a single numerical value and should
+ be implemented by any class that supports numerical value like progress bars
+ and spin boxes. This interface lets you access the value and its upper and
+ lower bounds.
+*/
+[object, uuid(35855B5B-C566-4fd0-A7B1-E65465600394)]
+interface IAccessibleValue : IUnknown
+{
+
+ /** @brief Returns the value of this object as a number.
+
+ The exact return type is implementation dependent. Typical types are long and
+ double.
+ @param [out] currentValue
+ Returns the current value represented by this object. See the section about
+ @ref _variants "VARIANTs" for additional information.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
+ */
+ [propget] HRESULT currentValue
+ (
+ [out, retval] VARIANT *currentValue
+ );
+
+ /** @brief Sets the value of this object to the given number.
+
+ The argument is clipped to the valid interval whose upper and lower
+ bounds are returned by the methods IAccessibleValue::maximumValue and
+ IAccessibleValue::minimumValue, i.e. if it is lower than the minimum
+ value the new value will be the minimum and if it is greater than the
+ maximum then the new value will be the maximum.
+
+ @param [in] value
+ The new value represented by this object. The set of admissible types for
+ this argument is implementation dependent.
+ @retval S_OK
+ */
+ HRESULT setCurrentValue
+ (
+ [in] VARIANT value
+ );
+
+ /** @brief Returns the maximal value that can be represented by this object.
+
+ The type of the returned value is implementation dependent. It does not have
+ to be the same type as that returned by method IAccessibleValue::currentValue.
+
+ @param [out] maximumValue
+ Returns the maximal value in an implementation dependent type. If this object
+ has no upper bound then an empty object is returned. See the section about
+ @ref _variants "VARIANTs" for additional information.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
+ */
+ [propget] HRESULT maximumValue
+ (
+ [out, retval] VARIANT *maximumValue
+ );
+
+ /** @brief Returns the minimal value that can be represented by this object.
+
+ The type of the returned value is implementation dependent. It does not have
+ to be the same type as that returned by method IAccessibleValue::currentValue.
+
+ @param [out] minimumValue
+ Returns the minimal value in an implementation dependent type. If this object
+ has no lower bound then an empty object is returned. See the section about
+ @ref _variants "VARIANTs" for additional information.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is a VARIANT with vt = VT_EMPTY
+ */
+ [propget] HRESULT minimumValue
+ (
+ [out, retval] VARIANT *minimumValue
+ );
+
+};
+/*************************************************************************
+ *
+ * File Name (AccessibleText.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** A structure containing a substring and the start and end offsets in the enclosing string.
+
+ IAccessibleText::newText and IAccessibleText::oldText return this struct.
+*/
+typedef struct IA2TextSegment {
+ BSTR text; ///< A copy of a segment of text taken from an enclosing paragraph.
+ long start; ///< Index of the first character of the segment in the enclosing text.
+ long end; ///< Index of the character following the last character of the segment in the enclosing text.
+} IA2TextSegment;
+
+/** This enum defines values which specify a text boundary type.
+
+ IA2_TEXT_BOUNDARY_SENTENCE is optional. When a method doesn't implement this
+ method it must return S_FALSE. Typically this feature would not be implemented
+ by an application. However, if the application developer was not satisfied with
+ how screen readers have handled the reading of sentences this boundary type
+ could be implemented and screen readers could use the application's version of a
+ sentence rather than the screen reader's.
+
+ The rest of the boundary types must be supported.
+
+ This enum is used in IAccessibleText::textBeforeOffset, IAccessibleText::textAtOffset,
+ and IAccessibleText::textAfterOffset.
+*/
+
+enum IA2TextBoundaryType {
+ IA2_TEXT_BOUNDARY_CHAR, /**< Typically, a single character is returned. In some cases more than
+ one character is returned, for example, when a document contains field
+ data such as a field containing a date, time, or footnote reference.
+ In this case the caret can move over several characters in one movement
+ of the caret. Note that after the caret moves, the caret offset changes
+ by the number of characters in the field, e.g. by 8 characters in the
+ following date: 03/26/07. */
+ IA2_TEXT_BOUNDARY_WORD, /**< The range provided matches the range observed when the application
+ processes the Ctrl + left arrow and Ctrl + right arrow key sequences.
+ Typically this is from the start of one word to the start of the next, but
+ various applications are inconsistent in the handling of the end of a line. */
+ IA2_TEXT_BOUNDARY_SENTENCE, ///< Range is from start of one sentence to the start of another sentence.
+ IA2_TEXT_BOUNDARY_PARAGRAPH, ///< Range is from start of one paragraph to the start of another paragraph.
+ IA2_TEXT_BOUNDARY_LINE, /**< Range is from start of one line to the start of another line. This
+ often means that an end-of-line character will appear at the end of the
+ range. However in the case of some applications an end-of-line character
+ indicates the end of a paragraph and the lines composing the paragraph,
+ other than the last line, do not contain an end of line character. */
+ IA2_TEXT_BOUNDARY_ALL ///< Using this value will cause all text to be returned.
+};
+
+/** @brief This interface gives read-only access to text.
+
+ The %IAccessibleText interface should be implemented by all components
+ that present textual information on the display like buttons,
+ text entry fields, or text portions of the document window. The interface
+ provides access to the text's content, attributes, and spatial location.
+ However, text can not be modified with this interface. That is the task
+ of the IAccessibleEditableText interface.
+
+ The text length, i.e. the number of characters in the text, is
+ returned by IAccessibleText::nCharacters. All methods that operate
+ on particular characters (e.g. IAccessibleText::textAtOffset) use character
+ indices from 0 to length-1. All methods that operate on character positions
+ (e.g. IAccessibleText::text) use indices from 0 to length.
+
+ Please note that accessible text does not necessarily support selection.
+ In this case it should behave as if there where no selection. An empty
+ selection is used for example to express the current cursor position.
+
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+
+ E_FAIL is returned in the following cases
+ @li endOffset < startOffset
+ @li endoffset > length
+*/
+[object, uuid(24FD2FFB-3AAD-4a08-8335-A3AD89C0FB4B)]
+interface IAccessibleText : IUnknown
+{
+
+ /** @brief Adds a text selection
+ @param [in] startOffset
+ Starting offset ( 0 based).
+ @param [in] endOffset
+ Offset of first character after new selection (0 based).
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ */
+ HRESULT addSelection
+ (
+ [in] long startOffset,
+ [in] long endOffset
+ );
+
+ /** @brief Returns text attributes.
+ @param [in] offset
+ Text offset (0 based). Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @param [out] startOffset
+ The starting offset of the character range over which all text attributes match
+ those of offset. (0 based)
+ @param [out] endOffset
+ The offset of the first character past the character range over which all text
+ attributes match those of offset. (0 based)
+ @param [out] textAttributes
+ A string of attributes describing the text. The attributes are described in the
+ <a href="http://www.linuxfoundation.org/en/Accessibility/IAccessible2/TextAttributes">
+ text attributes specification</a> on the %IAccessible2 web site.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] values are 0s and NULL respectively
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT attributes
+ (
+ [in] long offset,
+ [out] long *startOffset,
+ [out] long *endOffset,
+ [out, retval] BSTR *textAttributes
+ );
+
+ /** @brief Returns the position of the caret.
+
+ Returns the 0-based offset of the caret within the text. If the text is
+ implemented as a tree of text objects with embed characters in higher levels
+ representing substrings of child text objects and the caret is in one of the
+ child text objects, then the offset in the higher level text object would be
+ at the embed character representing child text object that contains the caret.
+
+ For example, if the string "one two three" is implemented as a two text objects,
+ with a top level text object containing an embed character "one ? three" and a
+ child text object containing "two" and if the caret is in the descendant object
+ just before the 'o' in "two", then:
+ <ul>
+ <li>the caretOffset for the "one ? three" object would be 4, matching the embed character</li>
+ <li>the caretOffset for "two" would be 2, matching the "o"</li>
+ </ul>
+ The caret position/offset is that of the character logically following it, e.g.
+ to the right of it in a left to right language, or to the left of it in a right
+ to left language.
+ @param [out] offset
+ The returned offset is relative to the text represented by this object.
+ @retval S_OK
+ @retval S_FALSE if the caret is not currently active on this object, i.e. the
+ caret is located on some other object. The returned offset value will be -1.
+ @note S_FALSE (and an offset of -1) will not be returned if the caret is somewhere
+ in the text object or one of its descendants.
+ */
+ [propget] HRESULT caretOffset
+ (
+ [out, retval] long *offset
+ );
+
+
+ /** @brief Returns the bounding box of the specified position.
+
+ The virtual character after the last character of the represented
+ text, i.e. the one at position length is a special case. It represents the
+ current input position and will therefore typically be queried by AT more
+ often than other positions. Because it does not represent an existing character
+ its bounding box is defined in relation to preceding characters. It should be
+ roughly equivalent to the bounding box of some character when inserted at the
+ end of the text. Its height typically being the maximal height of all the
+ characters in the text or the height of the preceding character, its width being
+ at least one pixel so that the bounding box is not degenerate.
+
+ Note that the index 'length' is not always valid. Whether it is or not is
+ implementation dependent. It typically is when text is editable or otherwise
+ when on the screen the caret can be placed behind the text. You can be sure
+ that the index is valid after you have received a ::IA2_EVENT_TEXT_CARET_MOVED
+ event for this index.
+ @param [in] offset
+ Index of the character for which to return its bounding box. The valid range
+ is 0..length. Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @param [in] coordType
+ Specifies if the coordinates are relative to the screen or to the parent window.
+ @param [out] x
+ X coordinate of the top left corner of the bounding box of the referenced character.
+ @param [out] y
+ Y coordinate of the top left corner of the bounding box of the referenced character.
+ @param [out] width
+ Width of the bounding box of the referenced character.
+ @param [out] height
+ Height of the bounding box of the referenced character.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT characterExtents
+ (
+ [in] long offset,
+ [in] enum IA2CoordinateType coordType,
+ [out] long *x,
+ [out] long *y,
+ [out] long *width,
+ [out, retval] long *height
+ );
+
+
+ /** @brief Returns the number of active non-contiguous selections
+ @param [out] nSelections
+ @retval S_OK
+ */
+ [propget] HRESULT nSelections
+ (
+ [out, retval] long *nSelections
+ );
+
+ /** @brief Returns the text position for the specified screen position.
+
+ Given a point return the zero-based index of the character under that
+ point. The same functionality could be achieved by using the bounding
+ boxes for each character as returned by IAccessibleText::characterExtents.
+ The method IAccessibleText::offsetAtPoint, however, can be implemented
+ more efficiently.
+
+ @param [in] x
+ The position's x value for which to look up the index of the character that
+ is rendered on to the display at that point.
+ @param [in] y
+ The position's y value for which to look up the index of the character that
+ is rendered on to the display at that point.
+ @param [in] coordType
+ Screen coordinates or window coordinates.
+ @param [out] offset
+ Index of the character under the given point or -1 if the point
+ is invalid or there is no character under the point.
+ @retval S_OK
+ @retval S_FALSE if nothing to return, [out] value is -1
+
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT offsetAtPoint
+ (
+ [in] long x,
+ [in] long y,
+ [in] enum IA2CoordinateType coordType,
+ [out, retval] long *offset
+ );
+
+ /** @brief Returns the character offsets of Nth active text selection
+
+ Returns the 0-based starting and ending offsets of the Nth selection. If the
+ text is implemented as a tree of text objects with embed characters in higher
+ levels representing substrings of child text objects, consider the following.
+ If the starting selection offset is in one of the child text objects, then the
+ starting offset in the higher level text object would be at the embed character
+ representing the child text object that contains the starting selection offset.
+ If the ending selection offset is in one of the child text objects, then the
+ ending offset in the higher level text object would be just after the embed
+ character representing the child text object that contains the ending selection
+ offset.
+
+ For example, if the string "one two three" is implemented as a two text objects,
+ with a top level text object containing an embed character "one ? three" and a
+ child text object containing "two" and if the selection is the string "two" then:
+ <ul>
+ <li>the startOffset for the "one ? three" object would be 4, matching the embed character and the endOffset would be 5.</li>
+ <li>the startOffset for the "two" object would be 0, and the endOffset would be 3</li>
+ </ul>
+ Selection offsets are that of the character logically following it, e.g.
+ to the right of it in a left to right language or to the left of it in a right to left language.
+ @param [in] selectionIndex
+ Index of selection (0 based).
+ @param [out] startOffset
+ 0 based offset of first selected character
+ @param [out] endOffset
+ 0 based offset of one past the last selected character.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT selection
+ (
+ [in] long selectionIndex,
+ [out] long *startOffset,
+ [out, retval] long *endOffset
+ );
+
+ /** @brief Returns the substring between the two given indices.
+
+ The substring starts with the character at startOffset (inclusive) and up to
+ the character at endOffset (exclusive), if startOffset is less or equal
+ endOffset. If endOffset is lower than startOffset, the result is the same
+ as a call with the two arguments being exchanged.
+
+ The whole text can be requested by passing the indices zero and
+ IAccessibleText::nCharacters. If both indices have the same value, an empty
+ string is returned.
+ @param [in] startOffset
+ Index of the first character to include in the returned string. The valid range
+ is 0..length.
+ @param [in] endOffset
+ Index of the last character to exclude in the returned string. The valid range
+ is 0..length.
+ @param [out] text
+ Returns the substring starting with the character at startOffset (inclusive)
+ and up to the character at endOffset (exclusive), if startOffset is less than
+ or equal to endOffset.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note
+ @li The returned string may be longer than endOffset-startOffset bytes if text
+ contains multi-byte characters.
+ @li Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ */
+ [propget] HRESULT text
+ (
+ [in] long startOffset,
+ [in] long endOffset,
+ [out, retval] BSTR *text
+ );
+
+ /** @brief Returns a text portion before the given position.
+
+ Returns the substring of the specified text type that is located before the
+ given character and does not include it. The result of this method should be
+ same as a result for IAccessibleText::textAtOffset with a suitably decreased
+ index value.
+
+ For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
+ word that is closest to and located before offset is returned.
+
+ If the index is valid, but no text is found, S_FALSE is returned along with out
+ values of 0, 0, and a NULL pointer. This would happen for boundary types other
+ than character when the text consists entirely of whitespace.
+
+ @param [in] offset
+ Index of the character for which to return the text part before it. The index
+ character will not be part of the returned string. The valid range is 0..length.
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @param [in] boundaryType
+ The type of the text portion to return. See ::IA2TextBoundaryType for the
+ complete list.
+ @param [out] startOffset
+ 0 based offset of first character.
+ @param [out] endOffset
+ 0 based offset of one past the last character.
+ @param [out] text
+ Returns the requested text portion. This portion may be empty or invalid when
+ no appropriate text portion is found or text type is invalid.
+ @retval S_OK
+ @retval S_FALSE if the requested boundary type is not implemented, such as
+ ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
+ [out] values are 0s and NULL respectively
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT textBeforeOffset
+ (
+ [in] long offset,
+ [in] enum IA2TextBoundaryType boundaryType,
+ [out] long *startOffset,
+ [out] long *endOffset,
+ [out, retval] BSTR *text
+ );
+
+ /** @brief Returns a text portion after the given position.
+
+ Returns the substring of the specified text type that is located after the
+ given character and does not include it. The result of this method should be
+ same as a result for IAccessibleText::textAtOffset with a suitably increased
+ index value.
+
+ For example, if text type is ::IA2_TEXT_BOUNDARY_WORD, then the complete
+ word that is closest to and located after offset is returned.
+
+ If the index is valid, but no text is found, S_FALSE is returned along with out
+ values of 0, 0, and a NULL pointer. This would happen for boundary types other
+ than character when the text consists entirely of whitespace.
+
+ @param [in] offset
+ Index of the character for which to return the text part after it. The index
+ character will not be part of the returned string. The valid range is 0..length.
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @param [in] boundaryType
+ The type of the text portion to return. See ::IA2TextBoundaryType for the complete
+ list.
+ @param [out] startOffset
+ 0 based offset of first character.
+ @param [out] endOffset
+ 0 based offset of one past the last character.
+ @param [out] text
+ Returns the requested text portion. This portion may be empty or invalid when
+ no appropriate text portion is found or text type is invalid.
+ @retval S_OK
+ @retval S_FALSE if the requested boundary type is not implemented, such as
+ ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
+ [out] values are 0s and NULL respectively
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT textAfterOffset
+ (
+ [in] long offset,
+ [in] enum IA2TextBoundaryType boundaryType,
+ [out] long *startOffset,
+ [out] long *endOffset,
+ [out, retval] BSTR *text
+ );
+
+ /** @brief Returns a text portion that spans the given position.
+
+ Returns the substring defined by the specified boundary type at the specified
+ offset. Refer to IA2TextBoundaryType for more details.
+
+ For the word boundary type the returned string will contain the word at the
+ offset if the offset is inside a word and will contain the word before the
+ offset if the offset is not inside a word. All offsets from the first to the
+ last characters of a word are considered inside the word. Boundary types of
+ sentence and paragraph should exhibit similar behavior.
+
+ If the index is valid, but no text is found, S_FALSE is returned along with out
+ values of 0, 0, and a NULL pointer. This would happen for boundary types other
+ than character when the text consists entirely of whitespace.
+
+ @param [in] offset
+ Index of the character for which to return the text part it belongs to. The valid
+ range is 0..length.
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @param [in] boundaryType
+ The type of the text portion to return. See ::IA2TextBoundaryType for the complete
+ list.
+ @param [out] startOffset
+ 0 based offset of first character.
+ @param [out] endOffset
+ 0 based offset of one past the last character.
+ @param [out] text
+ Returns the requested text portion. This portion may be empty or invalid when
+ no appropriate text portion is found or text type is invalid.
+ @retval S_OK
+ @retval S_FALSE if the requested boundary type is not implemented, such as
+ ::IA2_TEXT_BOUNDARY_SENTENCE, or if there is nothing to return;
+ [out] values are 0s and NULL respectively
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT textAtOffset
+ (
+ [in] long offset,
+ [in] enum IA2TextBoundaryType boundaryType,
+ [out] long *startOffset,
+ [out] long *endOffset,
+ [out, retval] BSTR *text
+ );
+
+ /** @brief Unselects a range of text.
+ @param [in] selectionIndex
+ Index of selection to remove (0 based).
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT removeSelection
+ (
+ [in] long selectionIndex
+ );
+
+ /** @brief Sets the position of the caret.
+
+ The caret position/offset is that of the character logically following it,
+ e.g. to the right of it in a left to right language.
+
+ Setting the caret position may or may not alter the current selection. A
+ change of the selection is notified to the accessibility event listeners with
+ an ::IA2_EVENT_TEXT_SELECTION_CHANGED event.
+
+ When the new caret position differs from the old one (which, of course, is the
+ standard case) this is notified to the accessibility event listeners with an
+ ::IA2_EVENT_TEXT_CARET_MOVED event.
+ @param [in] offset
+ The new index of the caret. This caret is actually placed to the left side of
+ the character with that index. An index of 0 places the caret so that the next
+ insertion goes before the first character. An index of IAccessibleText::nCharacters
+ leads to insertion after the last character. Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ @retval S_OK
+ @retval E_FAIL if the caret cannot be set
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT setCaretOffset
+ (
+ [in] long offset
+ );
+
+ /** @brief Changes the bounds of an existing selection.
+ @param [in] selectionIndex
+ Index of selection to change (0 based)
+ @param [in] startOffset
+ New starting offset (0 based)
+ @param [in] endOffset
+ New ending offset (0 based) - the offset of the character just past the last character of the selection.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ */
+ HRESULT setSelection
+ (
+ [in] long selectionIndex,
+ [in] long startOffset,
+ [in] long endOffset
+ );
+
+ /** @brief Returns total number of characters.
+
+ Note that this may be different than the total number of bytes required to store the
+ text, if the text contains multi-byte characters.
+ @param [out] nCharacters
+ @retval S_OK
+ */
+ [propget] HRESULT nCharacters
+ (
+ [out, retval] long *nCharacters
+ );
+
+ /** @brief Makes a specific part of string visible on screen.
+ @param [in] startIndex
+ 0 based character offset.
+ @param [in] endIndex
+ 0 based character offset - the offset of the character just past the last character of the string.
+ @param [in] scrollType
+ Defines where the object should be placed on the screen.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ */
+ HRESULT scrollSubstringTo
+ (
+ [in] long startIndex,
+ [in] long endIndex,
+ [in] enum IA2ScrollType scrollType
+ );
+
+ /** @brief Moves the top left of a substring to a specified location.
+
+ @param [in] startIndex
+ 0 based character offset.
+ @param [in] endIndex
+ 0 based character offset - the offset of the character just past the last character of the string.
+ @param [in] coordinateType
+ Specifies whether the coordinates are relative to the screen or the parent object.
+ @param [in] x
+ Defines the x coordinate.
+ @param [in] y
+ Defines the y coordinate.
+ @retval S_OK
+ @retval S_FALSE if the object is already at the specified location.
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleText methods.
+ */
+ HRESULT scrollSubstringToPoint
+ (
+ [in] long startIndex,
+ [in] long endIndex,
+ [in] enum IA2CoordinateType coordinateType,
+ [in] long x,
+ [in] long y
+ );
+
+ /** @brief Returns any inserted text.
+
+ Provided for use by the ::IA2_EVENT_TEXT_INSERTED and ::IA2_EVENT_TEXT_UPDATED
+ event handlers.
+
+ This data is only guaranteed to be valid while the thread notifying the event
+ continues. Once the handler has returned, the validity of the data depends on
+ how the server manages the life cycle of its objects. Also, note that the server
+ may have different life cycle management strategies for controls depending on
+ whether or not a control manages its children. Lists, trees, and tables can have
+ a large number of children and thus it's possible that the child objects for those
+ controls would only be created as needed. Servers should document their life cycle
+ strategy as this will be of interest to assistive technology or script engines
+ accessing data out of process or from other threads. Servers only need to save the
+ last inserted block of text and a scope of the entire application is adequate.
+
+ @param [out] newText
+ The text that was just inserted.
+ @retval S_OK
+ @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
+ struct are set as follows: text = NULL, start = 0, end = 0.
+
+ */
+ [propget] HRESULT newText
+ (
+ [out, retval] IA2TextSegment *newText
+ );
+
+ /** @brief Returns any removed text.
+
+ Provided for use by the IA2_EVENT_TEXT_REMOVED/UPDATED event handlers.
+
+ This data is only guaranteed to be valid while the thread notifying the event
+ continues. Once the handler has returned, the validity of the data depends on
+ how the server manages the life cycle of its objects. Also, note that the server
+ may have different life cycle management strategies for controls depending on
+ whether or not a control manages its children. Lists, trees, and tables can have
+ a large number of children and thus it's possible that the child objects for those
+ controls would only be created as needed. Servers should document their life cycle
+ strategy as this will be of interest to assistive technology or script engines
+ accessing data out of process or from other threads. Servers only need to save the
+ last removed block of text and a scope of the entire application is adequate.
+
+ @param [out] oldText
+ The text that was just removed.
+ @retval S_OK
+ @retval S_FALSE If there is nothing to return, the values of IA2TextSegment
+ struct are set as follows: text = NULL, start = 0, end = 0.
+ */
+ [propget] HRESULT oldText
+ (
+ [out, retval] IA2TextSegment *oldText
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleText2.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+/** @brief This interface gives read-only access to text.
+
+ The %IAccessibleText2 interface extends the functionality of the
+ %IAccessibleText interface.
+*/
+[object, uuid(9690A9CC-5C80-4DF5-852E-2D5AE4189A54)]
+interface IAccessibleText2 : IAccessibleText
+{
+
+ /** @brief Returns the range and of the specified set of attributes.
+
+ Return the range (start and end offsets) and text attributes that correspond
+ to the given attributes filter at the given offset.
+
+ @param [in] offset
+ The offset at which to search for the attributes specified in the filter.
+ @param [in] filter
+ The requested attribute names. The filter format is "attribute1, attribute2".
+ @param [out] startOffset
+ The starting (0-based) offset of the text containing the specified attributes.
+ @param [out] endOffset
+ The (0-based) offset one past the last character of the text containing the
+ specified attributes.
+ @param [out] attributeValues
+ The values of the requested attributes.
+ @retval S_OK
+ @retval S_FALSE if nothing to return, [out] values are -1, -1, NULL respectively.
+ @retval E_INVALIDARG if bad [in] passed.
+ */
+ [propget] HRESULT attributeRange
+ (
+ [in] long offset,
+ [in] BSTR filter,
+ [out] long *startOffset,
+ [out] long *endOffset,
+ [out, retval] BSTR *attributeValues
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleEditableText.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2012 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface provides clipboard capability to text objects.
+
+ This interface is typically used in conjunction with the IAccessibleText
+ interface and complements that interface with the additional capability of
+ clipboard operations. Note that even a read only text object can support
+ the copy capability so this interface is not limited to editable objects.
+
+ The substrings used with this interface are specified as follows:
+ If startOffset is less than endOffset, the substring starts with the
+ character at startOffset and ends with the character just before endOffset.
+ If endOffset is lower than startOffset, the result is the same as a call
+ with the two arguments exchanged. The whole text can be defined by passing
+ the indices zero and IAccessibleText::nCharacters. If both indices have the
+ same value, an empty string is defined.
+
+ Refer to the @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about a special offset constant that can be used in %IAccessibleEditableText methods.
+*/
+[object, uuid(A59AA09A-7011-4b65-939D-32B1FB5547E3)]
+interface IAccessibleEditableText : IUnknown
+{
+
+ /** @brief Copies the text range into the clipboard.
+
+ The selection is set to the specified offsets and then selection is copied into
+ the system clipboard.
+
+ @param [in] startOffset
+ Start index of the text to moved into the clipboard.
+ The valid range is 0..length.
+ @param [in] endOffset
+ End index of the text to moved into the clipboard.
+ The valid range is 0..length.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ @deprecated This function is available via the application's GUI.
+ */
+ HRESULT copyText
+ (
+ [in] long startOffset,
+ [in] long endOffset
+ );
+
+ /** @brief Deletes a range of text.
+
+ The text between and including the two given indices is deleted
+ from the text represented by this object.
+
+ @param [in] startOffset
+ Start index of the text to be deleted.
+ The valid range is 0..length.
+ @param [in] endOffset
+ End index of the text to be deleted.
+ The valid range is 0..length.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ */
+ HRESULT deleteText
+ (
+ [in] long startOffset,
+ [in] long endOffset
+ );
+
+ /** @brief Inserts text at the specified position.
+
+ The specified string is inserted at the given index into the text
+ represented by this object.
+
+ @param [in] offset
+ Index at which to insert the text.
+ The valid range is 0..length.
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ @param [in] text
+ Text that is inserted.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT insertText
+ (
+ [in] long offset,
+ [in] BSTR *text
+ );
+
+ /** @brief Deletes a range of text and copies it to the clipboard.
+
+ The selection is set to the specified offsets, the selection is then copied into
+ the system clipboard, and then the selection is deleted.
+
+ @param [in] startOffset
+ Start index of the text to be deleted.
+ The valid range is 0..length.
+ @param [in] endOffset
+ End index of the text to be deleted.
+ The valid range is 0..length.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ @deprecated This function is available via the application's GUI.
+ */
+ HRESULT cutText
+ (
+ [in] long startOffset,
+ [in] long endOffset
+ );
+
+ /** @brief Pastes content from the clipboard.
+
+ Any existing selection is removed, the clipboard content is then pasted into
+ this object's text at the given offset. This method is similar to the insertText
+ method. If the index is not valid the system clipboard content is not inserted. The
+ behavior is the same as when Ctrl+V is used, i.e. the pasted contents are not
+ necessarily plain text.
+
+ @param [in] offset
+ Index at which to insert the content from the system clipboard into
+ the text represented by this object.
+ The valid range is 0..length.
+ Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @deprecated This function is available via the application's GUI.
+ */
+ HRESULT pasteText
+ (
+ [in] long offset
+ );
+
+ /** @brief Replaces text.
+
+ The text between the two given indices is replaced by the specified
+ replacement string. This method is equivalent to calling first
+ IAccessibleEditableText::deleteText with the two indices and then
+ calling IAccessibleEditableText::insertText with the replacement text
+ at the start index.
+
+ @param [in] startOffset
+ Start index of the text to be replaced.
+ The valid range is 0..length.
+ @param [in] endOffset
+ End index of the text to be replaced.
+ The valid range is 0..length.
+ @param [in] text
+ The Text that replaces the text between the given indices.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ */
+ HRESULT replaceText
+ (
+ [in] long startOffset,
+ [in] long endOffset,
+ [in] BSTR *text
+ );
+
+ /** @brief Replaces the attributes of a text range by the given set of attributes.
+
+ Sets the attributes for the text between the two given indices. The old
+ attributes are replaced by the new list of attributes.
+
+ @param [in] startOffset
+ Start index of the text whose attributes are modified.
+ The valid range is 0..length.
+ @param [in] endOffset
+ End index of the text whose attributes are modified.
+ The valid range is 0..length.
+ @param [in] attributes
+ Set of attributes that replaces the old list of attributes of
+ the specified text portion.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ @note Refer to @ref _specialOffsets
+ "Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
+ for information about special offsets that can be used in %IAccessibleEditableText
+ methods.
+ */
+ HRESULT setAttributes
+ (
+ [in] long startOffset,
+ [in] long endOffset,
+ [in] BSTR *attributes
+ );
+}
+
+/*************************************************************************
+ *
+ * File Name (AccessibleHyperlink.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface represents hyperlinks.
+
+ This interface represents a hyperlink associated with a single substring
+ of text or single non-text object. Non-text objects can have either a
+ single link or a collection of links such as when the non-text object is
+ an image map.
+
+ Linked objects and anchors are implementation dependent. This interface is derived
+ from IAccessibleAction. IAccessibleAction::nActions is one greater than the
+ maximum value for the indices used with the methods of this interface.
+
+ Furthermore, the object that implements this interface has to be connected
+ implicitly or explicitly with an object that implements IAccessibleText.
+ IAccessibleHyperlink::startIndex and IAccessibleHyperlink::endIndex are
+ indices with respect to the text exposed by IAccessibleText.
+
+ This interface provides access to a single object which can have multiple actions.
+ An example is an image map which is an image with multiple links each of which is
+ associated with a separate non-overlapping area of the image. This interface could
+ also be applied to other kinds of objects with multiple actions such as "smart tags"
+ which are objects, typically strings, which have multiple actions such as
+ "Activate URI", "Bookmark URI", etc.
+
+ An interesting use case is an image map where each area is associated with multiple
+ actions, e.g. an image map of smart tags. In this case you would have to implement
+ two levels of accessible hyperlinks. The first level hyperlinks would only implement
+ anchor and anchorTarget. The anchors would all reference the image object. The
+ anchorTargets would reference the second level accessible hyperlink objects. None
+ of the IAccessibleAction methods would be implemented on the first level hyperlink
+ objects. The second level hyperlink objects would implement the IAccessibleAction
+ methods. Their anchors would also reference the image object and their anchorTargets
+ would reference URLs or the objects that would be activated.
+
+ This use case demonstrates that in some cases there is no need for IAccessibleHyperlink
+ to derive from IAccessibleAction. As a result it may be removed in a later version of
+ the IDL and it is suggested that implementations should not rely on the inheritance.
+
+*/
+[object, uuid(01C20F2B-3DD2-400f-949F-AD00BDAB1D41)]
+interface IAccessibleHyperlink : IAccessibleAction
+{
+
+ /** @brief Returns an object that represents the link anchor, as appropriate
+ for the link at the specified index.
+ @param [in] index
+ A 0 based index identifies the anchor when, as in the case of an image map,
+ there is more than one link represented by this object. The valid maximal
+ index is indicated by IAccessibleAction::nActions.
+ @param [out] anchor
+ This is an implementation dependent value. For example, for a text link this
+ method could return the substring of the containing string where the substring
+ is overridden with link behavior, and for an image link this method could return
+ an IUnknown VARIANT for IAccessibleImage. See the section about
+ @ref _variants "VARIANTs" for additional information.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT anchor
+ (
+ [in] long index,
+ [out, retval] VARIANT *anchor
+ );
+
+ /** @brief Returns an object representing the target of the link, as appropriate
+ for the link at the specified index.
+ @param [in] index
+ A 0 based index identifies the anchor when, as in the case of an image map,
+ there is more than one link represented by this object. The valid maximal
+ index is indicated by IAccessibleAction::nActions.
+ @param [out] anchorTarget
+ This is an implementation dependent value. For example this method could
+ return a BSTR VARIANT of the URI. Alternatively this method could return an
+ IUnknown VARIANT of a COM interface representing a target object to be
+ activated when the link is activated. See the section about
+ @ref _variants "VARIANTs" for additional information.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT anchorTarget
+ (
+ [in] long index,
+ [out, retval] VARIANT *anchorTarget
+ );
+
+ /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink starts.
+
+ The returned value is related to the IAccessibleText interface of the object that
+ owns this hyperlink.
+ @param [out] index
+ @retval S_OK
+ */
+ [propget] HRESULT startIndex
+ (
+ [out, retval] long *index
+ );
+
+ /** @brief Returns the 0 based character offset at which the textual representation of the hyperlink ends.
+
+ The returned value is related to the IAccessibleText interface of the object that
+ owns this hyperlink. The character at the index is not part of the hypertext.
+ @param [out] index
+ @retval S_OK
+ */
+ [propget] HRESULT endIndex
+ (
+ [out, retval] long *index
+ );
+
+ /** @brief Returns whether the target object referenced by this link is still valid.
+
+ This is a volatile state that may change without sending an appropriate event.
+ Returns TRUE if the referenced target is still valid and FALSE otherwise.
+
+ This has also been used to indicate whether or not the URI of the anchorTarget
+ is malformed.
+
+ @param [out] valid
+ If false, one or more of the object's links are invalid.
+ If true, all of the object's links are valid.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is FALSE
+ @note This method is not being used, is deprecated, and should not be implemented or
+ used. It is likely that this method will be removed in a later version of the IDL.
+ */
+ [propget] HRESULT valid
+ (
+ [out, retval] boolean *valid
+ );
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleHypertext.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+/** @brief This interface exposes information about hypertext in a document.
+
+ The %IAccessibleHypertext interface is the main interface to expose
+ hyperlinks in a document, typically a text document, that are used
+ to reference other documents. A typical implementation is to implement
+ this interface on the smallest text object such as a paragraph of text.
+*/
+[object, uuid(6B4F8BBF-F1F2-418a-B35E-A195BC4103B9)]
+interface IAccessibleHypertext : IAccessibleText
+{
+
+ /** @brief Returns the number of links and link groups contained within this hypertext
+ paragraph.
+ @param [out] hyperlinkCount
+ The number of links and link groups within this hypertext paragraph.
+ Returns 0 if there is no link.
+ @retval S_OK
+ */
+ [propget] HRESULT nHyperlinks
+ (
+ [out, retval] long *hyperlinkCount
+ );
+
+ /** @brief Returns the specified link.
+
+ The returned IAccessibleHyperlink object encapsulates the hyperlink and
+ provides several kinds of information describing it.
+ @param [in] index
+ This 0 based index specifies the hyperlink to return.
+ @param [out] hyperlink
+ If the given index is valid, i.e. lies in the interval from 0 to the number
+ of links minus one, a reference to the specified hyperlink object is returned.
+ If the index is invalid then a NULL pointer is returned.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT hyperlink
+ (
+ [in] long index,
+ [out, retval] IAccessibleHyperlink **hyperlink
+ );
+
+ /** @brief Returns the index of the hyperlink that is associated with this character index.
+
+ This is the case when a link spans the given character index.
+ @param [in] charIndex
+ A 0 based index of the character for which to return the link index. If
+ IAccessibleText is used to represent the text containing the link, then the
+ character index is only valid if it is greater than or equal to zero and
+ lower than the number of characters in the text.
+ @param [out] hyperlinkIndex
+ Returns the 0 based index of the hyperlink that is associated with this
+ character index, or -1 if charIndex is not on a link.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is -1
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT hyperlinkIndex
+ (
+ [in] long charIndex,
+ [out, retval] long *hyperlinkIndex
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleHypertext2.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+/** @brief This interface exposes information about hypertext in a document.
+
+ The %IAccessibleHypertext2 interface extends the functinality of the
+ %IAccessibleHypertext inteface.
+*/
+[object, uuid(CF64D89F-8287-4B44-8501-A827453A6077)]
+interface IAccessibleHypertext2 : IAccessibleHypertext
+{
+
+ /** @brief Returns the links for this object.
+
+ The returned IAccessibleHyperlink objects encapsulate the hyperlink and
+ provides several kinds of information describing it.
+
+ @param [out] hyperlinks
+ This array is allocated by the server. The client must free it with CoTaskMemFree.
+ @param [out] nHyperlinks
+ The number of links returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are no links, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT hyperlinks
+ (
+ [out, size_is(,*nHyperlinks)] IAccessibleHyperlink ***hyperlinks,
+ [out, retval] long *nHyperlinks
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleTable.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+/** @brief This interface gives access to a two-dimensional table.
+
+ Typically all accessible objects that represent cells or cell-clusters of a table
+ will be at the same time children of the table. In this case IAccessible2::indexInParent
+ will return the child index which then can be used when calling IAccessibleTable::rowIndex
+ and IAccessibleTable::columnIndex.
+
+ However, in some cases that kind of implementation will not be possible. When
+ the table cells are not direct children of a table, the object representing
+ the cell can define a "table-cell-index" object attribute identifying the 0
+ based table cell index. This object attribute is obtained by parsing the
+ attribute string returned by IAccessible2::attributes. The "table-cell-index"
+ attribute can be used just like a child index of the typical case. ATs should
+ first test for the presence of the "table-cell-index" attribute and if it is not
+ present then IAccessible2::indexInParent can be used as in the typical case
+ where cells are direct children of the table.
+
+ The range of valid coordinates for this interface are implementation dependent.
+ However, that range includes at least the intervals from the from the first row
+ or column with the index 0 up to the last (but not including) used row or column
+ as returned by IAccessibleTable::nRows and IAccessibleTable::nColumns.
+
+ Note that newer implementations are now using IAccessibleTable2 and IAccessibleTableCell
+ rather than this interface.
+*/
+[object, uuid(35AD8070-C20C-4fb4-B094-F4F7275DD469)]
+interface IAccessibleTable : IUnknown
+{
+
+ /** @brief Returns the accessible object at the specified row and column in
+ the table. This object could be an IAccessible or an IAccessible2.
+ @param [in] row
+ The 0 based row index for which to retrieve the cell.
+ @param [in] column
+ The 0 based column index for which to retrieve the cell.
+ @param [out] accessible
+ If both row and column index are valid then the corresponding accessible
+ object is returned that represents the requested cell regardless of whether
+ the cell is currently visible (on the screen).
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
+ */
+ [propget] HRESULT accessibleAt
+ (
+ [in] long row,
+ [in] long column,
+ [out, retval] IUnknown **accessible
+ );
+
+ /** @brief Returns the caption for the table. The returned object could be
+ an IAccessible or an IAccessible2.
+ @param [out] accessible
+ If the table has a caption then a reference to it is returned, else a NULL
+ pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT caption
+ (
+ [out, retval] IUnknown **accessible
+ );
+
+ /** @brief Translates the given row and column indexes into the corresponding cell index.
+ @param [in] rowIndex
+ 0 based row index for the cell.
+ @param [in] columnIndex
+ 0 based column index for the cell.
+ @param [out] cellIndex
+ Returns the 0 based index of the cell at the specified row and column indexes.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is 0
+ @note The returned value is not necessarily a child index of the immediate parent.
+ In cases where the table cells are not direct children of the table the index
+ is actually the cell index, i.e. conceptually it's an index into a one dimensional
+ array of cells laid out in row order.
+ */
+ [propget] HRESULT childIndex
+ (
+ [in] long rowIndex,
+ [in] long columnIndex,
+ [out, retval] long *cellIndex
+ );
+
+ /** @brief Returns the description text of the specified column in the table.
+ @param [in] column
+ The 0 based index of the column for which to retrieve the description.
+ @param [out] description
+ Returns the description text of the specified column in the table if such a
+ description exists. Otherwise a NULL pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
+ */
+ [propget] HRESULT columnDescription
+ (
+ [in] long column,
+ [out, retval] BSTR *description
+ );
+
+ /** @brief Returns the number of columns occupied by the accessible object
+ at the specified row and column in the table.
+
+ The result is greater than 1 if the specified cell spans multiple columns.
+ @param [in] row
+ 0 based row index of the accessible for which to return the column extent.
+ @param [in] column
+ 0 based column index of the accessible for which to return the column extent.
+ @param [out] nColumnsSpanned
+ Returns the 1 based column extent of the specified cell.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is 0
+ */
+ [propget] HRESULT columnExtentAt
+ (
+ [in] long row,
+ [in] long column,
+ [out, retval] long *nColumnsSpanned
+ );
+
+ /** @brief Returns the column headers as an %IAccessibleTable object.
+
+ Content and size of the returned table are implementation dependent.
+ @param [out] accessibleTable
+ The column header
+ @param [out] startingRowIndex
+ The 0 based row index where the header starts, usually 0.
+ @retval S_OK
+ @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT columnHeader
+ (
+ [out] IAccessibleTable **accessibleTable,
+ [out, retval] long *startingRowIndex
+ );
+
+ /** @brief Translates the given cell index into the corresponding column index.
+ @param [in] cellIndex
+ 0 based index of the cell in the parent or closest ancestor table. Typically this
+ is the value returned from IAccessible2::indexInParent, but in the case where the
+ table cells are not direct children of the table this is the cell index specified
+ by the "table-cell-index" object attribute obtained from parsing the attributes
+ string returned by calling IAccessible2::attributes on the cell object.
+ @param [out] columnIndex
+ Returns the 0 based column index of the cell of the specified child or the index of
+ the first column if the child spans multiple columns.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is 0
+ */
+ [propget] HRESULT columnIndex
+ (
+ [in] long cellIndex,
+ [out, retval] long *columnIndex
+ );
+
+ /** @brief Returns the total number of columns in table
+ @param [out] columnCount
+ Number of columns in table (including columns outside the current viewport)
+ @retval S_OK
+ */
+ [propget] HRESULT nColumns
+ (
+ [out, retval] long *columnCount
+ );
+
+ /** @brief Returns the total number of rows in table
+ @param [out] rowCount
+ Number of rows in table (including rows outside the current viewport)
+ @retval S_OK
+ */
+ [propget] HRESULT nRows
+ (
+ [out, retval] long *rowCount
+ );
+
+ /** @brief Returns the total number of selected cells
+ @param [out] cellCount
+ Number of cells currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedChildren
+ (
+ [out, retval] long *cellCount
+ );
+
+ /** @brief Returns the total number of selected columns
+ @param [out] columnCount
+ Number of columns currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedColumns
+ (
+ [out, retval] long *columnCount
+ );
+
+ /** @brief Returns the total number of selected rows
+ @param [out] rowCount
+ Number of rows currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedRows
+ (
+ [out, retval] long *rowCount
+ );
+
+ /** @brief Returns the description text of the specified row in the table.
+ @param [in] row
+ The 0 based index of the row for which to retrieve the description.
+ @param [out] description
+ Returns the description text of the specified row in the table if such a
+ description exists. Otherwise a NULL pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed, [out] value is NULL
+ */
+ [propget] HRESULT rowDescription
+ (
+ [in] long row,
+ [out, retval] BSTR *description
+ );
+
+ /** @brief Returns the number of rows occupied by the accessible object
+ at the specified row and column in the table.
+
+ The result is greater than 1 if the specified cell spans multiple rows.
+ @param [in] row
+ 0 based row index of the accessible for which to return the row extent.
+ @param [in] column
+ 0 based column index of the accessible for which to return the row extent.
+ @param [out] nRowsSpanned
+ Returns the row extent of the specified cell.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is 0
+ */
+ [propget] HRESULT rowExtentAt
+ (
+ [in] long row,
+ [in] long column,
+ [out, retval] long *nRowsSpanned
+ );
+
+ /** @brief Returns the row headers as an %IAccessibleTable object.
+
+ Content and size of the returned table are implementation dependent.
+ @param [out] accessibleTable
+ The row header.
+ @param [out] startingColumnIndex
+ The 0 based column index where the header starts, usually 0.
+ @retval S_OK
+ @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT rowHeader
+ (
+ [out] IAccessibleTable **accessibleTable,
+ [out, retval] long *startingColumnIndex
+ );
+
+ /** @brief Translates the given cell index into a row index.
+ @param [in] cellIndex
+ 0 based index of the cell in the parent or closest ancestor table. Typically this
+ is the value returned from IAccessible2::indexInParent, but in the case where the
+ table cells are not direct children of the table this is the cell index specified
+ by the "table-cell-index" object attribute obtained from parsing the attributes
+ string returned by calling IAccessible2::attributes on the cell object.
+ @param [out] rowIndex
+ 0 based row index
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is 0
+ */
+ [propget] HRESULT rowIndex
+ (
+ [in] long cellIndex,
+ [out, retval] long *rowIndex
+ );
+
+ /** @brief Returns a list of cell indexes currently selected (0 based).
+ @param [in] maxChildren
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] children
+ An array of cell indexes of selected cells (each index is 0 based),
+ allocated by the server. The client must free it with CoTaskMemFree.
+ @param [out] nChildren
+ The number of cell indexes returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedChildren
+ (
+ [in] long maxChildren,
+ [out, size_is(,maxChildren), length_is(,*nChildren)] long **children,
+ [out, retval] long *nChildren
+ );
+
+ /** @brief Returns a list of column indexes currently selected (0 based).
+ @param [in] maxColumns
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] columns
+ An array of column indexes of selected columns (each index is 0 based), allocated
+ by the server. The client must free it with CoTaskMemFree.
+ @param [out] nColumns
+ The number of column indexes returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedColumns
+ (
+ [in] long maxColumns,
+ [out, size_is(,maxColumns), length_is(,*nColumns)] long **columns,
+ [out, retval] long *nColumns
+ );
+
+ /** @brief Returns a list of row indexes currently selected (0 based).
+ @param [in] maxRows
+ This parameter is ignored. Refer to @ref _arrayConsideration
+ "Special Consideration when using Arrays" for more details.
+ @param [out] rows
+ An array of row indexes of selected rows (each index is 0 based), allocated
+ by the server. The client must free it with CoTaskMemFree.
+ @param [out] nRows
+ The number of row indexes returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedRows
+ (
+ [in] long maxRows,
+ [out, size_is(,maxRows), length_is(,*nRows)] long **rows,
+ [out, retval] long *nRows
+ );
+
+ /** @brief Returns the summary description of the table. The returned object could be
+ an IAccessible or an IAccessible2.
+ @param [out] accessible
+ Returns a reference to an implementation dependent accessible object
+ representing the table's summary or a NULL pointer if the table
+ does not support a summary.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT summary
+ (
+ [out, retval] IUnknown **accessible
+ );
+
+ /** @brief Returns a boolean value indicating whether the specified column is
+ completely selected.
+ @param [in] column
+ 0 based index of the column for which to determine whether it is selected.
+ @param [out] isSelected
+ Returns TRUE if the specified column is selected completely and FALSE otherwise.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
+ */
+ [propget] HRESULT isColumnSelected
+ (
+ [in] long column,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Returns a boolean value indicating whether the specified row is completely
+ selected.
+ @param [in] row
+ 0 based index of the row for which to determine whether it is selected.
+ @param [out] isSelected
+ Returns TRUE if the specified row is selected completely and FALSE otherwise.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
+ */
+ [propget] HRESULT isRowSelected
+ (
+ [in] long row,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Returns a boolean value indicating whether the specified cell is selected.
+ @param [in] row
+ 0 based index of the row for the cell to determine whether it is selected.
+ @param [in] column
+ 0 based index of the column for the cell to determine whether it is selected.
+ @param [out] isSelected
+ Returns TRUE if the specified cell is selected and FALSE otherwise.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] value is FALSE
+ */
+ [propget] HRESULT isSelected
+ (
+ [in] long row,
+ [in] long column,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Selects a row and unselects all previously selected rows.
+ @param [in] row
+ 0 based index of the row to be selected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT selectRow
+ (
+ [in] long row
+ );
+
+ /** @brief Selects a column and unselects all previously selected columns.
+ @param [in] column
+ 0 based index of the column to be selected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT selectColumn
+ (
+ [in] long column
+ );
+
+ /** @brief Unselects one row, leaving other selected rows selected (if any).
+ @param [in] row
+ 0 based index of the row to be unselected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT unselectRow
+ (
+ [in] long row
+ );
+
+ /** @brief Unselects one column, leaving other selected columns selected (if any).
+ @param [in] column
+ 0 based index of the column to be unselected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT unselectColumn
+ (
+ [in] long column
+ );
+
+ /** @brief Given a cell index, gets the row and column indexes and extents of a cell
+ and whether or not it is selected.
+
+ This is a convenience function. It is not mandatory to implement it.
+ @param [in] index
+ 0 based index of this cell in the table.
+ @param [out] row
+ 0 based row index.
+ @param [out] column
+ 0 based column index.
+ @param [out] rowExtents
+ Number of cells spanned by this cell in this row.
+ @param [out] columnExtents
+ Number of cells spanned by this cell in this column.
+ @param [out] isSelected
+ Indicates if the specified cell is selected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed, [out] values are 0s and FALSE respectively
+ */
+ [propget] HRESULT rowColumnExtentsAtIndex
+ (
+ [in] long index,
+ [out] long *row,
+ [out] long *column,
+ [out] long *rowExtents,
+ [out] long *columnExtents,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Returns the type and extents describing how a table changed.
+
+ Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
+
+ This data is only guaranteed to be valid while the thread notifying the event
+ continues. Once the handler has returned, the validity of the data depends on
+ how the server manages the life cycle of its objects. Also, note that the server
+ may have different life cycle management strategies for controls depending on
+ whether or not a control manages its children. Lists, trees, and tables can have
+ a large number of children and thus it's possible that the child objects for those
+ controls would only be created as needed. Servers should document their life cycle
+ strategy as this will be of interest to assistive technology or script engines
+ accessing data out of process or from other threads. Servers only need to save the
+ most recent row and column values associated with the change and a scope of the
+ entire application is adequate.
+
+ @param [out] modelChange
+ A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT modelChange
+ (
+ [out, retval] IA2TableModelChange *modelChange
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleTable2.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2012 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+
+/** @brief This interface gives access to a two-dimensional table.
+
+ Please also refer to the IAccessibleTableCell interface.
+
+ If you want to support older applications you should also support the
+ IAccessibleTable inteface.
+*/
+[object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)]
+interface IAccessibleTable2 : IUnknown
+{
+
+ /** @brief Returns the accessible object at the specified row and column in
+ the table. This object could be an IAccessible or an IAccessible2.
+ @param [in] row
+ The 0 based row index for which to retrieve the cell.
+ @param [in] column
+ The 0 based column index for which to retrieve the cell.
+ @param [out] cell
+ If both row and column index are valid then the corresponding accessible
+ object is returned that represents the requested cell regardless of whether
+ the cell is currently visible (on the screen).
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT cellAt
+ (
+ [in] long row,
+ [in] long column,
+ [out, retval] IUnknown **cell
+ );
+
+ /** @brief Returns the caption for the table. The returned object could be
+ an IAccessible or an IAccessible2.
+ @param [out] accessible
+ If the table has a caption then a reference to it is returned, else a NULL
+ pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @deprecated use a describedBy relation
+ */
+ [propget] HRESULT caption
+ (
+ [out, retval] IUnknown **accessible
+ );
+
+ /** @brief Returns the description text of the specified column in the table.
+ @param [in] column
+ The 0 based index of the column for which to retrieve the description.
+ @param [out] description
+ Returns the description text of the specified column in the table if such a
+ description exists. Otherwise a NULL pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT columnDescription
+ (
+ [in] long column,
+ [out, retval] BSTR *description
+ );
+
+
+ /** @brief Returns the total number of columns in table
+ @param [out] columnCount
+ Number of columns in table (including columns outside the current viewport)
+ @retval S_OK
+ */
+ [propget] HRESULT nColumns
+ (
+ [out, retval] long *columnCount
+ );
+
+ /** @brief Returns the total number of rows in table
+ @param [out] rowCount
+ Number of rows in table (including rows outside the current viewport)
+ @retval S_OK
+ */
+ [propget] HRESULT nRows
+ (
+ [out, retval] long *rowCount
+ );
+
+ /** @brief Returns the total number of selected cells
+ @param [out] cellCount
+ Number of cells currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedCells
+ (
+ [out, retval] long *cellCount
+ );
+
+ /** @brief Returns the total number of selected columns
+ @param [out] columnCount
+ Number of columns currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedColumns
+ (
+ [out, retval] long *columnCount
+ );
+
+ /** @brief Returns the total number of selected rows
+ @param [out] rowCount
+ Number of rows currently selected
+ @retval S_OK
+ */
+ [propget] HRESULT nSelectedRows
+ (
+ [out, retval] long *rowCount
+ );
+
+ /** @brief Returns the description text of the specified row in the table.
+ @param [in] row
+ The 0 based index of the row for which to retrieve the description.
+ @param [out] description
+ Returns the description text of the specified row in the table if such a
+ description exists. Otherwise a NULL pointer is returned.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT rowDescription
+ (
+ [in] long row,
+ [out, retval] BSTR *description
+ );
+
+ /** @brief Returns a list of accessibles currently selected.
+ @param [out] cells
+ Pointer to an array of references to selected accessibles. The array is
+ allocated by the server with CoTaskMemAlloc and freed by the client with
+ CoTaskMemFree.
+ @param [out] nSelectedCells
+ The number of accessibles returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedCells
+ (
+ [out, size_is(,*nSelectedCells)] IUnknown ***cells,
+ [out, retval] long *nSelectedCells
+ );
+
+ /** @brief Returns a list of column indexes currently selected (0 based).
+ @param [out] selectedColumns
+ A pointer to an array of column indexes of selected columns (each index is
+ 0 based). The array is allocated by the server with CoTaskMemAlloc and
+ freed by the client with CoTaskMemFree.
+ @param [out] nColumns
+ The number of column indexes returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedColumns
+ (
+ [out, size_is(,*nColumns)] long **selectedColumns,
+ [out, retval] long *nColumns
+ );
+
+ /** @brief Returns a list of row indexes currently selected (0 based).
+ @param [out] selectedRows
+ An array of row indexes of selected rows (each index is 0 based). The array
+ is allocated by the server with CoTaskMemAlloc and freed by the client with
+ CoTaskMemFree.
+ @param [out] nRows
+ The number of row indexes returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT selectedRows
+ (
+ [out, size_is(,*nRows)] long **selectedRows,
+ [out, retval] long *nRows
+ );
+
+ /** @brief Returns the summary description of the table. The returned object could be
+ an IAccessible or an IAccessible2.
+ @param [out] accessible
+ Returns a reference to an implementation dependent accessible object
+ representing the table's summary or a NULL pointer if the table
+ does not support a summary.
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ @deprecated Use the labeledBy relation
+ */
+ [propget] HRESULT summary
+ (
+ [out, retval] IUnknown **accessible
+ );
+
+ /** @brief Returns a boolean value indicating whether the specified column is
+ completely selected.
+ @param [in] column
+ 0 based index of the column for which to determine whether it is selected.
+ @param [out] isSelected
+ Returns TRUE if the specified column is selected completely and FALSE otherwise.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT isColumnSelected
+ (
+ [in] long column,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Returns a boolean value indicating whether the specified row is completely
+ selected.
+ @param [in] row
+ 0 based index of the row for which to determine whether it is selected.
+ @param [out] isSelected
+ Returns TRUE if the specified row is selected completely and FALSE otherwise.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ [propget] HRESULT isRowSelected
+ (
+ [in] long row,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Selects a row and unselects all previously selected rows.
+
+ The behavior should mimic that of the application, but for those applications
+ which do not have a means in the GUI to select a full row of cells the behavior
+ should be as follows: First any selected rows in the table are unselected. Then
+ the entire row of cells for the specified row is selected. If any of the
+ cells in the selected row span additional rows, the cells in those rows
+ are also selected.
+ @param [in] row
+ 0 based index of the row to be selected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT selectRow
+ (
+ [in] long row
+ );
+
+ /** @brief Selects a column and unselects all previously selected columns.
+
+ The behavior should mimic that of the application, but for those applications
+ which do not have a means in the GUI to select a full column of cells the behavior
+ should be as follows: First any selected columns in the table are unselected. Then
+ the entire column of cells for the specified column is selected. If any of the
+ cells in the selected column span additional columns, the cells in those columns
+ are also selected.
+ @param [in] column
+ 0 based index of the column to be selected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT selectColumn
+ (
+ [in] long column
+ );
+
+ /** @brief Unselects one row, leaving other selected rows selected (if any).
+
+ The behavior should mimic that of the application, but for those applications
+ which do not have a means in the GUI to unselect a full row of cells the
+ behavior should be as follows: The entire row of cells for the specified
+ row is unselected. If any of the cells in the selected row span additional
+ rows, the cells in those rows are also unselected.
+ @param [in] row
+ 0 based index of the row to be unselected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT unselectRow
+ (
+ [in] long row
+ );
+
+ /** @brief Unselects one column, leaving other selected columns selected (if any).
+
+ The behavior should mimic that of the application, but for those applications
+ which do not have a means in the GUI to unselect a full column of cells the
+ behavior should be as follows: The entire column of cells for the specified
+ column is unselected. If any of the cells in the selected column span additional
+ columns, the cells in those columns are also unselected.
+ @param [in] column
+ 0 based index of the column to be unselected.
+ @retval S_OK
+ @retval E_INVALIDARG if bad [in] passed
+ */
+ HRESULT unselectColumn
+ (
+ [in] long column
+ );
+
+ /** @brief Returns the type and extents describing how a table changed.
+
+ Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
+
+ This data is only guaranteed to be valid while the thread notifying the event
+ continues. Once the handler has returned, the validity of the data depends on
+ how the server manages the life cycle of its objects. Also, note that the server
+ may have different life cycle management strategies for controls depending on
+ whether or not a control manages its children. Lists, trees, and tables can have
+ a large number of children and thus it's possible that the child objects for those
+ controls would only be created as needed. Servers should document their life cycle
+ strategy as this will be of interest to assistive technology or script engines
+ accessing data out of process or from other threads. Servers only need to save the
+ most recent row and column values associated with the change and a scope of the
+ entire application is adequate.
+
+ @param [out] modelChange
+ A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT modelChange
+ (
+ [out, retval] IA2TableModelChange *modelChange
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleTableCell.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2013 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface gives access to the cells of a two-dimensional table.
+
+ Please also refer to the IAccessibleTable2 interface.
+
+*/
+[object, uuid(594116B1-C99F-4847-AD06-0A7A86ECE645)]
+interface IAccessibleTableCell : IUnknown
+{
+
+ /** @brief Returns the number of columns occupied by this cell accessible.
+
+ The result is greater than 1 if the specified cell spans multiple columns.
+ @param [out] nColumnsSpanned
+ Returns the 1 based column extent of the specified cell.
+ @retval S_OK
+ */
+ [propget] HRESULT columnExtent
+ (
+ [out, retval] long *nColumnsSpanned
+ );
+
+ /** @brief Returns the column headers as an array of cell accessibles.
+
+ @param [out] cellAccessibles
+ Pointer to an array of references to cell accessibles. The array is allocated
+ by the server. The client must free it with CoTaskMemFree.
+ @param [out] nColumnHeaderCells
+ The number of accessibles returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT columnHeaderCells
+ (
+ [out, size_is(,*nColumnHeaderCells)] IUnknown ***cellAccessibles,
+ [out, retval] long *nColumnHeaderCells
+ );
+
+ /** @brief Translates this cell accessible into the corresponding column index.
+
+ @param [out] columnIndex
+ Returns the 0 based column index of the cell of the specified cell or the index of
+ the first column if the cell spans multiple columns.
+ @retval S_OK
+ */
+ [propget] HRESULT columnIndex
+ (
+ [out, retval] long *columnIndex
+ );
+
+ /** @brief Returns the number of rows occupied by this cell accessible.
+
+ @param [out] nRowsSpanned
+ Returns the row extent of the specified cell.
+ @retval S_OK
+ */
+ [propget] HRESULT rowExtent
+ (
+ [out, retval] long *nRowsSpanned
+ );
+
+ /** @brief Returns the row headers as an array of cell accessibles.
+
+ @param [out] cellAccessibles
+ Pointer to an array of references to cell accessibles. The array is allocated
+ by the server. The client must free it with CoTaskMemFree.
+ @param [out] nRowHeaderCells
+ The number of accessibles returned; the size of the returned array.
+ @retval S_OK
+ @retval S_FALSE if there is no header, [out] values are NULL and 0 respectively
+ */
+ [propget] HRESULT rowHeaderCells
+ (
+ [out, size_is(,*nRowHeaderCells)] IUnknown ***cellAccessibles,
+ [out, retval] long *nRowHeaderCells
+ );
+
+ /** @brief Translates this cell accessible into the corresponding row index.
+
+ @param [out] rowIndex
+ Returns the 0 based row index of the specified cell or the index of
+ the first row if the cell spans multiple rows.
+ @retval S_OK
+ */
+ [propget] HRESULT rowIndex
+ (
+ [out, retval] long *rowIndex
+ );
+
+ /** @brief Returns a boolean value indicating whether this cell is selected.
+
+ @param [out] isSelected
+ Returns TRUE if the specified cell is selected and FALSE otherwise.
+ @retval S_OK
+ */
+ [propget] HRESULT isSelected
+ (
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Gets the row and column indexes and extents of this cell accessible
+ and whether or not it is selected.
+
+ This is a convenience function. It is not mandatory to implement it.
+ @param [out] row
+ 0 based row index.
+ @param [out] column
+ 0 based column index.
+ @param [out] rowExtents
+ Number of cells spanned by this cell in this row.
+ @param [out] columnExtents
+ Number of cells spanned by this cell in this column.
+ @param [out] isSelected
+ Indicates if the specified cell is selected.
+ @retval S_OK
+ */
+ [propget] HRESULT rowColumnExtents
+ (
+ [out] long *row,
+ [out] long *column,
+ [out] long *rowExtents,
+ [out] long *columnExtents,
+ [out, retval] boolean *isSelected
+ );
+
+ /** @brief Returns a reference to the accessbile of the containing table.
+
+ @param [out] table
+ Returns a reference to the IUnknown of the containing table.
+ @retval S_OK
+ */
+ [propget] HRESULT table
+ (
+ [out, retval] IUnknown **table
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleImage.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface represents images and icons.
+
+ This interface is used for a representation of images like icons on buttons.
+ %IAccessibleImage only needs to be implemented in certain situations. Some
+ examples are:
+ <ol>
+ <li>The accessible name and description are not enough to fully
+ describe the image, e.g. when the accessible description is used to define the
+ behavior of an actionable image and the image itself conveys semantically
+ significant information.
+ <li>The user can edit the content that includes an
+ image and therefore the user needs to be able to review the image's position.
+ </ol>
+*/
+[object, uuid(FE5ABB3D-615E-4f7b-909F-5F0EDA9E8DDE)]
+interface IAccessibleImage : IUnknown
+{
+ /** @brief Returns the localized description of the image.
+ @param [out] description
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT description
+ (
+ [out, retval] BSTR *description
+ );
+
+ /** @brief Returns the coordinates of the image.
+ @param [in] coordinateType
+ Specifies whether the returned coordinates should be relative to the screen or the parent object.
+ @param [out] x
+ @param [out] y
+ @retval S_OK
+ */
+ [propget] HRESULT imagePosition
+ (
+ [in] enum IA2CoordinateType coordinateType,
+ [out] long *x,
+ [out, retval] long *y
+ );
+
+ /** @brief Returns the size of the image in units specified by parent's coordinate system.
+ @param [out] height
+ @param [out] width
+ @retval S_OK
+ */
+
+ [propget] HRESULT imageSize
+ (
+ [out] long *height,
+ [out, retval] long *width
+ );
+}
+/*************************************************************************
+ *
+ * File Name (AccessibleEventID.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+/** %IAccessible2 specific event constants
+
+ This enum defines the event IDs fired by %IAccessible2 objects. The event IDs
+ are in addition to those used by MSAA.
+*/
+enum IA2EventID {
+
+ /** The change of the number or attributes of actions of an accessible
+ object is signaled by events of this type.
+ */
+ IA2_EVENT_ACTION_CHANGED = 0x101,
+
+ /** <b>Deprecated.</b> The active descendant of a component has changed.
+
+ Note: This event constant is misspelled and thus is deprecated and will be
+ removed in a later version. Please use the correctly spelled version which
+ follows.
+ */
+ IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
+
+ /** The active descendant of a component has changed. The active descendant
+ is used in objects with transient children.
+
+ Note: Due to the fact that MSAA's WinEvents don't allow the active child index
+ to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event the manages
+ descendants scheme can't be used. Instead the active child object has to fire
+ MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be
+ added to provide for event specific data to be passed with the event. At that
+ time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
+ IA2_STATE_MANAGES_DESCENDANTS state would be useful.
+ */
+ IA2_EVENT_ACTIVE_DESCENDANT_CHANGED = IA2_EVENT_ACTIVE_DECENDENT_CHANGED,
+
+ /** The document wide attributes of the document object have changed.
+ */
+ IA2_EVENT_DOCUMENT_ATTRIBUTE_CHANGED,
+
+ /** The contents of the document have changed.
+ */
+ IA2_EVENT_DOCUMENT_CONTENT_CHANGED,
+
+ /** The loading of the document has completed.
+ */
+ IA2_EVENT_DOCUMENT_LOAD_COMPLETE,
+
+ /** The loading of the document was interrupted.
+ */
+ IA2_EVENT_DOCUMENT_LOAD_STOPPED,
+
+ /** The document contents are being reloaded.
+ */
+ IA2_EVENT_DOCUMENT_RELOAD,
+
+ /** The ending index of this link within the containing string has changed.
+ */
+ IA2_EVENT_HYPERLINK_END_INDEX_CHANGED,
+
+ /** The number of anchors associated with this hyperlink object has changed.
+ */
+ IA2_EVENT_HYPERLINK_NUMBER_OF_ANCHORS_CHANGED,
+
+ /** The hyperlink selected state changed from selected to unselected or
+ from unselected to selected.
+ */
+ IA2_EVENT_HYPERLINK_SELECTED_LINK_CHANGED,
+
+ /** One of the links associated with the hypertext object has been activated.
+ */
+ IA2_EVENT_HYPERTEXT_LINK_ACTIVATED,
+
+ /** One of the links associated with the hypertext object has been selected.
+ */
+ IA2_EVENT_HYPERTEXT_LINK_SELECTED,
+
+ /** The starting index of this link within the containing string has changed.
+ */
+ IA2_EVENT_HYPERLINK_START_INDEX_CHANGED,
+
+ /** Focus has changed from one hypertext object to another, or focus moved
+ from a non-hypertext object to a hypertext object, or focus moved from a
+ hypertext object to a non-hypertext object.
+ */
+ IA2_EVENT_HYPERTEXT_CHANGED,
+
+ /** The number of hyperlinks associated with a hypertext object changed
+ */
+ IA2_EVENT_HYPERTEXT_NLINKS_CHANGED,
+
+ /** An object's attributes changed.
+ Also see ::IA2_EVENT_TEXT_ATTRIBUTE_CHANGED.
+ */
+ IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED,
+
+ /** A slide changed in a presentation document or a page boundary was
+ crossed in a word processing document.
+ */
+ IA2_EVENT_PAGE_CHANGED,
+
+ /** The caret moved from one section to the next.
+ */
+ IA2_EVENT_SECTION_CHANGED,
+
+ /** A table caption changed.
+ */
+ IA2_EVENT_TABLE_CAPTION_CHANGED,
+
+ /** A table's column description changed.
+ */
+ IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED,
+
+ /** A table's column header changed.
+ */
+ IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED,
+
+ /** A table's data changed.
+ */
+ IA2_EVENT_TABLE_MODEL_CHANGED,
+
+ /** A table's row description changed.
+ */
+ IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED,
+
+ /** A table's row header changed.
+ */
+ IA2_EVENT_TABLE_ROW_HEADER_CHANGED,
+
+ /** A table's summary changed.
+ */
+ IA2_EVENT_TABLE_SUMMARY_CHANGED,
+
+ /** A text object's attributes changed.
+ Also see ::IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED.
+ */
+ IA2_EVENT_TEXT_ATTRIBUTE_CHANGED,
+
+ /** The caret has moved to a new position.
+ */
+ IA2_EVENT_TEXT_CARET_MOVED,
+
+ /** <b>Deprecated.</b> This event is equivalent to ::IA2_EVENT_TEXT_UPDATED.
+ */
+ IA2_EVENT_TEXT_CHANGED,
+
+ /** The caret moved from one column to the next.
+ */
+ IA2_EVENT_TEXT_COLUMN_CHANGED,
+
+ /** Text was inserted.
+ */
+ IA2_EVENT_TEXT_INSERTED,
+
+ /** Text was removed.
+ */
+ IA2_EVENT_TEXT_REMOVED,
+
+ /** This event indicates general text changes, i.e. changes to text that are
+ exposed through the IAccessibleText interface. For compatibility with ATK/AT-SPI
+ which does not have an equivalent event, servers can alternatively fire
+ ::IA2_EVENT_TEXT_REMOVED and ::IA2_EVENT_TEXT_INSERTED.
+ */
+ IA2_EVENT_TEXT_UPDATED,
+
+ /** The text selection changed. Later versions of Microsoft development environments
+ have an equivalent event identified, EVENT_OBJECT_TEXTSELECTIONCHANGED. Servers
+ should use that if it is available and use IA2_EVENT_TEXT_SELECTION_CHANGED otherwise.
+ Clients should be prepared to respond to either event.
+
+ */
+ IA2_EVENT_TEXT_SELECTION_CHANGED,
+
+ /** A visible data event indicates the change of the visual appearance
+ of an accessible object. This includes for example most of the
+ attributes available via the IAccessibleComponent interface.
+ */
+ IA2_EVENT_VISIBLE_DATA_CHANGED
+
+};
+/*************************************************************************
+ *
+ * File Name (AccessibleApplication.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2010 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+
+/** @brief This interface gives access to the application's name and version information.
+
+ This interface provides the AT with the information it needs to differentiate
+ this application from other applications, from other versions of this
+ application, or from other versions of this application running on different
+ versions of an accessibility bridge or accessibility toolkit.
+
+ Servers implementing IAccessible2 should provide access to the %IAccessibleApplication
+ interface via QueryService from any object so that ATs can easily determine specific
+ information about the application such as its name or version.
+*/
+[object, uuid(D49DED83-5B25-43F4-9B95-93B44595979E)]
+interface IAccessibleApplication : IUnknown
+{
+
+ /** @brief Returns the application name.
+ @param [out] name
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT appName
+ (
+ [out, retval] BSTR *name
+ );
+
+ /** @brief Returns the application version.
+ @param [out] version
+ The version string must not contain levels when it is know beforehand that
+ this information will never require a change in a client's behavior.
+ For example, use "3.6.0" rather than "3.6.0.v201005131500".
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT appVersion
+ (
+ [out, retval] BSTR *version
+ );
+
+ /** @brief Returns the toolkit/bridge name.
+ @param [out] name
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT toolkitName
+ (
+ [out, retval] BSTR *name
+ );
+
+ /** @brief Returns the toolkit/bridge version.
+ @param [out] version
+ The version string must not contain levels when it is know beforehand that
+ this information will never require a change in a client's behavior.
+ For example, use "3.6.0" rather than "3.6.0.v201005131500".
+ @retval S_OK
+ @retval S_FALSE if there is nothing to return, [out] value is NULL
+ */
+ [propget] HRESULT toolkitVersion
+ (
+ [out, retval] BSTR *version
+ );
+
+}
+
+/*************************************************************************
+ *
+ * File Name (AccessibleDocument.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2013 Linux Foundation
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+
+
+
+
+/** @brief This interface represents documents.
+
+ This interface is used for a representation of documents.
+*/
+[object, uuid(C48C7FCF-4AB5-4056-AFA6-902D6E1D1149)]
+interface IAccessibleDocument : IUnknown
+{
+ /** @brief Returns the most recently used anchor target within a document.
+
+ A document's most recently targeted in-page anchor is returned. A typical use
+ of this method is to fetch the anchor target within an HTML document. In this
+ case anchor targets are those which have been defined with the &lt;a&gt; tag.
+
+ @param [out] accessible
+ @retval S_OK
+ @retval S_FALSE if there are no existing valid anchor targets, [out] value is NULL.
+ */
+ [propget] HRESULT anchorTarget
+ (
+ [out, retval] IUnknown **accessible
+ );
+
+}
+/*************************************************************************
+ *
+ * File Name (IA2TypeLibrary.idl)
+ *
+ * IAccessible2 IDL Specification
+ *
+ * Copyright (c) 2007, 2012 Linux Foundation
+ * Copyright (c) 2006 IBM Corporation
+ * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
+ * All rights reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * 3. Neither the name of the Linux Foundation nor the names of its
+ * contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This BSD License conforms to the Open Source Initiative "Simplified
+ * BSD License" as published at:
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
+ * mark may be used in accordance with the Linux Foundation Trademark
+ * Policy to indicate compliance with the IAccessible2 specification.
+ *
+ ************************************************************************/
+
+// This is not a standalone file. It is to be appended to the end of the
+// merged IDL file.
+
+cpp_quote("")
+cpp_quote("// Type Library Definitions")
+cpp_quote("")
+
+[
+ uuid(CE3F726E-D1D3-44FE-B995-FF1DB3B48B2B),
+ helpstring("IAccessible2 Type Library"),
+ version(1.3),
+ hidden
+]
+
+library IAccessible2Lib
+{
+ importlib ("stdole2.tlb");
+ importlib ("oleacc.dll");
+ interface IAccessible2;
+ interface IAccessible2_2;
+ interface IAccessibleAction;
+ interface IAccessibleApplication;
+ interface IAccessibleComponent;
+ interface IAccessibleDocument;
+ interface IAccessibleEditableText;
+ interface IAccessibleHyperlink;
+ interface IAccessibleHypertext;
+ interface IAccessibleHypertext2;
+ interface IAccessibleImage;
+ interface IAccessibleRelation;
+ interface IAccessibleTable;
+ interface IAccessibleTable2;
+ interface IAccessibleTableCell;
+ interface IAccessibleText;
+ interface IAccessibleText2;
+ interface IAccessibleValue;
+ enum IA2CoordinateType;
+ enum IA2EventID;
+ enum IA2Role;
+ enum IA2ScrollType;
+ enum IA2States;
+ enum IA2TableModelChangeType;
+ enum IA2TextBoundaryType;
+ enum IA2TextSpecialOffsets;
+}
diff --git a/src/3rdparty/sqlite/shell.c b/src/3rdparty/sqlite/shell.c
index a74dcdb85d..9c0481c0dd 100644
--- a/src/3rdparty/sqlite/shell.c
+++ b/src/3rdparty/sqlite/shell.c
@@ -18,6 +18,13 @@
#endif
/*
+** If requested, include the SQLite compiler options file for MSVC.
+*/
+#if defined(INCLUDE_MSVC_H)
+#include "msvc.h"
+#endif
+
+/*
** Enable large-file support for fopen() and friends on unix.
*/
#ifndef SQLITE_DISABLE_LFS
@@ -33,6 +40,9 @@
#include <stdio.h>
#include <assert.h>
#include "sqlite3.h"
+#if SQLITE_USER_AUTHENTICATION
+# include "sqlite3userauth.h"
+#endif
#include <ctype.h>
#include <stdarg.h>
@@ -45,17 +55,16 @@
# include <sys/types.h>
#endif
-#if defined(HAVE_READLINE) && HAVE_READLINE!=0
+#if HAVE_READLINE
# include <readline/readline.h>
# include <readline/history.h>
-#else
-# undef HAVE_READLINE
#endif
-#if defined(HAVE_EDITLINE) && !defined(HAVE_READLINE)
+#if HAVE_EDITLINE
+# undef HAVE_READLINE
# define HAVE_READLINE 1
# include <editline/readline.h>
#endif
-#if !defined(HAVE_READLINE)
+#if !HAVE_READLINE
# define add_history(X)
# define read_history(X)
# define write_history(X)
@@ -169,7 +178,8 @@ static HANDLE hProcess;
static FILETIME ftKernelBegin;
static FILETIME ftUserBegin;
static sqlite3_int64 ftWallBegin;
-typedef BOOL (WINAPI *GETPROCTIMES)(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME);
+typedef BOOL (WINAPI *GETPROCTIMES)(HANDLE, LPFILETIME, LPFILETIME,
+ LPFILETIME, LPFILETIME);
static GETPROCTIMES getProcessTimesAddr = NULL;
/*
@@ -180,15 +190,16 @@ static int hasTimer(void){
if( getProcessTimesAddr ){
return 1;
} else {
- /* GetProcessTimes() isn't supported in WIN95 and some other Windows versions.
- ** See if the version we are running on has it, and if it does, save off
- ** a pointer to it and the current process handle.
+ /* GetProcessTimes() isn't supported in WIN95 and some other Windows
+ ** versions. See if the version we are running on has it, and if it
+ ** does, save off a pointer to it and the current process handle.
*/
hProcess = GetCurrentProcess();
if( hProcess ){
HINSTANCE hinstLib = LoadLibrary(TEXT("Kernel32.dll"));
if( NULL != hinstLib ){
- getProcessTimesAddr = (GETPROCTIMES) GetProcAddress(hinstLib, "GetProcessTimes");
+ getProcessTimesAddr =
+ (GETPROCTIMES) GetProcAddress(hinstLib, "GetProcessTimes");
if( NULL != getProcessTimesAddr ){
return 1;
}
@@ -205,7 +216,8 @@ static int hasTimer(void){
static void beginTimer(void){
if( enableTimer && getProcessTimesAddr ){
FILETIME ftCreation, ftExit;
- getProcessTimesAddr(hProcess, &ftCreation, &ftExit, &ftKernelBegin, &ftUserBegin);
+ getProcessTimesAddr(hProcess,&ftCreation,&ftExit,
+ &ftKernelBegin,&ftUserBegin);
ftWallBegin = timeOfDay();
}
}
@@ -224,7 +236,7 @@ static void endTimer(void){
if( enableTimer && getProcessTimesAddr){
FILETIME ftCreation, ftExit, ftKernelEnd, ftUserEnd;
sqlite3_int64 ftWallEnd = timeOfDay();
- getProcessTimesAddr(hProcess, &ftCreation, &ftExit, &ftKernelEnd, &ftUserEnd);
+ getProcessTimesAddr(hProcess,&ftCreation,&ftExit,&ftKernelEnd,&ftUserEnd);
printf("Run Time: real %.3f user %f sys %f\n",
(ftWallEnd - ftWallBegin)*0.001,
timeDiff(&ftUserBegin, &ftUserEnd),
@@ -419,7 +431,7 @@ static char *one_input_line(FILE *in, char *zPrior, int isContinuation){
zResult = local_getline(zPrior, in);
}else{
zPrompt = isContinuation ? continuePrompt : mainPrompt;
-#if defined(HAVE_READLINE)
+#if HAVE_READLINE
free(zPrior);
zResult = readline(zPrompt);
if( zResult && *zResult ) add_history(zResult);
@@ -432,23 +444,29 @@ static char *one_input_line(FILE *in, char *zPrior, int isContinuation){
return zResult;
}
-struct previous_mode_data {
- int valid; /* Is there legit data in here? */
- int mode;
- int showHeader;
- int colWidth[100];
+/*
+** Shell output mode information from before ".explain on",
+** saved so that it can be restored by ".explain off"
+*/
+typedef struct SavedModeInfo SavedModeInfo;
+struct SavedModeInfo {
+ int valid; /* Is there legit data in here? */
+ int mode; /* Mode prior to ".explain on" */
+ int showHeader; /* The ".header" setting prior to ".explain on" */
+ int colWidth[100]; /* Column widths prior to ".explain on" */
};
/*
-** An pointer to an instance of this structure is passed from
-** the main program to the callback. This is used to communicate
-** state and mode information.
+** State information about the database connection is contained in an
+** instance of the following structure.
*/
-struct callback_data {
+typedef struct ShellState ShellState;
+struct ShellState {
sqlite3 *db; /* The database */
int echoOn; /* True to echo input commands */
int autoEQP; /* Run EXPLAIN QUERY PLAN prior to seach SQL stmt */
int statsOn; /* True to display memory stats before each finalize */
+ int scanstatsOn; /* True to display scan stats before each finalize */
int outCount; /* Revert to stdout when reaching zero */
int cnt; /* Number of records displayed so far */
FILE *out; /* Write results here */
@@ -457,16 +475,15 @@ struct callback_data {
int mode; /* An output mode setting */
int writableSchema; /* True if PRAGMA writable_schema=ON */
int showHeader; /* True to show column names in List or Column mode */
+ unsigned shellFlgs; /* Various flags */
char *zDestTable; /* Name of destination table when MODE_Insert */
- char separator[20]; /* Separator character for MODE_List */
- char newline[20]; /* Record separator in MODE_Csv */
+ char colSeparator[20]; /* Column separator character for several modes */
+ char rowSeparator[20]; /* Row separator character for MODE_Ascii */
int colWidth[100]; /* Requested width of each column when in column mode*/
int actualWidth[100]; /* Actual width of each column */
- char nullvalue[20]; /* The text to print when a NULL comes back from
+ char nullValue[20]; /* The text to print when a NULL comes back from
** the database */
- struct previous_mode_data explainPrev;
- /* Holds the mode information just before
- ** .explain ON */
+ SavedModeInfo normalMode;/* Holds the mode just before .explain ON */
char outfile[FILENAME_MAX]; /* Filename for *out */
const char *zDbFilename; /* name of the database file */
char *zFreeOnClose; /* Filename to free when closing */
@@ -479,6 +496,13 @@ struct callback_data {
};
/*
+** These are the allowed shellFlgs values
+*/
+#define SHFLG_Scratch 0x00001 /* The --scratch option is used */
+#define SHFLG_Pagecache 0x00002 /* The --pagecache option is used */
+#define SHFLG_Lookaside 0x00004 /* Lookaside memory is used */
+
+/*
** These are the allowed modes.
*/
#define MODE_Line 0 /* One column per line. Blank line between records */
@@ -490,6 +514,7 @@ struct callback_data {
#define MODE_Tcl 6 /* Generate ANSI-C or TCL quoted elements */
#define MODE_Csv 7 /* Quote strings, numbers are plain */
#define MODE_Explain 8 /* Like MODE_Column, but do not truncate data */
+#define MODE_Ascii 9 /* Use ASCII unit and record separators (0x1F/0x1E) */
static const char *modeDescr[] = {
"line",
@@ -501,9 +526,23 @@ static const char *modeDescr[] = {
"tcl",
"csv",
"explain",
+ "ascii",
};
/*
+** These are the column/row/line separators used by the various
+** import/export modes.
+*/
+#define SEP_Column "|"
+#define SEP_Row "\n"
+#define SEP_Tab "\t"
+#define SEP_Space " "
+#define SEP_Comma ","
+#define SEP_CrLf "\r\n"
+#define SEP_Unit "\x1F"
+#define SEP_Record "\x1E"
+
+/*
** Number of elements in an array
*/
#define ArraySize(X) (int)(sizeof(X)/sizeof(X[0]))
@@ -522,7 +561,7 @@ static int strlen30(const char *z){
** A callback for the sqlite3_log() interface.
*/
static void shellLog(void *pArg, int iErrCode, const char *zMsg){
- struct callback_data *p = (struct callback_data*)pArg;
+ ShellState *p = (ShellState*)pArg;
if( p->pLog==0 ) return;
fprintf(p->pLog, "(%d) %s\n", iErrCode, zMsg);
fflush(p->pLog);
@@ -659,22 +698,22 @@ static const char needCsvQuote[] = {
};
/*
-** Output a single term of CSV. Actually, p->separator is used for
-** the separator, which may or may not be a comma. p->nullvalue is
+** Output a single term of CSV. Actually, p->colSeparator is used for
+** the separator, which may or may not be a comma. p->nullValue is
** the null value. Strings are quoted if necessary. The separator
** is only issued if bSep is true.
*/
-static void output_csv(struct callback_data *p, const char *z, int bSep){
+static void output_csv(ShellState *p, const char *z, int bSep){
FILE *out = p->out;
if( z==0 ){
- fprintf(out,"%s",p->nullvalue);
+ fprintf(out,"%s",p->nullValue);
}else{
int i;
- int nSep = strlen30(p->separator);
+ int nSep = strlen30(p->colSeparator);
for(i=0; z[i]; i++){
if( needCsvQuote[((unsigned char*)z)[i]]
- || (z[i]==p->separator[0] &&
- (nSep==1 || memcmp(z, p->separator, nSep)==0)) ){
+ || (z[i]==p->colSeparator[0] &&
+ (nSep==1 || memcmp(z, p->colSeparator, nSep)==0)) ){
i = 0;
break;
}
@@ -691,7 +730,7 @@ static void output_csv(struct callback_data *p, const char *z, int bSep){
}
}
if( bSep ){
- fprintf(p->out, "%s", p->separator);
+ fprintf(p->out, "%s", p->colSeparator);
}
}
@@ -711,9 +750,15 @@ static void interrupt_handler(int NotUsed){
** This is the callback routine that the shell
** invokes for each row of a query result.
*/
-static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int *aiType){
+static int shell_callback(
+ void *pArg,
+ int nArg, /* Number of result columns */
+ char **azArg, /* Text of each result column */
+ char **azCol, /* Column names */
+ int *aiType /* Column types */
+){
int i;
- struct callback_data *p = (struct callback_data*)pArg;
+ ShellState *p = (ShellState*)pArg;
switch( p->mode ){
case MODE_Line: {
@@ -723,10 +768,10 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
int len = strlen30(azCol[i] ? azCol[i] : "");
if( len>w ) w = len;
}
- if( p->cnt++>0 ) fprintf(p->out,"\n");
+ if( p->cnt++>0 ) fprintf(p->out, "%s", p->rowSeparator);
for(i=0; i<nArg; i++){
- fprintf(p->out,"%*s = %s\n", w, azCol[i],
- azArg[i] ? azArg[i] : p->nullvalue);
+ fprintf(p->out,"%*s = %s%s", w, azCol[i],
+ azArg[i] ? azArg[i] : p->nullValue, p->rowSeparator);
}
break;
}
@@ -743,7 +788,7 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
if( w==0 ){
w = strlen30(azCol[i] ? azCol[i] : "");
if( w<10 ) w = 10;
- n = strlen30(azArg && azArg[i] ? azArg[i] : p->nullvalue);
+ n = strlen30(azArg && azArg[i] ? azArg[i] : p->nullValue);
if( w<n ) w = n;
}
if( i<ArraySize(p->actualWidth) ){
@@ -751,9 +796,11 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
}
if( p->showHeader ){
if( w<0 ){
- fprintf(p->out,"%*.*s%s",-w,-w,azCol[i], i==nArg-1 ? "\n": " ");
+ fprintf(p->out,"%*.*s%s",-w,-w,azCol[i],
+ i==nArg-1 ? p->rowSeparator : " ");
}else{
- fprintf(p->out,"%-*.*s%s",w,w,azCol[i], i==nArg-1 ? "\n": " ");
+ fprintf(p->out,"%-*.*s%s",w,w,azCol[i],
+ i==nArg-1 ? p->rowSeparator : " ");
}
}
}
@@ -768,7 +815,7 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
}
fprintf(p->out,"%-*.*s%s",w,w,"-----------------------------------"
"----------------------------------------------------------",
- i==nArg-1 ? "\n": " ");
+ i==nArg-1 ? p->rowSeparator : " ");
}
}
}
@@ -791,10 +838,12 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
}
if( w<0 ){
fprintf(p->out,"%*.*s%s",-w,-w,
- azArg[i] ? azArg[i] : p->nullvalue, i==nArg-1 ? "\n": " ");
+ azArg[i] ? azArg[i] : p->nullValue,
+ i==nArg-1 ? p->rowSeparator : " ");
}else{
fprintf(p->out,"%-*.*s%s",w,w,
- azArg[i] ? azArg[i] : p->nullvalue, i==nArg-1 ? "\n": " ");
+ azArg[i] ? azArg[i] : p->nullValue,
+ i==nArg-1 ? p->rowSeparator : " ");
}
}
break;
@@ -803,20 +852,21 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
case MODE_List: {
if( p->cnt++==0 && p->showHeader ){
for(i=0; i<nArg; i++){
- fprintf(p->out,"%s%s",azCol[i], i==nArg-1 ? "\n" : p->separator);
+ fprintf(p->out,"%s%s",azCol[i],
+ i==nArg-1 ? p->rowSeparator : p->colSeparator);
}
}
if( azArg==0 ) break;
for(i=0; i<nArg; i++){
char *z = azArg[i];
- if( z==0 ) z = p->nullvalue;
+ if( z==0 ) z = p->nullValue;
fprintf(p->out, "%s", z);
if( i<nArg-1 ){
- fprintf(p->out, "%s", p->separator);
+ fprintf(p->out, "%s", p->colSeparator);
}else if( p->mode==MODE_Semi ){
- fprintf(p->out, ";\n");
+ fprintf(p->out, ";%s", p->rowSeparator);
}else{
- fprintf(p->out, "\n");
+ fprintf(p->out, "%s", p->rowSeparator);
}
}
break;
@@ -835,7 +885,7 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
fprintf(p->out,"<TR>");
for(i=0; i<nArg; i++){
fprintf(p->out,"<TD>");
- output_html_string(p->out, azArg[i] ? azArg[i] : p->nullvalue);
+ output_html_string(p->out, azArg[i] ? azArg[i] : p->nullValue);
fprintf(p->out,"</TD>\n");
}
fprintf(p->out,"</TR>\n");
@@ -845,16 +895,16 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
if( p->cnt++==0 && p->showHeader ){
for(i=0; i<nArg; i++){
output_c_string(p->out,azCol[i] ? azCol[i] : "");
- if(i<nArg-1) fprintf(p->out, "%s", p->separator);
+ if(i<nArg-1) fprintf(p->out, "%s", p->colSeparator);
}
- fprintf(p->out,"\n");
+ fprintf(p->out, "%s", p->rowSeparator);
}
if( azArg==0 ) break;
for(i=0; i<nArg; i++){
- output_c_string(p->out, azArg[i] ? azArg[i] : p->nullvalue);
- if(i<nArg-1) fprintf(p->out, "%s", p->separator);
+ output_c_string(p->out, azArg[i] ? azArg[i] : p->nullValue);
+ if(i<nArg-1) fprintf(p->out, "%s", p->colSeparator);
}
- fprintf(p->out,"\n");
+ fprintf(p->out, "%s", p->rowSeparator);
break;
}
case MODE_Csv: {
@@ -866,13 +916,13 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
for(i=0; i<nArg; i++){
output_csv(p, azCol[i] ? azCol[i] : "", i<nArg-1);
}
- fprintf(p->out,"%s",p->newline);
+ fprintf(p->out, "%s", p->rowSeparator);
}
- if( azArg>0 ){
+ if( nArg>0 ){
for(i=0; i<nArg; i++){
output_csv(p, azArg[i], i<nArg-1);
}
- fprintf(p->out,"%s",p->newline);
+ fprintf(p->out, "%s", p->rowSeparator);
}
#if defined(WIN32) || defined(_WIN32)
fflush(p->out);
@@ -909,6 +959,22 @@ static int shell_callback(void *pArg, int nArg, char **azArg, char **azCol, int
fprintf(p->out,");\n");
break;
}
+ case MODE_Ascii: {
+ if( p->cnt++==0 && p->showHeader ){
+ for(i=0; i<nArg; i++){
+ if( i>0 ) fprintf(p->out, "%s", p->colSeparator);
+ fprintf(p->out,"%s",azCol[i] ? azCol[i] : "");
+ }
+ fprintf(p->out, "%s", p->rowSeparator);
+ }
+ if( azArg==0 ) break;
+ for(i=0; i<nArg; i++){
+ if( i>0 ) fprintf(p->out, "%s", p->colSeparator);
+ fprintf(p->out,"%s",azArg[i] ? azArg[i] : p->nullValue);
+ }
+ fprintf(p->out, "%s", p->rowSeparator);
+ break;
+ }
}
return 0;
}
@@ -923,11 +989,11 @@ static int callback(void *pArg, int nArg, char **azArg, char **azCol){
}
/*
-** Set the destination table field of the callback_data structure to
+** Set the destination table field of the ShellState structure to
** the name of the table given. Escape any quote characters in the
** table name.
*/
-static void set_table_name(struct callback_data *p, const char *zName){
+static void set_table_name(ShellState *p, const char *zName){
int i, n;
int needQuote;
char *z;
@@ -1017,7 +1083,7 @@ static char *appendText(char *zIn, char const *zAppend, char quote){
** won't consume the semicolon terminator.
*/
static int run_table_dump_query(
- struct callback_data *p, /* Query context */
+ ShellState *p, /* Query context */
const char *zSelect, /* SELECT statement to extract content */
const char *zFirstRow /* Print before first row, if not NULL */
){
@@ -1080,7 +1146,7 @@ static char *save_err_msg(
*/
static int display_stats(
sqlite3 *db, /* Database to query */
- struct callback_data *pArg, /* Pointer to struct callback_data */
+ ShellState *pArg, /* Pointer to ShellState */
int bReset /* True to reset the stats */
){
int iCur;
@@ -1090,57 +1156,77 @@ static int display_stats(
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_MEMORY_USED, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Memory Used: %d (max %d) bytes\n", iCur, iHiwtr);
+ fprintf(pArg->out,
+ "Memory Used: %d (max %d) bytes\n",
+ iCur, iHiwtr);
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Number of Outstanding Allocations: %d (max %d)\n", iCur, iHiwtr);
-/*
-** Not currently used by the CLI.
-** iHiwtr = iCur = -1;
-** sqlite3_status(SQLITE_STATUS_PAGECACHE_USED, &iCur, &iHiwtr, bReset);
-** fprintf(pArg->out, "Number of Pcache Pages Used: %d (max %d) pages\n", iCur, iHiwtr);
-*/
+ fprintf(pArg->out, "Number of Outstanding Allocations: %d (max %d)\n",
+ iCur, iHiwtr);
+ if( pArg->shellFlgs & SHFLG_Pagecache ){
+ iHiwtr = iCur = -1;
+ sqlite3_status(SQLITE_STATUS_PAGECACHE_USED, &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out,
+ "Number of Pcache Pages Used: %d (max %d) pages\n",
+ iCur, iHiwtr);
+ }
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Number of Pcache Overflow Bytes: %d (max %d) bytes\n", iCur, iHiwtr);
-/*
-** Not currently used by the CLI.
-** iHiwtr = iCur = -1;
-** sqlite3_status(SQLITE_STATUS_SCRATCH_USED, &iCur, &iHiwtr, bReset);
-** fprintf(pArg->out, "Number of Scratch Allocations Used: %d (max %d)\n", iCur, iHiwtr);
-*/
+ fprintf(pArg->out,
+ "Number of Pcache Overflow Bytes: %d (max %d) bytes\n",
+ iCur, iHiwtr);
+ if( pArg->shellFlgs & SHFLG_Scratch ){
+ iHiwtr = iCur = -1;
+ sqlite3_status(SQLITE_STATUS_SCRATCH_USED, &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out, "Number of Scratch Allocations Used: %d (max %d)\n",
+ iCur, iHiwtr);
+ }
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_SCRATCH_OVERFLOW, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Number of Scratch Overflow Bytes: %d (max %d) bytes\n", iCur, iHiwtr);
+ fprintf(pArg->out,
+ "Number of Scratch Overflow Bytes: %d (max %d) bytes\n",
+ iCur, iHiwtr);
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_MALLOC_SIZE, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Largest Allocation: %d bytes\n", iHiwtr);
+ fprintf(pArg->out, "Largest Allocation: %d bytes\n",
+ iHiwtr);
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_PAGECACHE_SIZE, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Largest Pcache Allocation: %d bytes\n", iHiwtr);
+ fprintf(pArg->out, "Largest Pcache Allocation: %d bytes\n",
+ iHiwtr);
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_SCRATCH_SIZE, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Largest Scratch Allocation: %d bytes\n", iHiwtr);
+ fprintf(pArg->out, "Largest Scratch Allocation: %d bytes\n",
+ iHiwtr);
#ifdef YYTRACKMAXSTACKDEPTH
iHiwtr = iCur = -1;
sqlite3_status(SQLITE_STATUS_PARSER_STACK, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Deepest Parser Stack: %d (max %d)\n", iCur, iHiwtr);
+ fprintf(pArg->out, "Deepest Parser Stack: %d (max %d)\n",
+ iCur, iHiwtr);
#endif
}
if( pArg && pArg->out && db ){
- iHiwtr = iCur = -1;
- sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_USED, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Lookaside Slots Used: %d (max %d)\n", iCur, iHiwtr);
- sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_HIT, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Successful lookaside attempts: %d\n", iHiwtr);
- sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Lookaside failures due to size: %d\n", iHiwtr);
- sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Lookaside failures due to OOM: %d\n", iHiwtr);
+ if( pArg->shellFlgs & SHFLG_Lookaside ){
+ iHiwtr = iCur = -1;
+ sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_USED,
+ &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out, "Lookaside Slots Used: %d (max %d)\n",
+ iCur, iHiwtr);
+ sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_HIT,
+ &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out, "Successful lookaside attempts: %d\n", iHiwtr);
+ sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE,
+ &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out, "Lookaside failures due to size: %d\n", iHiwtr);
+ sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL,
+ &iCur, &iHiwtr, bReset);
+ fprintf(pArg->out, "Lookaside failures due to OOM: %d\n", iHiwtr);
+ }
iHiwtr = iCur = -1;
sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_USED, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Pager Heap Usage: %d bytes\n", iCur); iHiwtr = iCur = -1;
+ fprintf(pArg->out, "Pager Heap Usage: %d bytes\n",iCur);
+ iHiwtr = iCur = -1;
sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_HIT, &iCur, &iHiwtr, 1);
fprintf(pArg->out, "Page cache hits: %d\n", iCur);
iHiwtr = iCur = -1;
@@ -1151,18 +1237,19 @@ static int display_stats(
fprintf(pArg->out, "Page cache writes: %d\n", iCur);
iHiwtr = iCur = -1;
sqlite3_db_status(db, SQLITE_DBSTATUS_SCHEMA_USED, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Schema Heap Usage: %d bytes\n", iCur);
+ fprintf(pArg->out, "Schema Heap Usage: %d bytes\n",iCur);
iHiwtr = iCur = -1;
sqlite3_db_status(db, SQLITE_DBSTATUS_STMT_USED, &iCur, &iHiwtr, bReset);
- fprintf(pArg->out, "Statement Heap/Lookaside Usage: %d bytes\n", iCur);
+ fprintf(pArg->out, "Statement Heap/Lookaside Usage: %d bytes\n",iCur);
}
if( pArg && pArg->out && db && pArg->pStmt ){
- iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, bReset);
+ iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP,
+ bReset);
fprintf(pArg->out, "Fullscan Steps: %d\n", iCur);
iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_SORT, bReset);
fprintf(pArg->out, "Sort Operations: %d\n", iCur);
- iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_AUTOINDEX, bReset);
+ iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_AUTOINDEX,bReset);
fprintf(pArg->out, "Autoindex Inserts: %d\n", iCur);
iCur = sqlite3_stmt_status(pArg->pStmt, SQLITE_STMTSTATUS_VM_STEP, bReset);
fprintf(pArg->out, "Virtual Machine Steps: %d\n", iCur);
@@ -1172,6 +1259,51 @@ static int display_stats(
}
/*
+** Display scan stats.
+*/
+static void display_scanstats(
+ sqlite3 *db, /* Database to query */
+ ShellState *pArg /* Pointer to ShellState */
+){
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ int i, k, n, mx;
+ fprintf(pArg->out, "-------- scanstats --------\n");
+ mx = 0;
+ for(k=0; k<=mx; k++){
+ double rEstLoop = 1.0;
+ for(i=n=0; 1; i++){
+ sqlite3_stmt *p = pArg->pStmt;
+ sqlite3_int64 nLoop, nVisit;
+ double rEst;
+ int iSid;
+ const char *zExplain;
+ if( sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_NLOOP, (void*)&nLoop) ){
+ break;
+ }
+ sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_SELECTID, (void*)&iSid);
+ if( iSid>mx ) mx = iSid;
+ if( iSid!=k ) continue;
+ if( n==0 ){
+ rEstLoop = (double)nLoop;
+ if( k>0 ) fprintf(pArg->out, "-------- subquery %d -------\n", k);
+ }
+ n++;
+ sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_NVISIT, (void*)&nVisit);
+ sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_EST, (void*)&rEst);
+ sqlite3_stmt_scanstatus(p, i, SQLITE_SCANSTAT_EXPLAIN, (void*)&zExplain);
+ fprintf(pArg->out, "Loop %2d: %s\n", n, zExplain);
+ rEstLoop *= rEst;
+ fprintf(pArg->out,
+ " nLoop=%-8lld nRow=%-8lld estRow=%-8lld estRow/Loop=%-8g\n",
+ nLoop, nVisit, (sqlite3_int64)(rEstLoop+0.5), rEst
+ );
+ }
+ }
+ fprintf(pArg->out, "---------------------------\n");
+#endif
+}
+
+/*
** Parameter azArray points to a zero-terminated array of strings. zStr
** points to a single nul-terminated string. Return non-zero if zStr
** is equal, according to strcmp(), to any of the strings in the array.
@@ -1187,7 +1319,7 @@ static int str_in_array(const char *zStr, const char **azArray){
/*
** If compiled statement pSql appears to be an EXPLAIN statement, allocate
-** and populate the callback_data.aiIndent[] array with the number of
+** and populate the ShellState.aiIndent[] array with the number of
** spaces each opcode should be indented before it is output.
**
** The indenting rules are:
@@ -1203,7 +1335,7 @@ static int str_in_array(const char *zStr, const char **azArray){
** then indent all opcodes between the earlier instruction
** and "Goto" by 2 spaces.
*/
-static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){
+static void explain_data_prepare(ShellState *p, sqlite3_stmt *pSql){
const char *zSql; /* The text of the SQL statement */
const char *z; /* Used to check if this is an EXPLAIN */
int *abYield = 0; /* True if op is an OP_Yield */
@@ -1212,7 +1344,8 @@ static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){
const char *azNext[] = { "Next", "Prev", "VPrev", "VNext", "SorterNext",
"NextIfOpen", "PrevIfOpen", 0 };
- const char *azYield[] = { "Yield", "SeekLT", "SeekGT", "RowSetRead", "Rewind", 0 };
+ const char *azYield[] = { "Yield", "SeekLT", "SeekGT", "RowSetRead",
+ "Rewind", 0 };
const char *azGoto[] = { "Goto", 0 };
/* Try to figure out if this is really an EXPLAIN statement. If this
@@ -1263,7 +1396,7 @@ static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){
/*
** Free the array allocated by explain_data_prepare().
*/
-static void explain_data_delete(struct callback_data *p){
+static void explain_data_delete(ShellState *p){
sqlite3_free(p->aiIndent);
p->aiIndent = 0;
p->nIndent = 0;
@@ -1280,12 +1413,12 @@ static void explain_data_delete(struct callback_data *p){
** and callback data argument.
*/
static int shell_exec(
- sqlite3 *db, /* An open database */
- const char *zSql, /* SQL to be evaluated */
+ sqlite3 *db, /* An open database */
+ const char *zSql, /* SQL to be evaluated */
int (*xCallback)(void*,int,char**,char**,int*), /* Callback function */
- /* (not the same as sqlite3_exec) */
- struct callback_data *pArg, /* Pointer to struct callback_data */
- char **pzErrMsg /* Error msg written here */
+ /* (not the same as sqlite3_exec) */
+ ShellState *pArg, /* Pointer to ShellState */
+ char **pzErrMsg /* Error msg written here */
){
sqlite3_stmt *pStmt = NULL; /* Statement to execute. */
int rc = SQLITE_OK; /* Return Code */
@@ -1325,7 +1458,8 @@ static int shell_exec(
/* Show the EXPLAIN QUERY PLAN if .eqp is on */
if( pArg && pArg->autoEQP ){
sqlite3_stmt *pExplain;
- char *zEQP = sqlite3_mprintf("EXPLAIN QUERY PLAN %s", sqlite3_sql(pStmt));
+ char *zEQP = sqlite3_mprintf("EXPLAIN QUERY PLAN %s",
+ sqlite3_sql(pStmt));
rc = sqlite3_prepare_v2(db, zEQP, -1, &pExplain, 0);
if( rc==SQLITE_OK ){
while( sqlite3_step(pExplain)==SQLITE_ROW ){
@@ -1339,15 +1473,6 @@ static int shell_exec(
sqlite3_free(zEQP);
}
- /* Output TESTCTRL_EXPLAIN text of requested */
- if( pArg && pArg->mode==MODE_Explain ){
- const char *zExplain = 0;
- sqlite3_test_control(SQLITE_TESTCTRL_EXPLAIN_STMT, pStmt, &zExplain);
- if( zExplain && zExplain[0] ){
- fprintf(pArg->out, "%s", zExplain);
- }
- }
-
/* If the shell is currently in ".explain" mode, gather the extra
** data required to add indents to the output.*/
if( pArg && pArg->mode==MODE_Explain ){
@@ -1418,6 +1543,11 @@ static int shell_exec(
display_stats(db, pArg, 0);
}
+ /* print loop-counters if required */
+ if( pArg && pArg->scanstatsOn ){
+ display_scanstats(db, pArg);
+ }
+
/* Finalize the statement just executed. If this fails, save a
** copy of the error message. Otherwise, set zSql to point to the
** next statement to execute. */
@@ -1453,7 +1583,7 @@ static int dump_callback(void *pArg, int nArg, char **azArg, char **azCol){
const char *zType;
const char *zSql;
const char *zPrepStmt = 0;
- struct callback_data *p = (struct callback_data *)pArg;
+ ShellState *p = (ShellState *)pArg;
UNUSED_PARAMETER(azCol);
if( nArg!=3 ) return 1;
@@ -1549,7 +1679,7 @@ static int dump_callback(void *pArg, int nArg, char **azArg, char **azCol){
** "ORDER BY rowid DESC" to the end.
*/
static int run_schema_dump_query(
- struct callback_data *p,
+ ShellState *p,
const char *zQuery
){
int rc;
@@ -1610,12 +1740,13 @@ static char zHelp[] =
#endif
".log FILE|off Turn logging on or off. FILE can be stderr/stdout\n"
".mode MODE ?TABLE? Set output mode where MODE is one of:\n"
+ " ascii Columns/rows delimited by 0x1F and 0x1E\n"
" csv Comma-separated values\n"
" column Left-aligned columns. (See .width)\n"
" html HTML <table> code\n"
" insert SQL insert statements for TABLE\n"
" line One value per line\n"
- " list Values delimited by .separator string\n"
+ " list Values delimited by .separator strings\n"
" tabs Tab-separated values\n"
" tcl TCL list elements\n"
".nullvalue STRING Use STRING in place of NULL values\n"
@@ -1628,11 +1759,12 @@ static char zHelp[] =
".read FILENAME Execute SQL in FILENAME\n"
".restore ?DB? FILE Restore content of DB (default \"main\") from FILE\n"
".save FILE Write in-memory database into FILE\n"
+ ".scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off\n"
".schema ?TABLE? Show the CREATE statements\n"
" If TABLE specified, only show tables matching\n"
" LIKE pattern TABLE.\n"
- ".separator STRING ?NL? Change separator used by output mode and .import\n"
- " NL is the end-of-line mark for CSV\n"
+ ".separator COL ?ROW? Change the column separator and optionally the row\n"
+ " separator for both the output mode and .import\n"
".shell CMD ARGS... Run CMD ARGS... in a system shell\n"
".show Show the current values for various settings\n"
".stats on|off Turn stats on or off\n"
@@ -1649,7 +1781,7 @@ static char zHelp[] =
;
/* Forward reference */
-static int process_input(struct callback_data *p, FILE *in);
+static int process_input(ShellState *p, FILE *in);
/*
** Implementation of the "readfile(X)" SQL function. The entire content
** of the file named X is read and returned as a BLOB. NULL is returned
@@ -1715,7 +1847,7 @@ static void writefileFunc(
** Make sure the database is open. If it is not, then open it. If
** the database fails to open, print an error message and exit.
*/
-static void open_db(struct callback_data *p, int keepAlive){
+static void open_db(ShellState *p, int keepAlive){
if( p->db==0 ){
sqlite3_initialize();
sqlite3_open(p->zDbFilename, &p->db);
@@ -1896,7 +2028,11 @@ static FILE *output_file_open(const char *zFile){
*/
static void sql_trace_callback(void *pArg, const char *z){
FILE *f = (FILE*)pArg;
- if( f ) fprintf(f, "%s\n", z);
+ if( f ){
+ int i = (int)strlen(z);
+ while( i>0 && z[i-1]==';' ){ i--; }
+ fprintf(f, "%.*s;\n", i, z);
+ }
}
/*
@@ -1909,10 +2045,10 @@ static void test_breakpoint(void){
}
/*
-** An object used to read a CSV file
+** An object used to read a CSV and other files for import.
*/
-typedef struct CSVReader CSVReader;
-struct CSVReader {
+typedef struct ImportCtx ImportCtx;
+struct ImportCtx {
const char *zFile; /* Name of the input file */
FILE *in; /* Read the CSV text from this input stream */
char *z; /* Accumulated text for a field */
@@ -1920,11 +2056,12 @@ struct CSVReader {
int nAlloc; /* Space allocated for z[] */
int nLine; /* Current line number */
int cTerm; /* Character that terminated the most recent field */
- int cSeparator; /* The separator character. (Usually ",") */
+ int cColSep; /* The column separator character. (Usually ",") */
+ int cRowSep; /* The row separator character. (Usually "\n") */
};
/* Append a single byte to z[] */
-static void csv_append_char(CSVReader *p, int c){
+static void import_append_char(ImportCtx *p, int c){
if( p->n+1>=p->nAlloc ){
p->nAlloc += p->nAlloc + 100;
p->z = sqlite3_realloc(p->z, p->nAlloc);
@@ -1942,15 +2079,17 @@ static void csv_append_char(CSVReader *p, int c){
** + Input comes from p->in.
** + Store results in p->z of length p->n. Space to hold p->z comes
** from sqlite3_malloc().
-** + Use p->cSep as the separator. The default is ",".
+** + Use p->cSep as the column separator. The default is ",".
+** + Use p->rSep as the row separator. The default is "\n".
** + Keep track of the line number in p->nLine.
** + Store the character that terminates the field in p->cTerm. Store
** EOF on end-of-file.
** + Report syntax errors on stderr
*/
-static char *csv_read_one_field(CSVReader *p){
- int c, pc, ppc;
- int cSep = p->cSeparator;
+static char *csv_read_one_field(ImportCtx *p){
+ int c;
+ int cSep = p->cColSep;
+ int rSep = p->cRowSep;
p->n = 0;
c = fgetc(p->in);
if( c==EOF || seenInterrupt ){
@@ -1958,12 +2097,13 @@ static char *csv_read_one_field(CSVReader *p){
return 0;
}
if( c=='"' ){
+ int pc, ppc;
int startLine = p->nLine;
int cQuote = c;
pc = ppc = 0;
while( 1 ){
c = fgetc(p->in);
- if( c=='\n' ) p->nLine++;
+ if( c==rSep ) p->nLine++;
if( c==cQuote ){
if( pc==cQuote ){
pc = 0;
@@ -1971,8 +2111,8 @@ static char *csv_read_one_field(CSVReader *p){
}
}
if( (c==cSep && pc==cQuote)
- || (c=='\n' && pc==cQuote)
- || (c=='\n' && pc=='\r' && ppc==cQuote)
+ || (c==rSep && pc==cQuote)
+ || (c==rSep && pc=='\r' && ppc==cQuote)
|| (c==EOF && pc==cQuote)
){
do{ p->n--; }while( p->z[p->n]!=cQuote );
@@ -1986,19 +2126,19 @@ static char *csv_read_one_field(CSVReader *p){
if( c==EOF ){
fprintf(stderr, "%s:%d: unterminated %c-quoted field\n",
p->zFile, startLine, cQuote);
- p->cTerm = EOF;
+ p->cTerm = c;
break;
}
- csv_append_char(p, c);
+ import_append_char(p, c);
ppc = pc;
pc = c;
}
}else{
- while( c!=EOF && c!=cSep && c!='\n' ){
- csv_append_char(p, c);
+ while( c!=EOF && c!=cSep && c!=rSep ){
+ import_append_char(p, c);
c = fgetc(p->in);
}
- if( c=='\n' ){
+ if( c==rSep ){
p->nLine++;
if( p->n>0 && p->z[p->n-1]=='\r' ) p->n--;
}
@@ -2008,13 +2148,47 @@ static char *csv_read_one_field(CSVReader *p){
return p->z;
}
+/* Read a single field of ASCII delimited text.
+**
+** + Input comes from p->in.
+** + Store results in p->z of length p->n. Space to hold p->z comes
+** from sqlite3_malloc().
+** + Use p->cSep as the column separator. The default is "\x1F".
+** + Use p->rSep as the row separator. The default is "\x1E".
+** + Keep track of the row number in p->nLine.
+** + Store the character that terminates the field in p->cTerm. Store
+** EOF on end-of-file.
+** + Report syntax errors on stderr
+*/
+static char *ascii_read_one_field(ImportCtx *p){
+ int c;
+ int cSep = p->cColSep;
+ int rSep = p->cRowSep;
+ p->n = 0;
+ c = fgetc(p->in);
+ if( c==EOF || seenInterrupt ){
+ p->cTerm = EOF;
+ return 0;
+ }
+ while( c!=EOF && c!=cSep && c!=rSep ){
+ import_append_char(p, c);
+ c = fgetc(p->in);
+ }
+ if( c==rSep ){
+ p->nLine++;
+ }
+ p->cTerm = c;
+ if( p->z ) p->z[p->n] = 0;
+ return p->z;
+}
+
/*
** Try to transfer data for table zTable. If an error is seen while
** moving forward, try to go backwards. The backwards movement won't
** work for WITHOUT ROWID tables.
*/
static void tryToCloneData(
- struct callback_data *p,
+ ShellState *p,
sqlite3 *newDb,
const char *zTable
){
@@ -2127,10 +2301,10 @@ end_data_xfer:
** sqlite_master table, try again moving backwards.
*/
static void tryToCloneSchema(
- struct callback_data *p,
+ ShellState *p,
sqlite3 *newDb,
const char *zWhere,
- void (*xForEach)(struct callback_data*,sqlite3*,const char*)
+ void (*xForEach)(ShellState*,sqlite3*,const char*)
){
sqlite3_stmt *pQuery = 0;
char *zQuery = 0;
@@ -2201,7 +2375,7 @@ end_schema_xfer:
** as possible out of the main database (which might be corrupt) and write it
** into zNewDb.
*/
-static void tryToClone(struct callback_data *p, const char *zNewDb){
+static void tryToClone(ShellState *p, const char *zNewDb){
int rc;
sqlite3 *newDb = 0;
if( access(zNewDb,0)==0 ){
@@ -2226,7 +2400,7 @@ static void tryToClone(struct callback_data *p, const char *zNewDb){
/*
** Change the output file back to stdout
*/
-static void output_reset(struct callback_data *p){
+static void output_reset(ShellState *p){
if( p->outfile[0]=='|' ){
pclose(p->out);
}else{
@@ -2242,7 +2416,7 @@ static void output_reset(struct callback_data *p){
**
** Return 1 on error, 2 to exit, and 0 otherwise.
*/
-static int do_meta_command(char *zLine, struct callback_data *p){
+static int do_meta_command(char *zLine, ShellState *p){
int i = 1;
int nArg = 0;
int n, c;
@@ -2360,7 +2534,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
}else
if( c=='d' && n>1 && strncmp(azArg[0], "databases", n)==0 ){
- struct callback_data data;
+ ShellState data;
char *zErrMsg = 0;
open_db(p, 0);
memcpy(&data, p, sizeof(data));
@@ -2458,11 +2632,11 @@ static int do_meta_command(char *zLine, struct callback_data *p){
if( c=='e' && strncmp(azArg[0], "explain", n)==0 ){
int val = nArg>=2 ? booleanValue(azArg[1]) : 1;
if(val == 1) {
- if(!p->explainPrev.valid) {
- p->explainPrev.valid = 1;
- p->explainPrev.mode = p->mode;
- p->explainPrev.showHeader = p->showHeader;
- memcpy(p->explainPrev.colWidth,p->colWidth,sizeof(p->colWidth));
+ if(!p->normalMode.valid) {
+ p->normalMode.valid = 1;
+ p->normalMode.mode = p->mode;
+ p->normalMode.showHeader = p->showHeader;
+ memcpy(p->normalMode.colWidth,p->colWidth,sizeof(p->colWidth));
}
/* We could put this code under the !p->explainValid
** condition so that it does not execute if we are already in
@@ -2482,16 +2656,16 @@ static int do_meta_command(char *zLine, struct callback_data *p){
p->colWidth[5] = 13; /* P4 */
p->colWidth[6] = 2; /* P5 */
p->colWidth[7] = 13; /* Comment */
- }else if (p->explainPrev.valid) {
- p->explainPrev.valid = 0;
- p->mode = p->explainPrev.mode;
- p->showHeader = p->explainPrev.showHeader;
- memcpy(p->colWidth,p->explainPrev.colWidth,sizeof(p->colWidth));
+ }else if (p->normalMode.valid) {
+ p->normalMode.valid = 0;
+ p->mode = p->normalMode.mode;
+ p->showHeader = p->normalMode.showHeader;
+ memcpy(p->colWidth,p->normalMode.colWidth,sizeof(p->colWidth));
}
}else
if( c=='f' && strncmp(azArg[0], "fullschema", n)==0 ){
- struct callback_data data;
+ ShellState data;
char *zErrMsg = 0;
int doStats = 0;
if( nArg!=1 ){
@@ -2508,7 +2682,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
" (SELECT sql sql, type type, tbl_name tbl_name, name name, rowid x"
" FROM sqlite_master UNION ALL"
" SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) "
- "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'"
+ "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%' "
"ORDER BY rowid",
callback, &data, &zErrMsg
);
@@ -2562,9 +2736,10 @@ static int do_meta_command(char *zLine, struct callback_data *p){
int nByte; /* Number of bytes in an SQL string */
int i, j; /* Loop counters */
int needCommit; /* True to COMMIT or ROLLBACK at end */
- int nSep; /* Number of bytes in p->separator[] */
+ int nSep; /* Number of bytes in p->colSeparator[] */
char *zSql; /* An SQL statement */
- CSVReader sCsv; /* Reader context */
+ ImportCtx sCtx; /* Reader context */
+ char *(*xRead)(ImportCtx*); /* Procedure to read one value */
int (*xCloser)(FILE*); /* Procedure to close th3 connection */
if( nArg!=3 ){
@@ -2574,55 +2749,79 @@ static int do_meta_command(char *zLine, struct callback_data *p){
zFile = azArg[1];
zTable = azArg[2];
seenInterrupt = 0;
- memset(&sCsv, 0, sizeof(sCsv));
+ memset(&sCtx, 0, sizeof(sCtx));
open_db(p, 0);
- nSep = strlen30(p->separator);
+ nSep = strlen30(p->colSeparator);
+ if( nSep==0 ){
+ fprintf(stderr, "Error: non-null column separator required for import\n");
+ return 1;
+ }
+ if( nSep>1 ){
+ fprintf(stderr, "Error: multi-character column separators not allowed"
+ " for import\n");
+ return 1;
+ }
+ nSep = strlen30(p->rowSeparator);
if( nSep==0 ){
- fprintf(stderr, "Error: non-null separator required for import\n");
+ fprintf(stderr, "Error: non-null row separator required for import\n");
return 1;
}
+ if( nSep==2 && p->mode==MODE_Csv && strcmp(p->rowSeparator, SEP_CrLf)==0 ){
+ /* When importing CSV (only), if the row separator is set to the
+ ** default output row separator, change it to the default input
+ ** row separator. This avoids having to maintain different input
+ ** and output row separators. */
+ sqlite3_snprintf(sizeof(p->rowSeparator), p->rowSeparator, SEP_Row);
+ nSep = strlen30(p->rowSeparator);
+ }
if( nSep>1 ){
- fprintf(stderr, "Error: multi-character separators not allowed"
+ fprintf(stderr, "Error: multi-character row separators not allowed"
" for import\n");
return 1;
}
- sCsv.zFile = zFile;
- sCsv.nLine = 1;
- if( sCsv.zFile[0]=='|' ){
- sCsv.in = popen(sCsv.zFile+1, "r");
- sCsv.zFile = "<pipe>";
+ sCtx.zFile = zFile;
+ sCtx.nLine = 1;
+ if( sCtx.zFile[0]=='|' ){
+ sCtx.in = popen(sCtx.zFile+1, "r");
+ sCtx.zFile = "<pipe>";
xCloser = pclose;
}else{
- sCsv.in = fopen(sCsv.zFile, "rb");
+ sCtx.in = fopen(sCtx.zFile, "rb");
xCloser = fclose;
}
- if( sCsv.in==0 ){
+ if( p->mode==MODE_Ascii ){
+ xRead = ascii_read_one_field;
+ }else{
+ xRead = csv_read_one_field;
+ }
+ if( sCtx.in==0 ){
fprintf(stderr, "Error: cannot open \"%s\"\n", zFile);
return 1;
}
- sCsv.cSeparator = p->separator[0];
+ sCtx.cColSep = p->colSeparator[0];
+ sCtx.cRowSep = p->rowSeparator[0];
zSql = sqlite3_mprintf("SELECT * FROM %s", zTable);
if( zSql==0 ){
fprintf(stderr, "Error: out of memory\n");
- xCloser(sCsv.in);
+ xCloser(sCtx.in);
return 1;
}
nByte = strlen30(zSql);
rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
- csv_append_char(&sCsv, 0); /* To ensure sCsv.z is allocated */
+ import_append_char(&sCtx, 0); /* To ensure sCtx.z is allocated */
if( rc && sqlite3_strglob("no such table: *", sqlite3_errmsg(db))==0 ){
char *zCreate = sqlite3_mprintf("CREATE TABLE %s", zTable);
char cSep = '(';
- while( csv_read_one_field(&sCsv) ){
- zCreate = sqlite3_mprintf("%z%c\n \"%s\" TEXT", zCreate, cSep, sCsv.z);
+ while( xRead(&sCtx) ){
+ zCreate = sqlite3_mprintf("%z%c\n \"%s\" TEXT", zCreate, cSep, sCtx.z);
cSep = ',';
- if( sCsv.cTerm!=sCsv.cSeparator ) break;
+ if( sCtx.cTerm!=sCtx.cColSep ) break;
}
if( cSep=='(' ){
sqlite3_free(zCreate);
- sqlite3_free(sCsv.z);
- xCloser(sCsv.in);
- fprintf(stderr,"%s: empty file\n", sCsv.zFile);
+ sqlite3_free(sCtx.z);
+ xCloser(sCtx.in);
+ fprintf(stderr,"%s: empty file\n", sCtx.zFile);
return 1;
}
zCreate = sqlite3_mprintf("%z\n)", zCreate);
@@ -2631,8 +2830,8 @@ static int do_meta_command(char *zLine, struct callback_data *p){
if( rc ){
fprintf(stderr, "CREATE TABLE %s(...) failed: %s\n", zTable,
sqlite3_errmsg(db));
- sqlite3_free(sCsv.z);
- xCloser(sCsv.in);
+ sqlite3_free(sCtx.z);
+ xCloser(sCtx.in);
return 1;
}
rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0);
@@ -2641,7 +2840,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
if( rc ){
if (pStmt) sqlite3_finalize(pStmt);
fprintf(stderr,"Error: %s\n", sqlite3_errmsg(db));
- xCloser(sCsv.in);
+ xCloser(sCtx.in);
return 1;
}
nCol = sqlite3_column_count(pStmt);
@@ -2651,7 +2850,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
zSql = sqlite3_malloc( nByte*2 + 20 + nCol*2 );
if( zSql==0 ){
fprintf(stderr, "Error: out of memory\n");
- xCloser(sCsv.in);
+ xCloser(sCtx.in);
return 1;
}
sqlite3_snprintf(nByte+20, zSql, "INSERT INTO \"%w\" VALUES(?", zTable);
@@ -2667,52 +2866,62 @@ static int do_meta_command(char *zLine, struct callback_data *p){
if( rc ){
fprintf(stderr, "Error: %s\n", sqlite3_errmsg(db));
if (pStmt) sqlite3_finalize(pStmt);
- xCloser(sCsv.in);
+ xCloser(sCtx.in);
return 1;
}
needCommit = sqlite3_get_autocommit(db);
if( needCommit ) sqlite3_exec(db, "BEGIN", 0, 0, 0);
do{
- int startLine = sCsv.nLine;
+ int startLine = sCtx.nLine;
for(i=0; i<nCol; i++){
- char *z = csv_read_one_field(&sCsv);
+ char *z = xRead(&sCtx);
+ /*
+ ** Did we reach end-of-file before finding any columns?
+ ** If so, stop instead of NULL filling the remaining columns.
+ */
if( z==0 && i==0 ) break;
+ /*
+ ** Did we reach end-of-file OR end-of-line before finding any
+ ** columns in ASCII mode? If so, stop instead of NULL filling
+ ** the remaining columns.
+ */
+ if( p->mode==MODE_Ascii && (z==0 || z[0]==0) && i==0 ) break;
sqlite3_bind_text(pStmt, i+1, z, -1, SQLITE_TRANSIENT);
- if( i<nCol-1 && sCsv.cTerm!=sCsv.cSeparator ){
+ if( i<nCol-1 && sCtx.cTerm!=sCtx.cColSep ){
fprintf(stderr, "%s:%d: expected %d columns but found %d - "
"filling the rest with NULL\n",
- sCsv.zFile, startLine, nCol, i+1);
+ sCtx.zFile, startLine, nCol, i+1);
i++;
while( i<=nCol ){ sqlite3_bind_null(pStmt, i); i++; }
}
}
- if( sCsv.cTerm==sCsv.cSeparator ){
+ if( sCtx.cTerm==sCtx.cColSep ){
do{
- csv_read_one_field(&sCsv);
+ xRead(&sCtx);
i++;
- }while( sCsv.cTerm==sCsv.cSeparator );
+ }while( sCtx.cTerm==sCtx.cColSep );
fprintf(stderr, "%s:%d: expected %d columns but found %d - "
"extras ignored\n",
- sCsv.zFile, startLine, nCol, i);
+ sCtx.zFile, startLine, nCol, i);
}
if( i>=nCol ){
sqlite3_step(pStmt);
rc = sqlite3_reset(pStmt);
if( rc!=SQLITE_OK ){
- fprintf(stderr, "%s:%d: INSERT failed: %s\n", sCsv.zFile, startLine,
+ fprintf(stderr, "%s:%d: INSERT failed: %s\n", sCtx.zFile, startLine,
sqlite3_errmsg(db));
}
}
- }while( sCsv.cTerm!=EOF );
+ }while( sCtx.cTerm!=EOF );
- xCloser(sCsv.in);
- sqlite3_free(sCsv.z);
+ xCloser(sCtx.in);
+ sqlite3_free(sCtx.z);
sqlite3_finalize(pStmt);
if( needCommit ) sqlite3_exec(db, "COMMIT", 0, 0, 0);
}else
if( c=='i' && strncmp(azArg[0], "indices", n)==0 ){
- struct callback_data data;
+ ShellState data;
char *zErrMsg = 0;
open_db(p, 0);
memcpy(&data, p, sizeof(data));
@@ -2824,28 +3033,32 @@ static int do_meta_command(char *zLine, struct callback_data *p){
p->mode = MODE_Html;
}else if( c2=='t' && strncmp(azArg[1],"tcl",n2)==0 ){
p->mode = MODE_Tcl;
- sqlite3_snprintf(sizeof(p->separator), p->separator, " ");
+ sqlite3_snprintf(sizeof(p->colSeparator), p->colSeparator, SEP_Space);
}else if( c2=='c' && strncmp(azArg[1],"csv",n2)==0 ){
p->mode = MODE_Csv;
- sqlite3_snprintf(sizeof(p->separator), p->separator, ",");
- sqlite3_snprintf(sizeof(p->newline), p->newline, "\r\n");
+ sqlite3_snprintf(sizeof(p->colSeparator), p->colSeparator, SEP_Comma);
+ sqlite3_snprintf(sizeof(p->rowSeparator), p->rowSeparator, SEP_CrLf);
}else if( c2=='t' && strncmp(azArg[1],"tabs",n2)==0 ){
p->mode = MODE_List;
- sqlite3_snprintf(sizeof(p->separator), p->separator, "\t");
+ sqlite3_snprintf(sizeof(p->colSeparator), p->colSeparator, SEP_Tab);
}else if( c2=='i' && strncmp(azArg[1],"insert",n2)==0 ){
p->mode = MODE_Insert;
set_table_name(p, nArg>=3 ? azArg[2] : "table");
+ }else if( c2=='a' && strncmp(azArg[1],"ascii",n2)==0 ){
+ p->mode = MODE_Ascii;
+ sqlite3_snprintf(sizeof(p->colSeparator), p->colSeparator, SEP_Unit);
+ sqlite3_snprintf(sizeof(p->rowSeparator), p->rowSeparator, SEP_Record);
}else {
fprintf(stderr,"Error: mode should be one of: "
- "column csv html insert line list tabs tcl\n");
+ "ascii column csv html insert line list tabs tcl\n");
rc = 1;
}
}else
if( c=='n' && strncmp(azArg[0], "nullvalue", n)==0 ){
if( nArg==2 ){
- sqlite3_snprintf(sizeof(p->nullvalue), p->nullvalue,
- "%.*s", (int)ArraySize(p->nullvalue)-1, azArg[1]);
+ sqlite3_snprintf(sizeof(p->nullValue), p->nullValue,
+ "%.*s", (int)ArraySize(p->nullValue)-1, azArg[1]);
}else{
fprintf(stderr, "Usage: .nullvalue STRING\n");
rc = 1;
@@ -3005,8 +3218,21 @@ static int do_meta_command(char *zLine, struct callback_data *p){
sqlite3_close(pSrc);
}else
+
+ if( c=='s' && strncmp(azArg[0], "scanstats", n)==0 ){
+ if( nArg==2 ){
+ p->scanstatsOn = booleanValue(azArg[1]);
+#ifndef SQLITE_ENABLE_STMT_SCANSTATUS
+ fprintf(stderr, "Warning: .scanstats not available in this build.\n");
+#endif
+ }else{
+ fprintf(stderr, "Usage: .scanstats on|off\n");
+ rc = 1;
+ }
+ }else
+
if( c=='s' && strncmp(azArg[0], "schema", n)==0 ){
- struct callback_data data;
+ ShellState data;
char *zErrMsg = 0;
open_db(p, 0);
memcpy(&data, p, sizeof(data));
@@ -3062,7 +3288,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
" (SELECT sql sql, type type, tbl_name tbl_name, name name, rowid x"
" FROM sqlite_master UNION ALL"
" SELECT sql, type, tbl_name, name, rowid FROM sqlite_temp_master) "
- "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%'"
+ "WHERE type!='meta' AND sql NOTNULL AND name NOT LIKE 'sqlite_%' "
"ORDER BY rowid",
callback, &data, &zErrMsg
);
@@ -3083,6 +3309,15 @@ static int do_meta_command(char *zLine, struct callback_data *p){
}
}else
+
+#if defined(SQLITE_DEBUG) && defined(SQLITE_ENABLE_SELECTTRACE)
+ if( c=='s' && n==11 && strncmp(azArg[0], "selecttrace", n)==0 ){
+ extern int sqlite3SelectTrace;
+ sqlite3SelectTrace = nArg>=2 ? booleanValue(azArg[1]) : 0xff;
+ }else
+#endif
+
+
#ifdef SQLITE_DEBUG
/* Undocumented commands for internal testing. Subject to change
** without notice. */
@@ -3108,14 +3343,16 @@ static int do_meta_command(char *zLine, struct callback_data *p){
if( c=='s' && strncmp(azArg[0], "separator", n)==0 ){
if( nArg<2 || nArg>3 ){
- fprintf(stderr, "Usage: .separator SEPARATOR ?NEWLINE?\n");
+ fprintf(stderr, "Usage: .separator COL ?ROW?\n");
rc = 1;
}
if( nArg>=2 ){
- sqlite3_snprintf(sizeof(p->separator), p->separator, azArg[1]);
+ sqlite3_snprintf(sizeof(p->colSeparator), p->colSeparator,
+ "%.*s", (int)ArraySize(p->colSeparator)-1, azArg[1]);
}
if( nArg>=3 ){
- sqlite3_snprintf(sizeof(p->newline), p->newline, azArg[2]);
+ sqlite3_snprintf(sizeof(p->rowSeparator), p->rowSeparator,
+ "%.*s", (int)ArraySize(p->rowSeparator)-1, azArg[2]);
}
}else
@@ -3146,23 +3383,24 @@ static int do_meta_command(char *zLine, struct callback_data *p){
rc = 1;
goto meta_command_exit;
}
- fprintf(p->out,"%9.9s: %s\n","echo", p->echoOn ? "on" : "off");
- fprintf(p->out,"%9.9s: %s\n","eqp", p->autoEQP ? "on" : "off");
- fprintf(p->out,"%9.9s: %s\n","explain", p->explainPrev.valid ? "on" :"off");
- fprintf(p->out,"%9.9s: %s\n","headers", p->showHeader ? "on" : "off");
- fprintf(p->out,"%9.9s: %s\n","mode", modeDescr[p->mode]);
- fprintf(p->out,"%9.9s: ", "nullvalue");
- output_c_string(p->out, p->nullvalue);
+ fprintf(p->out,"%12.12s: %s\n","echo", p->echoOn ? "on" : "off");
+ fprintf(p->out,"%12.12s: %s\n","eqp", p->autoEQP ? "on" : "off");
+ fprintf(p->out,"%9.9s: %s\n","explain", p->normalMode.valid ? "on" :"off");
+ fprintf(p->out,"%12.12s: %s\n","headers", p->showHeader ? "on" : "off");
+ fprintf(p->out,"%12.12s: %s\n","mode", modeDescr[p->mode]);
+ fprintf(p->out,"%12.12s: ", "nullvalue");
+ output_c_string(p->out, p->nullValue);
fprintf(p->out, "\n");
- fprintf(p->out,"%9.9s: %s\n","output",
+ fprintf(p->out,"%12.12s: %s\n","output",
strlen30(p->outfile) ? p->outfile : "stdout");
- fprintf(p->out,"%9.9s: ", "separator");
- output_c_string(p->out, p->separator);
- fprintf(p->out," ");
- output_c_string(p->out, p->newline);
+ fprintf(p->out,"%12.12s: ", "colseparator");
+ output_c_string(p->out, p->colSeparator);
+ fprintf(p->out, "\n");
+ fprintf(p->out,"%12.12s: ", "rowseparator");
+ output_c_string(p->out, p->rowSeparator);
fprintf(p->out, "\n");
- fprintf(p->out,"%9.9s: %s\n","stats", p->statsOn ? "on" : "off");
- fprintf(p->out,"%9.9s: ","width");
+ fprintf(p->out,"%12.12s: %s\n","stats", p->statsOn ? "on" : "off");
+ fprintf(p->out,"%12.12s: ","width");
for (i=0;i<(int)ArraySize(p->colWidth) && p->colWidth[i] != 0;i++) {
fprintf(p->out,"%d ",p->colWidth[i]);
}
@@ -3253,7 +3491,7 @@ static int do_meta_command(char *zLine, struct callback_data *p){
for(i=0; i<nPrintRow; i++){
for(j=i; j<nRow; j+=nPrintRow){
char *zSp = j<nPrintRow ? "" : " ";
- fprintf(p->out, "%s%-*s", zSp, maxlen, azResult[j] ? azResult[j] : "");
+ fprintf(p->out, "%s%-*s", zSp, maxlen, azResult[j] ? azResult[j]:"");
}
fprintf(p->out, "\n");
}
@@ -3420,6 +3658,71 @@ static int do_meta_command(char *zLine, struct callback_data *p){
#endif
}else
+#if SQLITE_USER_AUTHENTICATION
+ if( c=='u' && strncmp(azArg[0], "user", n)==0 ){
+ if( nArg<2 ){
+ fprintf(stderr, "Usage: .user SUBCOMMAND ...\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ open_db(p, 0);
+ if( strcmp(azArg[1],"login")==0 ){
+ if( nArg!=4 ){
+ fprintf(stderr, "Usage: .user login USER PASSWORD\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ rc = sqlite3_user_authenticate(p->db, azArg[2], azArg[3],
+ (int)strlen(azArg[3]));
+ if( rc ){
+ fprintf(stderr, "Authentication failed for user %s\n", azArg[2]);
+ rc = 1;
+ }
+ }else if( strcmp(azArg[1],"add")==0 ){
+ if( nArg!=5 ){
+ fprintf(stderr, "Usage: .user add USER PASSWORD ISADMIN\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ rc = sqlite3_user_add(p->db, azArg[2],
+ azArg[3], (int)strlen(azArg[3]),
+ booleanValue(azArg[4]));
+ if( rc ){
+ fprintf(stderr, "User-Add failed: %d\n", rc);
+ rc = 1;
+ }
+ }else if( strcmp(azArg[1],"edit")==0 ){
+ if( nArg!=5 ){
+ fprintf(stderr, "Usage: .user edit USER PASSWORD ISADMIN\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ rc = sqlite3_user_change(p->db, azArg[2],
+ azArg[3], (int)strlen(azArg[3]),
+ booleanValue(azArg[4]));
+ if( rc ){
+ fprintf(stderr, "User-Edit failed: %d\n", rc);
+ rc = 1;
+ }
+ }else if( strcmp(azArg[1],"delete")==0 ){
+ if( nArg!=3 ){
+ fprintf(stderr, "Usage: .user delete USER\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ rc = sqlite3_user_delete(p->db, azArg[2]);
+ if( rc ){
+ fprintf(stderr, "User-Delete failed: %d\n", rc);
+ rc = 1;
+ }
+ }else{
+ fprintf(stderr, "Usage: .user login|add|edit|delete ...\n");
+ rc = 1;
+ goto meta_command_exit;
+ }
+ }else
+#endif /* SQLITE_USER_AUTHENTICATION */
+
if( c=='v' && strncmp(azArg[0], "version", n)==0 ){
fprintf(p->out, "SQLite %s %s\n" /*extra-version-info*/,
sqlite3_libversion(), sqlite3_sourceid());
@@ -3540,7 +3843,7 @@ static int line_is_complete(char *zSql, int nSql){
**
** Return the number of errors.
*/
-static int process_input(struct callback_data *p, FILE *in){
+static int process_input(ShellState *p, FILE *in){
char *zLine = 0; /* A single input line */
char *zSql = 0; /* Accumulated SQL text */
int nLine; /* Length of current line */
@@ -3642,6 +3945,7 @@ static int process_input(struct callback_data *p, FILE *in){
if( nSql ){
if( !_all_whitespace(zSql) ){
fprintf(stderr, "Error: incomplete SQL: %s\n", zSql);
+ errCnt++;
}
free(zSql);
}
@@ -3657,7 +3961,8 @@ static char *find_home_dir(void){
static char *home_dir = NULL;
if( home_dir ) return home_dir;
-#if !defined(_WIN32) && !defined(WIN32) && !defined(_WIN32_WCE) && !defined(__RTP__) && !defined(_WRS_KERNEL)
+#if !defined(_WIN32) && !defined(WIN32) && !defined(_WIN32_WCE) \
+ && !defined(__RTP__) && !defined(_WRS_KERNEL)
{
struct passwd *pwent;
uid_t uid = getuid();
@@ -3719,7 +4024,7 @@ static char *find_home_dir(void){
** Returns the number of errors.
*/
static int process_sqliterc(
- struct callback_data *p, /* Configuration data */
+ ShellState *p, /* Configuration data */
const char *sqliterc_override /* Name of config file. NULL to use default */
){
char *home_dir = NULL;
@@ -3756,6 +4061,7 @@ static int process_sqliterc(
** Show available command line options
*/
static const char zOptions[] =
+ " -ascii set output mode to 'ascii'\n"
" -bail stop after hitting an error\n"
" -batch force batch I/O\n"
" -column set output mode to 'column'\n"
@@ -3772,13 +4078,16 @@ static const char zOptions[] =
" -interactive force interactive I/O\n"
" -line set output mode to 'line'\n"
" -list set output mode to 'list'\n"
+ " -lookaside SIZE N use N entries of SZ bytes for lookaside memory\n"
" -mmap N default mmap size set to N\n"
#ifdef SQLITE_ENABLE_MULTIPLEX
" -multiplex enable the multiplexor VFS\n"
#endif
- " -newline SEP set newline character(s) for CSV\n"
+ " -newline SEP set output row separator. Default: '\\n'\n"
" -nullvalue TEXT set text string for NULL values. Default ''\n"
- " -separator SEP set output field separator. Default: '|'\n"
+ " -pagecache SIZE N use N slots of SZ bytes each for page cache memory\n"
+ " -scratch SIZE N use N slots of SZ bytes each for scratch memory\n"
+ " -separator SEP set output column separator. Default: '|'\n"
" -stats print memory stats before each finalize\n"
" -version show SQLite version\n"
" -vfs NAME use NAME as the default VFS\n"
@@ -3802,17 +4111,18 @@ static void usage(int showDetail){
/*
** Initialize the state information in data
*/
-static void main_init(struct callback_data *data) {
+static void main_init(ShellState *data) {
memset(data, 0, sizeof(*data));
data->mode = MODE_List;
- memcpy(data->separator,"|", 2);
- memcpy(data->newline,"\r\n", 3);
+ memcpy(data->colSeparator,SEP_Column, 2);
+ memcpy(data->rowSeparator,SEP_Row, 2);
data->showHeader = 0;
+ data->shellFlgs = SHFLG_Lookaside;
sqlite3_config(SQLITE_CONFIG_URI, 1);
sqlite3_config(SQLITE_CONFIG_LOG, shellLog, data);
+ sqlite3_config(SQLITE_CONFIG_MULTITHREAD);
sqlite3_snprintf(sizeof(mainPrompt), mainPrompt,"sqlite> ");
sqlite3_snprintf(sizeof(continuePrompt), continuePrompt," ...> ");
- sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
}
/*
@@ -3850,12 +4160,14 @@ static char *cmdline_option_value(int argc, char **argv, int i){
int main(int argc, char **argv){
char *zErrMsg = 0;
- struct callback_data data;
+ ShellState data;
const char *zInitFile = 0;
- char *zFirstCmd = 0;
int i;
int rc = 0;
int warnInmemoryDb = 0;
+ int readStdin = 1;
+ int nCmd = 0;
+ char **azCmd = 0;
#if USE_SYSTEM_SQLITE+0!=1
if( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)!=0 ){
@@ -3875,6 +4187,18 @@ int main(int argc, char **argv){
signal(SIGINT, interrupt_handler);
#endif
+#ifdef SQLITE_SHELL_DBNAME_PROC
+ {
+ /* If the SQLITE_SHELL_DBNAME_PROC macro is defined, then it is the name
+ ** of a C-function that will provide the name of the database file. Use
+ ** this compile-time option to embed this shell program in larger
+ ** applications. */
+ extern void SQLITE_SHELL_DBNAME_PROC(const char**);
+ SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename);
+ warnInmemoryDb = 0;
+ }
+#endif
+
/* Do an initial pass through the command-line argument to locate
** the name of the database file, the name of the initialization file,
** the size of the alternative malloc heap,
@@ -3886,15 +4210,18 @@ int main(int argc, char **argv){
if( z[0]!='-' ){
if( data.zDbFilename==0 ){
data.zDbFilename = z;
- continue;
- }
- if( zFirstCmd==0 ){
- zFirstCmd = z;
- continue;
+ }else{
+ /* Excesss arguments are interpreted as SQL (or dot-commands) and
+ ** mean that nothing is read from stdin */
+ readStdin = 0;
+ nCmd++;
+ azCmd = realloc(azCmd, sizeof(azCmd[0])*nCmd);
+ if( azCmd==0 ){
+ fprintf(stderr, "out of memory\n");
+ exit(1);
+ }
+ azCmd[nCmd-1] = z;
}
- fprintf(stderr,"%s: Error: too many options: \"%s\"\n", Argv0, argv[i]);
- fprintf(stderr,"Use -help for a list of options.\n");
- return 1;
}
if( z[1]=='-' ) z++;
if( strcmp(z,"-separator")==0
@@ -3921,6 +4248,33 @@ int main(int argc, char **argv){
if( szHeap>0x7fff0000 ) szHeap = 0x7fff0000;
sqlite3_config(SQLITE_CONFIG_HEAP, malloc((int)szHeap), (int)szHeap, 64);
#endif
+ }else if( strcmp(z,"-scratch")==0 ){
+ int n, sz;
+ sz = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( sz>400000 ) sz = 400000;
+ if( sz<2500 ) sz = 2500;
+ n = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( n>10 ) n = 10;
+ if( n<1 ) n = 1;
+ sqlite3_config(SQLITE_CONFIG_SCRATCH, malloc(n*sz+1), sz, n);
+ data.shellFlgs |= SHFLG_Scratch;
+ }else if( strcmp(z,"-pagecache")==0 ){
+ int n, sz;
+ sz = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( sz>70000 ) sz = 70000;
+ if( sz<800 ) sz = 800;
+ n = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( n<10 ) n = 10;
+ sqlite3_config(SQLITE_CONFIG_PAGECACHE, malloc(n*sz+1), sz, n);
+ data.shellFlgs |= SHFLG_Pagecache;
+ }else if( strcmp(z,"-lookaside")==0 ){
+ int n, sz;
+ sz = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( sz<0 ) sz = 0;
+ n = (int)integerValue(cmdline_option_value(argc,argv,++i));
+ if( n<0 ) n = 0;
+ sqlite3_config(SQLITE_CONFIG_LOOKASIDE, sz, n);
+ if( sz*n==0 ) data.shellFlgs &= ~SHFLG_Lookaside;
#ifdef SQLITE_ENABLE_VFSTRACE
}else if( strcmp(z,"-vfstrace")==0 ){
extern int vfstrace_register(
@@ -3958,11 +4312,6 @@ int main(int argc, char **argv){
fprintf(stderr,"%s: Error: no database filename specified\n", Argv0);
return 1;
#endif
-#ifdef SQLITE_SHELL_DBNAME_PROC
- { extern void SQLITE_SHELL_DBNAME_PROC(const char**);
- SQLITE_SHELL_DBNAME_PROC(&data.zDbFilename);
- warnInmemoryDb = 0; }
-#endif
}
data.out = stdout;
@@ -4005,15 +4354,21 @@ int main(int argc, char **argv){
data.mode = MODE_Column;
}else if( strcmp(z,"-csv")==0 ){
data.mode = MODE_Csv;
- memcpy(data.separator,",",2);
+ memcpy(data.colSeparator,",",2);
+ }else if( strcmp(z,"-ascii")==0 ){
+ data.mode = MODE_Ascii;
+ sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator,
+ SEP_Unit);
+ sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator,
+ SEP_Record);
}else if( strcmp(z,"-separator")==0 ){
- sqlite3_snprintf(sizeof(data.separator), data.separator,
+ sqlite3_snprintf(sizeof(data.colSeparator), data.colSeparator,
"%s",cmdline_option_value(argc,argv,++i));
}else if( strcmp(z,"-newline")==0 ){
- sqlite3_snprintf(sizeof(data.newline), data.newline,
+ sqlite3_snprintf(sizeof(data.rowSeparator), data.rowSeparator,
"%s",cmdline_option_value(argc,argv,++i));
}else if( strcmp(z,"-nullvalue")==0 ){
- sqlite3_snprintf(sizeof(data.nullvalue), data.nullvalue,
+ sqlite3_snprintf(sizeof(data.nullValue), data.nullValue,
"%s",cmdline_option_value(argc,argv,++i));
}else if( strcmp(z,"-header")==0 ){
data.showHeader = 1;
@@ -4025,6 +4380,8 @@ int main(int argc, char **argv){
data.autoEQP = 1;
}else if( strcmp(z,"-stats")==0 ){
data.statsOn = 1;
+ }else if( strcmp(z,"-scanstats")==0 ){
+ data.scanstatsOn = 1;
}else if( strcmp(z,"-bail")==0 ){
bail_on_error = 1;
}else if( strcmp(z,"-version")==0 ){
@@ -4036,6 +4393,12 @@ int main(int argc, char **argv){
stdin_is_interactive = 0;
}else if( strcmp(z,"-heap")==0 ){
i++;
+ }else if( strcmp(z,"-scratch")==0 ){
+ i+=2;
+ }else if( strcmp(z,"-pagecache")==0 ){
+ i+=2;
+ }else if( strcmp(z,"-lookaside")==0 ){
+ i+=2;
}else if( strcmp(z,"-mmap")==0 ){
i++;
}else if( strcmp(z,"-vfs")==0 ){
@@ -4051,6 +4414,10 @@ int main(int argc, char **argv){
}else if( strcmp(z,"-help")==0 ){
usage(1);
}else if( strcmp(z,"-cmd")==0 ){
+ /* Run commands that follow -cmd first and separately from commands
+ ** that simply appear on the command-line. This seems goofy. It would
+ ** be better if all commands ran in the order that they appear. But
+ ** we retain the goofy behavior for historical compatibility. */
if( i==argc-1 ) break;
z = cmdline_option_value(argc,argv,++i);
if( z[0]=='.' ){
@@ -4074,23 +4441,28 @@ int main(int argc, char **argv){
}
}
- if( zFirstCmd ){
- /* Run just the command that follows the database name
+ if( !readStdin ){
+ /* Run all arguments that do not begin with '-' as if they were separate
+ ** command-line inputs, except for the argToSkip argument which contains
+ ** the database filename.
*/
- if( zFirstCmd[0]=='.' ){
- rc = do_meta_command(zFirstCmd, &data);
- if( rc==2 ) rc = 0;
- }else{
- open_db(&data, 0);
- rc = shell_exec(data.db, zFirstCmd, shell_callback, &data, &zErrMsg);
- if( zErrMsg!=0 ){
- fprintf(stderr,"Error: %s\n", zErrMsg);
- return rc!=0 ? rc : 1;
- }else if( rc!=0 ){
- fprintf(stderr,"Error: unable to process SQL \"%s\"\n", zFirstCmd);
- return rc;
+ for(i=0; i<nCmd; i++){
+ if( azCmd[i][0]=='.' ){
+ rc = do_meta_command(azCmd[i], &data);
+ if( rc ) return rc==2 ? 0 : rc;
+ }else{
+ open_db(&data, 0);
+ rc = shell_exec(data.db, azCmd[i], shell_callback, &data, &zErrMsg);
+ if( zErrMsg!=0 ){
+ fprintf(stderr,"Error: %s\n", zErrMsg);
+ return rc!=0 ? rc : 1;
+ }else if( rc!=0 ){
+ fprintf(stderr,"Error: unable to process SQL: %s\n", azCmd[i]);
+ return rc;
+ }
}
}
+ free(azCmd);
}else{
/* Run commands received from standard input
*/
@@ -4116,7 +4488,7 @@ int main(int argc, char **argv){
sqlite3_snprintf(nHistory, zHistory,"%s/.sqlite_history", zHome);
}
}
-#if defined(HAVE_READLINE)
+#if HAVE_READLINE
if( zHistory ) read_history(zHistory);
#endif
rc = process_input(&data, 0);
diff --git a/src/3rdparty/sqlite/sqlite3.c b/src/3rdparty/sqlite/sqlite3.c
index 28cfcac389..086fb3bcd6 100644
--- a/src/3rdparty/sqlite/sqlite3.c
+++ b/src/3rdparty/sqlite/sqlite3.c
@@ -1,6 +1,6 @@
/******************************************************************************
** This file is an amalgamation of many separate C source files from SQLite
-** version 3.8.6. By combining all the individual C code files into this
+** version 3.8.8.2. By combining all the individual C code files into this
** single large file, the entire code can be compiled as a single translation
** unit. This allows many compilers to do optimizations that would not be
** possible if the files were compiled separately. Performance improvements
@@ -44,6 +44,53 @@
#define _SQLITEINT_H_
/*
+** Include the header file used to customize the compiler options for MSVC.
+** This should be done first so that it can successfully prevent spurious
+** compiler warnings due to subsequent content in this file and other files
+** that are included by this file.
+*/
+/************** Include msvc.h in the middle of sqliteInt.h ******************/
+/************** Begin file msvc.h ********************************************/
+/*
+** 2015 January 12
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+******************************************************************************
+**
+** This file contains code that is specific to MSVC.
+*/
+#ifndef _MSVC_H_
+#define _MSVC_H_
+
+#if defined(_MSC_VER)
+#pragma warning(disable : 4054)
+#pragma warning(disable : 4055)
+#pragma warning(disable : 4100)
+#pragma warning(disable : 4127)
+#pragma warning(disable : 4152)
+#pragma warning(disable : 4189)
+#pragma warning(disable : 4206)
+#pragma warning(disable : 4210)
+#pragma warning(disable : 4232)
+#pragma warning(disable : 4244)
+#pragma warning(disable : 4305)
+#pragma warning(disable : 4306)
+#pragma warning(disable : 4702)
+#pragma warning(disable : 4706)
+#endif /* defined(_MSC_VER) */
+
+#endif /* _MSVC_H_ */
+
+/************** End of msvc.h ************************************************/
+/************** Continuing where we left off in sqliteInt.h ******************/
+
+/*
** These #defines should enable >2GB file support on POSIX if the
** underlying operating system supports it. If the OS lacks
** large file support, or if the OS is windows, these should be no-ops.
@@ -75,6 +122,15 @@
# define _LARGEFILE_SOURCE 1
#endif
+/* Needed for various definitions... */
+#if defined(__GNUC__) && !defined(_GNU_SOURCE)
+# define _GNU_SOURCE
+#endif
+
+#if defined(__OpenBSD__) && !defined(_BSD_SOURCE)
+# define _BSD_SOURCE
+#endif
+
/*
** For MinGW, check to see if we can include the header file containing its
** version information, among other things. Normally, this internal MinGW
@@ -172,7 +228,7 @@ extern "C" {
/*
** These no-op macros are used in front of interfaces to mark those
** interfaces as either deprecated or experimental. New applications
-** should not use deprecated interfaces - they are support for backwards
+** should not use deprecated interfaces - they are supported for backwards
** compatibility only. Application writers should be aware that
** experimental interfaces are subject to change in point releases.
**
@@ -222,9 +278,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.8.6"
-#define SQLITE_VERSION_NUMBER 3008006
-#define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
+#define SQLITE_VERSION "3.8.8.2"
+#define SQLITE_VERSION_NUMBER 3008008
+#define SQLITE_SOURCE_ID "2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -316,7 +372,7 @@ SQLITE_API const char *sqlite3_compileoption_get(int N);
** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but
** can be fully or partially disabled using a call to [sqlite3_config()]
** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD],
-** or [SQLITE_CONFIG_MUTEX]. ^(The return value of the
+** or [SQLITE_CONFIG_SERIALIZED]. ^(The return value of the
** sqlite3_threadsafe() function shows only the compile-time setting of
** thread safety, not any run-time changes to that setting made by
** sqlite3_config(). In other words, the return value from sqlite3_threadsafe()
@@ -612,6 +668,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
+#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
/*
** CAPI3REF: Flags For File Open Operations
@@ -1335,7 +1392,7 @@ struct sqlite3_vfs {
** </ul>
**
** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as
-** was given no the corresponding lock.
+** was given on the corresponding lock.
**
** The xShmLock method can transition between unlocked and SHARED or
** between unlocked and EXCLUSIVE. It cannot transition between SHARED
@@ -1618,26 +1675,28 @@ struct sqlite3_mem_methods {
** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
**
** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mem_methods] structure. The argument specifies
+** <dd> ^(The SQLITE_CONFIG_MALLOC option takes a single argument which is
+** a pointer to an instance of the [sqlite3_mem_methods] structure.
+** The argument specifies
** alternative low-level memory allocation routines to be used in place of
** the memory allocation routines built into SQLite.)^ ^SQLite makes
** its own private copy of the content of the [sqlite3_mem_methods] structure
** before the [sqlite3_config()] call returns.</dd>
**
** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods]
+** <dd> ^(The SQLITE_CONFIG_GETMALLOC option takes a single argument which
+** is a pointer to an instance of the [sqlite3_mem_methods] structure.
+** The [sqlite3_mem_methods]
** structure is filled with the currently defined memory allocation routines.)^
** This option can be used to overload the default memory allocation
** routines with a wrapper that simulations memory allocation failure or
** tracks memory usage, for example. </dd>
**
** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
-** <dd> ^This option takes single argument of type int, interpreted as a
-** boolean, which enables or disables the collection of memory allocation
-** statistics. ^(When memory allocation statistics are disabled, the
-** following SQLite interfaces become non-operational:
+** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes single argument of type int,
+** interpreted as a boolean, which enables or disables the collection of
+** memory allocation statistics. ^(When memory allocation statistics are
+** disabled, the following SQLite interfaces become non-operational:
** <ul>
** <li> [sqlite3_memory_used()]
** <li> [sqlite3_memory_highwater()]
@@ -1650,53 +1709,67 @@ struct sqlite3_mem_methods {
** </dd>
**
** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** scratch memory. There are three arguments: A pointer an 8-byte
+** <dd> ^The SQLITE_CONFIG_SCRATCH option specifies a static memory buffer
+** that SQLite can use for scratch memory. ^(There are three arguments
+** to SQLITE_CONFIG_SCRATCH: A pointer an 8-byte
** aligned memory buffer from which the scratch allocations will be
** drawn, the size of each scratch allocation (sz),
-** and the maximum number of scratch allocations (N). The sz
-** argument must be a multiple of 16.
+** and the maximum number of scratch allocations (N).)^
** The first argument must be a pointer to an 8-byte aligned buffer
** of at least sz*N bytes of memory.
-** ^SQLite will use no more than two scratch buffers per thread. So
-** N should be set to twice the expected maximum number of threads.
-** ^SQLite will never require a scratch buffer that is more than 6
-** times the database page size. ^If SQLite needs needs additional
+** ^SQLite will not use more than one scratch buffers per thread.
+** ^SQLite will never request a scratch buffer that is more than 6
+** times the database page size.
+** ^If SQLite needs needs additional
** scratch memory beyond what is provided by this configuration option, then
-** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
+** [sqlite3_malloc()] will be used to obtain the memory needed.<p>
+** ^When the application provides any amount of scratch memory using
+** SQLITE_CONFIG_SCRATCH, SQLite avoids unnecessary large
+** [sqlite3_malloc|heap allocations].
+** This can help [Robson proof|prevent memory allocation failures] due to heap
+** fragmentation in low-memory embedded systems.
+** </dd>
**
** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** the database page cache with the default page cache implementation.
+** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a static memory buffer
+** that SQLite can use for the database page cache with the default page
+** cache implementation.
** This configuration should not be used if an application-define page
-** cache implementation is loaded using the SQLITE_CONFIG_PCACHE2 option.
-** There are three arguments to this option: A pointer to 8-byte aligned
+** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]
+** configuration option.
+** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
+** 8-byte aligned
** memory, the size of each page buffer (sz), and the number of pages (N).
** The sz argument should be the size of the largest database page
-** (a power of two between 512 and 32768) plus a little extra for each
-** page header. ^The page header size is 20 to 40 bytes depending on
-** the host architecture. ^It is harmless, apart from the wasted memory,
-** to make sz a little too large. The first
-** argument should point to an allocation of at least sz*N bytes of memory.
+** (a power of two between 512 and 65536) plus some extra bytes for each
+** page header. ^The number of extra bytes needed by the page header
+** can be determined using the [SQLITE_CONFIG_PCACHE_HDRSZ] option
+** to [sqlite3_config()].
+** ^It is harmless, apart from the wasted memory,
+** for the sz parameter to be larger than necessary. The first
+** argument should pointer to an 8-byte aligned block of memory that
+** is at least sz*N bytes of memory, otherwise subsequent behavior is
+** undefined.
** ^SQLite will use the memory provided by the first argument to satisfy its
** memory needs for the first N pages that it adds to cache. ^If additional
** page cache memory is needed beyond what is provided by this option, then
-** SQLite goes to [sqlite3_malloc()] for the additional storage space.
-** The pointer in the first argument must
-** be aligned to an 8-byte boundary or subsequent behavior of SQLite
-** will be undefined.</dd>
+** SQLite goes to [sqlite3_malloc()] for the additional storage space.</dd>
**
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite will use
-** for all of its dynamic memory allocation needs beyond those provided
-** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
-** There are three arguments: An 8-byte aligned pointer to the memory,
+** <dd> ^The SQLITE_CONFIG_HEAP option specifies a static memory buffer
+** that SQLite will use for all of its dynamic memory allocation needs
+** beyond those provided for by [SQLITE_CONFIG_SCRATCH] and
+** [SQLITE_CONFIG_PAGECACHE].
+** ^The SQLITE_CONFIG_HEAP option is only available if SQLite is compiled
+** with either [SQLITE_ENABLE_MEMSYS3] or [SQLITE_ENABLE_MEMSYS5] and returns
+** [SQLITE_ERROR] if invoked otherwise.
+** ^There are three arguments to SQLITE_CONFIG_HEAP:
+** An 8-byte aligned pointer to the memory,
** the number of bytes in the memory buffer, and the minimum allocation size.
** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts
** to using its default memory allocator (the system malloc() implementation),
** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. ^If the
-** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
-** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
+** memory pointer is not NULL then the alternative memory
** allocator is engaged to handle all of SQLites memory allocation needs.
** The first pointer (the memory pointer) must be aligned to an 8-byte
** boundary or subsequent behavior of SQLite will be undefined.
@@ -1704,11 +1777,11 @@ struct sqlite3_mem_methods {
** for the minimum allocation size are 2**5 through 2**8.</dd>
**
** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mutex_methods] structure. The argument specifies
-** alternative low-level mutex routines to be used in place
-** the mutex routines built into SQLite.)^ ^SQLite makes a copy of the
-** content of the [sqlite3_mutex_methods] structure before the call to
+** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
+** pointer to an instance of the [sqlite3_mutex_methods] structure.
+** The argument specifies alternative low-level mutex routines to be used
+** in place the mutex routines built into SQLite.)^ ^SQLite makes a copy of
+** the content of the [sqlite3_mutex_methods] structure before the call to
** [sqlite3_config()] returns. ^If SQLite is compiled with
** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
** the entire mutexing subsystem is omitted from the build and hence calls to
@@ -1716,8 +1789,8 @@ struct sqlite3_mem_methods {
** return [SQLITE_ERROR].</dd>
**
** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mutex_methods] structure. The
+** <dd> ^(The SQLITE_CONFIG_GETMUTEX option takes a single argument which
+** is a pointer to an instance of the [sqlite3_mutex_methods] structure. The
** [sqlite3_mutex_methods]
** structure is filled with the currently defined mutex routines.)^
** This option can be used to overload the default mutex allocation
@@ -1729,25 +1802,25 @@ struct sqlite3_mem_methods {
** return [SQLITE_ERROR].</dd>
**
** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
-** <dd> ^(This option takes two arguments that determine the default
-** memory allocation for the lookaside memory allocator on each
-** [database connection]. The first argument is the
+** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
+** the default size of lookaside memory on each [database connection].
+** The first argument is the
** size of each lookaside buffer slot and the second is the number of
-** slots allocated to each database connection.)^ ^(This option sets the
-** <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
-** verb to [sqlite3_db_config()] can be used to change the lookaside
+** slots allocated to each database connection.)^ ^(SQLITE_CONFIG_LOOKASIDE
+** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
+** option to [sqlite3_db_config()] can be used to change the lookaside
** configuration on individual connections.)^ </dd>
**
** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
-** <dd> ^(This option takes a single argument which is a pointer to
-** an [sqlite3_pcache_methods2] object. This object specifies the interface
-** to a custom page cache implementation.)^ ^SQLite makes a copy of the
-** object and uses it for page cache memory allocations.</dd>
+** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
+** a pointer to an [sqlite3_pcache_methods2] object. This object specifies
+** the interface to a custom page cache implementation.)^
+** ^SQLite makes a copy of the [sqlite3_pcache_methods2] object.</dd>
**
** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** [sqlite3_pcache_methods2] object. SQLite copies of the current
-** page cache implementation into that object.)^ </dd>
+** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
+** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies of
+** the current page cache implementation into that object.)^ </dd>
**
** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite
@@ -1770,10 +1843,11 @@ struct sqlite3_mem_methods {
** function must be threadsafe. </dd>
**
** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
-** <dd>^(This option takes a single argument of type int. If non-zero, then
-** URI handling is globally enabled. If the parameter is zero, then URI handling
-** is globally disabled.)^ ^If URI handling is globally enabled, all filenames
-** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or
+** <dd>^(The SQLITE_CONFIG_URI option takes a single argument of type int.
+** If non-zero, then URI handling is globally enabled. If the parameter is zero,
+** then URI handling is globally disabled.)^ ^If URI handling is globally
+** enabled, all filenames passed to [sqlite3_open()], [sqlite3_open_v2()],
+** [sqlite3_open16()] or
** specified as part of [ATTACH] commands are interpreted as URIs, regardless
** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
** connection is opened. ^If it is globally disabled, filenames are
@@ -1783,9 +1857,10 @@ struct sqlite3_mem_methods {
** [SQLITE_USE_URI] symbol defined.)^
**
** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN
-** <dd>^This option takes a single integer argument which is interpreted as
-** a boolean in order to enable or disable the use of covering indices for
-** full table scans in the query optimizer. ^The default setting is determined
+** <dd>^The SQLITE_CONFIG_COVERING_INDEX_SCAN option takes a single integer
+** argument which is interpreted as a boolean in order to enable or disable
+** the use of covering indices for full table scans in the query optimizer.
+** ^The default setting is determined
** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on"
** if that compile-time option is omitted.
** The ability to disable the use of covering indices for full table scans
@@ -1825,19 +1900,39 @@ struct sqlite3_mem_methods {
** ^The default setting can be overridden by each database connection using
** either the [PRAGMA mmap_size] command, or by using the
** [SQLITE_FCNTL_MMAP_SIZE] file control. ^(The maximum allowed mmap size
-** cannot be changed at run-time. Nor may the maximum allowed mmap size
-** exceed the compile-time maximum mmap size set by the
+** will be silently truncated if necessary so that it does not exceed the
+** compile-time maximum mmap size set by the
** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^
** ^If either argument to this option is negative, then that argument is
** changed to its compile-time default.
**
** [[SQLITE_CONFIG_WIN32_HEAPSIZE]]
** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE
-** <dd>^This option is only available if SQLite is compiled for Windows
-** with the [SQLITE_WIN32_MALLOC] pre-processor macro defined.
-** SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
+** <dd>^The SQLITE_CONFIG_WIN32_HEAPSIZE option is only available if SQLite is
+** compiled for Windows with the [SQLITE_WIN32_MALLOC] pre-processor macro
+** defined. ^SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
** that specifies the maximum size of the created heap.
** </dl>
+**
+** [[SQLITE_CONFIG_PCACHE_HDRSZ]]
+** <dt>SQLITE_CONFIG_PCACHE_HDRSZ
+** <dd>^The SQLITE_CONFIG_PCACHE_HDRSZ option takes a single parameter which
+** is a pointer to an integer and writes into that integer the number of extra
+** bytes per page required for each page in [SQLITE_CONFIG_PAGECACHE].
+** The amount of extra space required can change depending on the compiler,
+** target platform, and SQLite version.
+**
+** [[SQLITE_CONFIG_PMASZ]]
+** <dt>SQLITE_CONFIG_PMASZ
+** <dd>^The SQLITE_CONFIG_PMASZ option takes a single parameter which
+** is an unsigned integer and sets the "Minimum PMA Size" for the multithreaded
+** sorter to that integer. The default minimum PMA Size is set by the
+** [SQLITE_SORTER_PMASZ] compile-time option. New threads are launched
+** to help with sort operations when multithreaded sorting
+** is enabled (using the [PRAGMA threads] command) and the amount of content
+** to be sorted exceeds the page size times the minimum of the
+** [PRAGMA cache_size] setting and this value.
+** </dl>
*/
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
@@ -1862,6 +1957,8 @@ struct sqlite3_mem_methods {
#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */
#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */
+#define SQLITE_CONFIG_PCACHE_HDRSZ 24 /* int *psz */
+#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
/*
** CAPI3REF: Database Connection Configuration Options
@@ -1989,47 +2086,45 @@ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
/*
** CAPI3REF: Count The Number Of Rows Modified
**
-** ^This function returns the number of database rows that were changed
-** or inserted or deleted by the most recently completed SQL statement
-** on the [database connection] specified by the first parameter.
-** ^(Only changes that are directly specified by the [INSERT], [UPDATE],
-** or [DELETE] statement are counted. Auxiliary changes caused by
-** triggers or [foreign key actions] are not counted.)^ Use the
-** [sqlite3_total_changes()] function to find the total number of changes
-** including changes caused by triggers and foreign key actions.
-**
-** ^Changes to a view that are simulated by an [INSTEAD OF trigger]
-** are not counted. Only real table changes are counted.
-**
-** ^(A "row change" is a change to a single row of a single table
-** caused by an INSERT, DELETE, or UPDATE statement. Rows that
-** are changed as side effects of [REPLACE] constraint resolution,
-** rollback, ABORT processing, [DROP TABLE], or by any other
-** mechanisms do not count as direct row changes.)^
-**
-** A "trigger context" is a scope of execution that begins and
-** ends with the script of a [CREATE TRIGGER | trigger].
-** Most SQL statements are
-** evaluated outside of any trigger. This is the "top level"
-** trigger context. If a trigger fires from the top level, a
-** new trigger context is entered for the duration of that one
-** trigger. Subtriggers create subcontexts for their duration.
-**
-** ^Calling [sqlite3_exec()] or [sqlite3_step()] recursively does
-** not create a new trigger context.
-**
-** ^This function returns the number of direct row changes in the
-** most recent INSERT, UPDATE, or DELETE statement within the same
-** trigger context.
-**
-** ^Thus, when called from the top level, this function returns the
-** number of changes in the most recent INSERT, UPDATE, or DELETE
-** that also occurred at the top level. ^(Within the body of a trigger,
-** the sqlite3_changes() interface can be called to find the number of
-** changes in the most recently completed INSERT, UPDATE, or DELETE
-** statement within the body of the same trigger.
-** However, the number returned does not include changes
-** caused by subtriggers since those have their own context.)^
+** ^This function returns the number of rows modified, inserted or
+** deleted by the most recently completed INSERT, UPDATE or DELETE
+** statement on the database connection specified by the only parameter.
+** ^Executing any other type of SQL statement does not modify the value
+** returned by this function.
+**
+** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
+** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
+** [foreign key actions] or [REPLACE] constraint resolution are not counted.
+**
+** Changes to a view that are intercepted by
+** [INSTEAD OF trigger | INSTEAD OF triggers] are not counted. ^The value
+** returned by sqlite3_changes() immediately after an INSERT, UPDATE or
+** DELETE statement run on a view is always zero. Only changes made to real
+** tables are counted.
+**
+** Things are more complicated if the sqlite3_changes() function is
+** executed while a trigger program is running. This may happen if the
+** program uses the [changes() SQL function], or if some other callback
+** function invokes sqlite3_changes() directly. Essentially:
+**
+** <ul>
+** <li> ^(Before entering a trigger program the value returned by
+** sqlite3_changes() function is saved. After the trigger program
+** has finished, the original value is restored.)^
+**
+** <li> ^(Within a trigger program each INSERT, UPDATE and DELETE
+** statement sets the value returned by sqlite3_changes()
+** upon completion as normal. Of course, this value will not include
+** any changes performed by sub-triggers, as the sqlite3_changes()
+** value will be saved and restored after each sub-trigger has run.)^
+** </ul>
+**
+** ^This means that if the changes() SQL function (or similar) is used
+** by the first INSERT, UPDATE or DELETE statement within a trigger, it
+** returns the value as set when the calling statement began executing.
+** ^If it is used by the second or subsequent such statement within a trigger
+** program, the value returned reflects the number of rows modified by the
+** previous INSERT, UPDATE or DELETE statement within the same trigger.
**
** See also the [sqlite3_total_changes()] interface, the
** [count_changes pragma], and the [changes() SQL function].
@@ -2043,20 +2138,17 @@ SQLITE_API int sqlite3_changes(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
**
-** ^This function returns the number of row changes caused by [INSERT],
-** [UPDATE] or [DELETE] statements since the [database connection] was opened.
-** ^(The count returned by sqlite3_total_changes() includes all changes
-** from all [CREATE TRIGGER | trigger] contexts and changes made by
-** [foreign key actions]. However,
-** the count does not include changes used to implement [REPLACE] constraints,
-** do rollbacks or ABORT processing, or [DROP TABLE] processing. The
-** count does not include rows of views that fire an [INSTEAD OF trigger],
-** though if the INSTEAD OF trigger makes changes of its own, those changes
-** are counted.)^
-** ^The sqlite3_total_changes() function counts the changes as soon as
-** the statement that makes them is completed (when the statement handle
-** is passed to [sqlite3_reset()] or [sqlite3_finalize()]).
-**
+** ^This function returns the total number of rows inserted, modified or
+** deleted by all [INSERT], [UPDATE] or [DELETE] statements completed
+** since the database connection was opened, including those executed as
+** part of trigger programs. ^Executing any other type of SQL statement
+** does not affect the value returned by sqlite3_total_changes().
+**
+** ^Changes made as part of [foreign key actions] are included in the
+** count, but those made as part of REPLACE constraint resolution are
+** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
+** are not counted.
+**
** See also the [sqlite3_changes()] interface, the
** [count_changes pragma], and the [total_changes() SQL function].
**
@@ -2143,6 +2235,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
/*
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
+** KEYWORDS: {busy-handler callback} {busy handler}
**
** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X
** that might be invoked with argument P whenever
@@ -2159,7 +2252,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
** ^The first argument to the busy handler is a copy of the void* pointer which
** is the third argument to sqlite3_busy_handler(). ^The second argument to
** the busy handler callback is the number of times that the busy handler has
-** been invoked for the same locking event. ^If the
+** been invoked previously for the same locking event. ^If the
** busy callback returns 0, then no additional attempts are made to
** access the database and [SQLITE_BUSY] is returned
** to the application.
@@ -2214,7 +2307,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
** turns off all busy handlers.
**
** ^(There can only be a single busy handler for a particular
-** [database connection] any any given moment. If another busy handler
+** [database connection] at any given moment. If another busy handler
** was defined (using [sqlite3_busy_handler()]) prior to calling
** this routine, that other busy handler is cleared.)^
**
@@ -2418,6 +2511,10 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
** a NULL pointer.
**
+** ^The sqlite3_malloc64(N) routine works just like
+** sqlite3_malloc(N) except that N is an unsigned 64-bit integer instead
+** of a signed 32-bit integer.
+**
** ^Calling sqlite3_free() with a pointer previously returned
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
** that it might be reused. ^The sqlite3_free() routine is
@@ -2429,24 +2526,38 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** might result if sqlite3_free() is called with a non-NULL pointer that
** was not obtained from sqlite3_malloc() or sqlite3_realloc().
**
-** ^(The sqlite3_realloc() interface attempts to resize a
-** prior memory allocation to be at least N bytes, where N is the
-** second parameter. The memory allocation to be resized is the first
-** parameter.)^ ^ If the first parameter to sqlite3_realloc()
+** ^The sqlite3_realloc(X,N) interface attempts to resize a
+** prior memory allocation X to be at least N bytes.
+** ^If the X parameter to sqlite3_realloc(X,N)
** is a NULL pointer then its behavior is identical to calling
-** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
-** ^If the second parameter to sqlite3_realloc() is zero or
+** sqlite3_malloc(N).
+** ^If the N parameter to sqlite3_realloc(X,N) is zero or
** negative then the behavior is exactly the same as calling
-** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
-** ^sqlite3_realloc() returns a pointer to a memory allocation
-** of at least N bytes in size or NULL if sufficient memory is unavailable.
+** sqlite3_free(X).
+** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
+** of at least N bytes in size or NULL if insufficient memory is available.
** ^If M is the size of the prior allocation, then min(N,M) bytes
** of the prior allocation are copied into the beginning of buffer returned
-** by sqlite3_realloc() and the prior allocation is freed.
-** ^If sqlite3_realloc() returns NULL, then the prior allocation
-** is not freed.
-**
-** ^The memory returned by sqlite3_malloc() and sqlite3_realloc()
+** by sqlite3_realloc(X,N) and the prior allocation is freed.
+** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
+** prior allocation is not freed.
+**
+** ^The sqlite3_realloc64(X,N) interfaces works the same as
+** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
+** of a 32-bit signed integer.
+**
+** ^If X is a memory allocation previously obtained from sqlite3_malloc(),
+** sqlite3_malloc64(), sqlite3_realloc(), or sqlite3_realloc64(), then
+** sqlite3_msize(X) returns the size of that memory allocation in bytes.
+** ^The value returned by sqlite3_msize(X) might be larger than the number
+** of bytes requested when X was allocated. ^If X is a NULL pointer then
+** sqlite3_msize(X) returns zero. If X points to something that is not
+** the beginning of memory allocation, or if it points to a formerly
+** valid memory allocation that has now been freed, then the behavior
+** of sqlite3_msize(X) is undefined and possibly harmful.
+**
+** ^The memory returned by sqlite3_malloc(), sqlite3_realloc(),
+** sqlite3_malloc64(), and sqlite3_realloc64()
** is always aligned to at least an 8 byte boundary, or to a
** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
** option is used.
@@ -2474,8 +2585,11 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** [sqlite3_free()] or [sqlite3_realloc()].
*/
SQLITE_API void *sqlite3_malloc(int);
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
SQLITE_API void *sqlite3_realloc(void*, int);
+SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
SQLITE_API void sqlite3_free(void*);
+SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
/*
** CAPI3REF: Memory Allocator Statistics
@@ -2513,13 +2627,14 @@ SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
** applications to access the same PRNG for other purposes.
**
** ^A call to this routine stores N bytes of randomness into buffer P.
-** ^If N is less than one, then P can be a NULL pointer.
+** ^The P parameter can be a NULL pointer.
**
** ^If this routine has not been previously called or if the previous
-** call had N less than one, then the PRNG is seeded using randomness
-** obtained from the xRandomness method of the default [sqlite3_vfs] object.
-** ^If the previous call to this routine had an N of 1 or more then
-** the pseudo-randomness is generated
+** call had N less than one or a NULL pointer for P, then the PRNG is
+** seeded using randomness obtained from the xRandomness method of
+** the default [sqlite3_vfs] object.
+** ^If the previous call to this routine had an N of 1 or more and a
+** non-NULL P then the pseudo-randomness is generated
** internally and without recourse to the [sqlite3_vfs] xRandomness
** method.
*/
@@ -2762,9 +2877,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** an English language description of the error following a failure of any
** of the sqlite3_open() routines.
**
-** ^The default encoding for the database will be UTF-8 if
-** sqlite3_open() or sqlite3_open_v2() is called and
-** UTF-16 in the native byte order if sqlite3_open16() is used.
+** ^The default encoding will be UTF-8 for databases created using
+** sqlite3_open() or sqlite3_open_v2(). ^The default encoding for databases
+** created using sqlite3_open16() will be UTF-16 in the native byte order.
**
** Whether or not an error occurs when it is opened, resources
** associated with the [database connection] handle should be released by
@@ -2852,13 +2967,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** then it is interpreted as an absolute path. ^If the path does not begin
** with a '/' (meaning that the authority section is omitted from the URI)
** then the path is interpreted as a relative path.
-** ^On windows, the first component of an absolute path
-** is a drive specification (e.g. "C:").
+** ^(On windows, the first component of an absolute path
+** is a drive specification (e.g. "C:").)^
**
** [[core URI query parameters]]
** The query component of a URI may contain parameters that are interpreted
** either by SQLite itself, or by a [VFS | custom VFS implementation].
-** SQLite interprets the following three query parameters:
+** SQLite and its built-in [VFSes] interpret the
+** following query parameters:
**
** <ul>
** <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
@@ -2893,11 +3009,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** a URI filename, its value overrides any behavior requested by setting
** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
**
-** <li> <b>psow</b>: ^The psow parameter may be "true" (or "on" or "yes" or
-** "1") or "false" (or "off" or "no" or "0") to indicate that the
+** <li> <b>psow</b>: ^The psow parameter indicates whether or not the
** [powersafe overwrite] property does or does not apply to the
-** storage media on which the database file resides. ^The psow query
-** parameter only works for the built-in unix and Windows VFSes.
+** storage media on which the database file resides.
**
** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter
** which if set disables file locking in rollback journal modes. This
@@ -3193,6 +3307,10 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
**
** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
** <dd>The maximum depth of recursion for triggers.</dd>)^
+**
+** [[SQLITE_LIMIT_WORKER_THREADS]] ^(<dt>SQLITE_LIMIT_WORKER_THREADS</dt>
+** <dd>The maximum number of auxiliary worker threads that a single
+** [prepared statement] may start.</dd>)^
** </dl>
*/
#define SQLITE_LIMIT_LENGTH 0
@@ -3206,6 +3324,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8
#define SQLITE_LIMIT_VARIABLE_NUMBER 9
#define SQLITE_LIMIT_TRIGGER_DEPTH 10
+#define SQLITE_LIMIT_WORKER_THREADS 11
/*
** CAPI3REF: Compiling An SQL Statement
@@ -3479,18 +3598,18 @@ typedef struct sqlite3_context sqlite3_context;
** If the fourth parameter to sqlite3_bind_blob() is negative, then
** the behavior is undefined.
** If a non-negative fourth parameter is provided to sqlite3_bind_text()
-** or sqlite3_bind_text16() then that parameter must be the byte offset
+** or sqlite3_bind_text16() or sqlite3_bind_text64() then
+** that parameter must be the byte offset
** where the NUL terminator would occur assuming the string were NUL
** terminated. If any NUL characters occur at byte offsets less than
** the value of the fourth parameter then the resulting string value will
** contain embedded NULs. The result of expressions involving strings
** with embedded NULs is undefined.
**
-** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
-** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
+** ^The fifth argument to the BLOB and string binding interfaces
+** is a destructor used to dispose of the BLOB or
** string after SQLite has finished with it. ^The destructor is called
-** to dispose of the BLOB or string even if the call to sqlite3_bind_blob(),
-** sqlite3_bind_text(), or sqlite3_bind_text16() fails.
+** to dispose of the BLOB or string even if the call to bind API fails.
** ^If the fifth argument is
** the special value [SQLITE_STATIC], then SQLite assumes that the
** information is in static, unmanaged space and does not need to be freed.
@@ -3498,6 +3617,14 @@ typedef struct sqlite3_context sqlite3_context;
** SQLite makes its own private copy of the data immediately, before
** the sqlite3_bind_*() routine returns.
**
+** ^The sixth argument to sqlite3_bind_text64() must be one of
+** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
+** to specify the encoding of the text in the third parameter. If
+** the sixth argument to sqlite3_bind_text64() is not one of the
+** allowed values shown above, or if the text encoding is different
+** from the encoding specified by the sixth parameter, then the behavior
+** is undefined.
+**
** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
** is filled with zeroes. ^A zeroblob uses a fixed amount of memory
** (just an integer to hold its size) while it is being processed.
@@ -3518,6 +3645,9 @@ typedef struct sqlite3_context sqlite3_context;
**
** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an
** [error code] if anything goes wrong.
+** ^[SQLITE_TOOBIG] might be returned if the size of a string or BLOB
+** exceeds limits imposed by [sqlite3_limit]([SQLITE_LIMIT_LENGTH]) or
+** [SQLITE_MAX_LENGTH].
** ^[SQLITE_RANGE] is returned if the parameter
** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails.
**
@@ -3525,12 +3655,16 @@ typedef struct sqlite3_context sqlite3_context;
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
*/
SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
+ void(*)(void*));
SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
-SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
+SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
+ void(*)(void*), unsigned char encoding);
SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
@@ -4222,9 +4356,9 @@ SQLITE_API int sqlite3_create_function_v2(
** These constant define integer codes that represent the various
** text encodings supported by SQLite.
*/
-#define SQLITE_UTF8 1
-#define SQLITE_UTF16LE 2
-#define SQLITE_UTF16BE 3
+#define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
+#define SQLITE_UTF16LE 2 /* IMP: R-03371-37637 */
+#define SQLITE_UTF16BE 3 /* IMP: R-51971-34154 */
#define SQLITE_UTF16 4 /* Use native byte order */
#define SQLITE_ANY 5 /* Deprecated */
#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
@@ -4279,7 +4413,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
** object results in undefined behavior.
**
** ^These routines work just like the corresponding [column access functions]
-** except that these routines take a single [protected sqlite3_value] object
+** except that these routines take a single [protected sqlite3_value] object
** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
**
** ^The sqlite3_value_text16() interface extracts a UTF-16 string
@@ -4526,6 +4660,10 @@ typedef void (*sqlite3_destructor_type)(void*);
** set the return value of the application-defined function to be
** a text string which is represented as UTF-8, UTF-16 native byte order,
** UTF-16 little endian, or UTF-16 big endian, respectively.
+** ^The sqlite3_result_text64() interface sets the return value of an
+** application-defined function to be a text string in an encoding
+** specified by the fifth (and last) parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
** ^SQLite takes the text result from the application from
** the 2nd parameter of the sqlite3_result_text* interfaces.
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
@@ -4569,6 +4707,8 @@ typedef void (*sqlite3_destructor_type)(void*);
** the [sqlite3_context] pointer, the results are undefined.
*/
SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
+ sqlite3_uint64,void(*)(void*));
SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
@@ -4579,6 +4719,8 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
SQLITE_API void sqlite3_result_null(sqlite3_context*);
SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+ void(*)(void*), unsigned char encoding);
SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
@@ -5198,20 +5340,27 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
/*
** CAPI3REF: Extract Metadata About A Column Of A Table
**
-** ^This routine returns metadata about a specific column of a specific
-** database table accessible using the [database connection] handle
-** passed as the first function argument.
+** ^(The sqlite3_table_column_metadata(X,D,T,C,....) routine returns
+** information about column C of table T in database D
+** on [database connection] X.)^ ^The sqlite3_table_column_metadata()
+** interface returns SQLITE_OK and fills in the non-NULL pointers in
+** the final five arguments with appropriate values if the specified
+** column exists. ^The sqlite3_table_column_metadata() interface returns
+** SQLITE_ERROR and if the specified column does not exist.
+** ^If the column-name parameter to sqlite3_table_column_metadata() is a
+** NULL pointer, then this routine simply checks for the existance of the
+** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
+** does not.
**
** ^The column is identified by the second, third and fourth parameters to
-** this function. ^The second parameter is either the name of the database
+** this function. ^(The second parameter is either the name of the database
** (i.e. "main", "temp", or an attached database) containing the specified
-** table or NULL. ^If it is NULL, then all attached databases are searched
+** table or NULL.)^ ^If it is NULL, then all attached databases are searched
** for the table using the same algorithm used by the database engine to
** resolve unqualified table references.
**
** ^The third and fourth parameters to this function are the table and column
-** name of the desired column, respectively. Neither of these parameters
-** may be NULL.
+** name of the desired column, respectively.
**
** ^Metadata is returned by writing to the memory locations passed as the 5th
** and subsequent parameters to this function. ^Any of these arguments may be
@@ -5230,16 +5379,17 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
** </blockquote>)^
**
** ^The memory pointed to by the character pointers returned for the
-** declaration type and collation sequence is valid only until the next
+** declaration type and collation sequence is valid until the next
** call to any SQLite API function.
**
** ^If the specified table is actually a view, an [error code] is returned.
**
-** ^If the specified column is "rowid", "oid" or "_rowid_" and an
+** ^If the specified column is "rowid", "oid" or "_rowid_" and the table
+** is not a [WITHOUT ROWID] table and an
** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output
** parameters are set for the explicitly declared column. ^(If there is no
-** explicitly declared [INTEGER PRIMARY KEY] column, then the output
-** parameters are set as follows:
+** [INTEGER PRIMARY KEY] column, then the outputs
+** for the [rowid] are set as follows:
**
** <pre>
** data type: "INTEGER"
@@ -5249,13 +5399,9 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
** auto increment: 0
** </pre>)^
**
-** ^(This function may load one or more schemas from database files. If an
-** error occurs during this process, or if the requested table or column
-** cannot be found, an [error code] is returned and an error message left
-** in the [database connection] (to be retrieved using sqlite3_errmsg()).)^
-**
-** ^This API is only available if the library was compiled with the
-** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined.
+** ^This function causes all database schemas to be read from disk and
+** parsed, if that has not already been done, and returns an error if
+** any errors are encountered while loading the schema.
*/
SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
@@ -5708,26 +5854,42 @@ typedef struct sqlite3_blob sqlite3_blob;
** SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
** </pre>)^
**
+** ^(Parameter zDb is not the filename that contains the database, but
+** rather the symbolic name of the database. For attached databases, this is
+** the name that appears after the AS keyword in the [ATTACH] statement.
+** For the main database file, the database name is "main". For TEMP
+** tables, the database name is "temp".)^
+**
** ^If the flags parameter is non-zero, then the BLOB is opened for read
-** and write access. ^If it is zero, the BLOB is opened for read access.
-** ^It is not possible to open a column that is part of an index or primary
-** key for writing. ^If [foreign key constraints] are enabled, it is
-** not possible to open a column that is part of a [child key] for writing.
-**
-** ^Note that the database name is not the filename that contains
-** the database but rather the symbolic name of the database that
-** appears after the AS keyword when the database is connected using [ATTACH].
-** ^For the main database file, the database name is "main".
-** ^For TEMP tables, the database name is "temp".
-**
-** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is written
-** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set
-** to be a null pointer.)^
-** ^This function sets the [database connection] error code and message
-** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related
-** functions. ^Note that the *ppBlob variable is always initialized in a
-** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob
-** regardless of the success or failure of this routine.
+** and write access. ^If the flags parameter is zero, the BLOB is opened for
+** read-only access.
+**
+** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is stored
+** in *ppBlob. Otherwise an [error code] is returned and, unless the error
+** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
+** the API is not misused, it is always safe to call [sqlite3_blob_close()]
+** on *ppBlob after this function it returns.
+**
+** This function fails with SQLITE_ERROR if any of the following are true:
+** <ul>
+** <li> ^(Database zDb does not exist)^,
+** <li> ^(Table zTable does not exist within database zDb)^,
+** <li> ^(Table zTable is a WITHOUT ROWID table)^,
+** <li> ^(Column zColumn does not exist)^,
+** <li> ^(Row iRow is not present in the table)^,
+** <li> ^(The specified column of row iRow contains a value that is not
+** a TEXT or BLOB value)^,
+** <li> ^(Column zColumn is part of an index, PRIMARY KEY or UNIQUE
+** constraint and the blob is being opened for read/write access)^,
+** <li> ^([foreign key constraints | Foreign key constraints] are enabled,
+** column zColumn is part of a [child key] definition and the blob is
+** being opened for read/write access)^.
+** </ul>
+**
+** ^Unless it returns SQLITE_MISUSE, this function sets the
+** [database connection] error code and message accessible via
+** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
+**
**
** ^(If the row that a BLOB handle points to is modified by an
** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
@@ -5745,13 +5907,9 @@ typedef struct sqlite3_blob sqlite3_blob;
** interface. Use the [UPDATE] SQL command to change the size of a
** blob.
**
-** ^The [sqlite3_blob_open()] interface will fail for a [WITHOUT ROWID]
-** table. Incremental BLOB I/O is not possible on [WITHOUT ROWID] tables.
-**
** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces
-** and the built-in [zeroblob] SQL function can be used, if desired,
-** to create an empty, zero-filled blob in which to read or write using
-** this interface.
+** and the built-in [zeroblob] SQL function may be used to create a
+** zero-filled blob to read or write using the incremental-blob interface.
**
** To avoid a resource leak, every open [BLOB handle] should eventually
** be released by a call to [sqlite3_blob_close()].
@@ -5793,24 +5951,22 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_i
/*
** CAPI3REF: Close A BLOB Handle
**
-** ^Closes an open [BLOB handle].
-**
-** ^Closing a BLOB shall cause the current transaction to commit
-** if there are no other BLOBs, no pending prepared statements, and the
-** database connection is in [autocommit mode].
-** ^If any writes were made to the BLOB, they might be held in cache
-** until the close operation if they will fit.
+** ^This function closes an open [BLOB handle]. ^(The BLOB handle is closed
+** unconditionally. Even if this routine returns an error code, the
+** handle is still closed.)^
**
-** ^(Closing the BLOB often forces the changes
-** out to disk and so if any I/O errors occur, they will likely occur
-** at the time when the BLOB is closed. Any errors that occur during
-** closing are reported as a non-zero return value.)^
+** ^If the blob handle being closed was opened for read-write access, and if
+** the database is in auto-commit mode and there are no other open read-write
+** blob handles or active write statements, the current transaction is
+** committed. ^If an error occurs while committing the transaction, an error
+** code is returned and the transaction rolled back.
**
-** ^(The BLOB is closed unconditionally. Even if this routine returns
-** an error code, the BLOB is still closed.)^
-**
-** ^Calling this routine with a null pointer (such as would be returned
-** by a failed call to [sqlite3_blob_open()]) is a harmless no-op.
+** Calling this function with an argument that is not a NULL pointer or an
+** open blob handle results in undefined behaviour. ^Calling this routine
+** with a null pointer (such as would be returned by a failed call to
+** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
+** is passed a valid open blob handle, the values returned by the
+** sqlite3_errcode() and sqlite3_errmsg() functions are set before returning.
*/
SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
@@ -5860,21 +6016,27 @@ SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
/*
** CAPI3REF: Write Data Into A BLOB Incrementally
**
-** ^This function is used to write data into an open [BLOB handle] from a
-** caller-supplied buffer. ^N bytes of data are copied from the buffer Z
-** into the open BLOB, starting at offset iOffset.
+** ^(This function is used to write data into an open [BLOB handle] from a
+** caller-supplied buffer. N bytes of data are copied from the buffer Z
+** into the open BLOB, starting at offset iOffset.)^
+**
+** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
+** Otherwise, an [error code] or an [extended error code] is returned.)^
+** ^Unless SQLITE_MISUSE is returned, this function sets the
+** [database connection] error code and message accessible via
+** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
**
** ^If the [BLOB handle] passed as the first argument was not opened for
** writing (the flags parameter to [sqlite3_blob_open()] was zero),
** this function returns [SQLITE_READONLY].
**
-** ^This function may only modify the contents of the BLOB; it is
+** This function may only modify the contents of the BLOB; it is
** not possible to increase the size of a BLOB using this API.
** ^If offset iOffset is less than N bytes from the end of the BLOB,
-** [SQLITE_ERROR] is returned and no data is written. ^If N is
-** less than zero [SQLITE_ERROR] is returned and no data is written.
-** The size of the BLOB (and hence the maximum value of N+iOffset)
-** can be determined using the [sqlite3_blob_bytes()] interface.
+** [SQLITE_ERROR] is returned and no data is written. The size of the
+** BLOB (and hence the maximum value of N+iOffset) can be determined
+** using the [sqlite3_blob_bytes()] interface. ^If N or iOffset are less
+** than zero [SQLITE_ERROR] is returned and no data is written.
**
** ^An attempt to write to an expired [BLOB handle] fails with an
** error code of [SQLITE_ABORT]. ^Writes to the BLOB that occurred
@@ -5883,9 +6045,6 @@ SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
** have been overwritten by the statement that expired the BLOB handle
** or by other independent statements.
**
-** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
-** Otherwise, an [error code] or an [extended error code] is returned.)^
-**
** This routine only works on a [BLOB handle] which has been created
** by a prior successful call to [sqlite3_blob_open()] and which has not
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
@@ -5938,34 +6097,34 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
**
** The SQLite source code contains multiple implementations
** of these mutex routines. An appropriate implementation
-** is selected automatically at compile-time. ^(The following
+** is selected automatically at compile-time. The following
** implementations are available in the SQLite core:
**
** <ul>
** <li> SQLITE_MUTEX_PTHREADS
** <li> SQLITE_MUTEX_W32
** <li> SQLITE_MUTEX_NOOP
-** </ul>)^
+** </ul>
**
-** ^The SQLITE_MUTEX_NOOP implementation is a set of routines
+** The SQLITE_MUTEX_NOOP implementation is a set of routines
** that does no real locking and is appropriate for use in
-** a single-threaded application. ^The SQLITE_MUTEX_PTHREADS and
+** a single-threaded application. The SQLITE_MUTEX_PTHREADS and
** SQLITE_MUTEX_W32 implementations are appropriate for use on Unix
** and Windows.
**
-** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
+** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
** implementation is included with the library. In this case the
** application must supply a custom mutex implementation using the
** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function
** before calling sqlite3_initialize() or any other public sqlite3_
-** function that calls sqlite3_initialize().)^
+** function that calls sqlite3_initialize().
**
** ^The sqlite3_mutex_alloc() routine allocates a new
-** mutex and returns a pointer to it. ^If it returns NULL
-** that means that a mutex could not be allocated. ^SQLite
-** will unwind its stack and return an error. ^(The argument
-** to sqlite3_mutex_alloc() is one of these integer constants:
+** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
+** routine returns NULL if it is unable to allocate the requested
+** mutex. The argument to sqlite3_mutex_alloc() must one of these
+** integer constants:
**
** <ul>
** <li> SQLITE_MUTEX_FAST
@@ -5978,7 +6137,8 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** <li> SQLITE_MUTEX_STATIC_PMEM
** <li> SQLITE_MUTEX_STATIC_APP1
** <li> SQLITE_MUTEX_STATIC_APP2
-** </ul>)^
+** <li> SQLITE_MUTEX_STATIC_APP3
+** </ul>
**
** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE)
** cause sqlite3_mutex_alloc() to create
@@ -5986,14 +6146,14 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
** The mutex implementation does not need to make a distinction
** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
-** not want to. ^SQLite will only request a recursive mutex in
-** cases where it really needs one. ^If a faster non-recursive mutex
+** not want to. SQLite will only request a recursive mutex in
+** cases where it really needs one. If a faster non-recursive mutex
** implementation is available on the host platform, the mutex subsystem
** might return such a mutex in response to SQLITE_MUTEX_FAST.
**
** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other
** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return
-** a pointer to a static preexisting mutex. ^Six static mutexes are
+** a pointer to a static preexisting mutex. ^Nine static mutexes are
** used by the current version of SQLite. Future versions of SQLite
** may add additional static mutexes. Static mutexes are for internal
** use by SQLite only. Applications that use SQLite mutexes should
@@ -6002,16 +6162,13 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
**
** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call. ^But for the static
+** returns a different mutex on every call. ^For the static
** mutex types, the same mutex is returned on every call that has
** the same type number.
**
** ^The sqlite3_mutex_free() routine deallocates a previously
-** allocated dynamic mutex. ^SQLite is careful to deallocate every
-** dynamic mutex that it allocates. The dynamic mutexes must not be in
-** use when they are deallocated. Attempting to deallocate a static
-** mutex results in undefined behavior. ^SQLite never deallocates
-** a static mutex.
+** allocated dynamic mutex. Attempting to deallocate a static
+** mutex results in undefined behavior.
**
** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
** to enter a mutex. ^If another thread is already within the mutex,
@@ -6019,23 +6176,21 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** SQLITE_BUSY. ^The sqlite3_mutex_try() interface returns [SQLITE_OK]
** upon successful entry. ^(Mutexes created using
** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
-** In such cases the,
+** In such cases, the
** mutex must be exited an equal number of times before another thread
-** can enter.)^ ^(If the same thread tries to enter any other
-** kind of mutex more than once, the behavior is undefined.
-** SQLite will never exhibit
-** such behavior in its own use of mutexes.)^
+** can enter.)^ If the same thread tries to enter any mutex other
+** than an SQLITE_MUTEX_RECURSIVE more than once, the behavior is undefined.
**
** ^(Some systems (for example, Windows 95) do not support the operation
** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
-** will always return SQLITE_BUSY. The SQLite core only ever uses
-** sqlite3_mutex_try() as an optimization so this is acceptable behavior.)^
+** will always return SQLITE_BUSY. The SQLite core only ever uses
+** sqlite3_mutex_try() as an optimization so this is acceptable
+** behavior.)^
**
** ^The sqlite3_mutex_leave() routine exits a mutex that was
-** previously entered by the same thread. ^(The behavior
+** previously entered by the same thread. The behavior
** is undefined if the mutex is not currently entered by the
-** calling thread or is not currently allocated. SQLite will
-** never do either.)^
+** calling thread or is not currently allocated.
**
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or
** sqlite3_mutex_leave() is a NULL pointer, then all three routines
@@ -6056,9 +6211,9 @@ SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
** used to allocate and use mutexes.
**
** Usually, the default mutex implementations provided by SQLite are
-** sufficient, however the user has the option of substituting a custom
+** sufficient, however the application has the option of substituting a custom
** implementation for specialized deployments or systems for which SQLite
-** does not provide a suitable implementation. In this case, the user
+** does not provide a suitable implementation. In this case, the application
** creates and populates an instance of this structure to pass
** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
** Additionally, an instance of this structure can be used as an
@@ -6099,13 +6254,13 @@ SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
** (i.e. it is acceptable to provide an implementation that segfaults if
** it is passed a NULL pointer).
**
-** The xMutexInit() method must be threadsafe. ^It must be harmless to
+** The xMutexInit() method must be threadsafe. It must be harmless to
** invoke xMutexInit() multiple times within the same process and without
** intervening calls to xMutexEnd(). Second and subsequent calls to
** xMutexInit() must be no-ops.
**
-** ^xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
-** and its associates). ^Similarly, xMutexAlloc() must not use SQLite memory
+** xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
+** and its associates). Similarly, xMutexAlloc() must not use SQLite memory
** allocation for a static mutex. ^However xMutexAlloc() may use SQLite
** memory allocation for a fast or recursive mutex.
**
@@ -6131,29 +6286,29 @@ struct sqlite3_mutex_methods {
** CAPI3REF: Mutex Verification Routines
**
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
-** are intended for use inside assert() statements. ^The SQLite core
+** are intended for use inside assert() statements. The SQLite core
** never uses these routines except inside an assert() and applications
-** are advised to follow the lead of the core. ^The SQLite core only
+** are advised to follow the lead of the core. The SQLite core only
** provides implementations for these routines when it is compiled
-** with the SQLITE_DEBUG flag. ^External mutex implementations
+** with the SQLITE_DEBUG flag. External mutex implementations
** are only required to provide these routines if SQLITE_DEBUG is
** defined and if NDEBUG is not defined.
**
-** ^These routines should return true if the mutex in their argument
+** These routines should return true if the mutex in their argument
** is held or not held, respectively, by the calling thread.
**
-** ^The implementation is not required to provide versions of these
+** The implementation is not required to provide versions of these
** routines that actually work. If the implementation does not provide working
** versions of these routines, it should at least provide stubs that always
** return true so that one does not get spurious assertion failures.
**
-** ^If the argument to sqlite3_mutex_held() is a NULL pointer then
+** If the argument to sqlite3_mutex_held() is a NULL pointer then
** the routine should return 1. This seems counter-intuitive since
** clearly the mutex cannot be held if it does not exist. But
** the reason the mutex does not exist is because the build is not
** using mutexes. And we do not want the assert() containing the
** call to sqlite3_mutex_held() to fail, so a non-zero return is
-** the appropriate thing to do. ^The sqlite3_mutex_notheld()
+** the appropriate thing to do. The sqlite3_mutex_notheld()
** interface should also return 1 when given a NULL pointer.
*/
#ifndef NDEBUG
@@ -6275,12 +6430,13 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_ISKEYWORD 16
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
-#define SQLITE_TESTCTRL_EXPLAIN_STMT 19
+#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
#define SQLITE_TESTCTRL_VDBE_COVERAGE 21
#define SQLITE_TESTCTRL_BYTEORDER 22
#define SQLITE_TESTCTRL_ISINIT 23
-#define SQLITE_TESTCTRL_LAST 23
+#define SQLITE_TESTCTRL_SORTER_MMAP 24
+#define SQLITE_TESTCTRL_LAST 24
/*
** CAPI3REF: SQLite Runtime Status
@@ -6471,12 +6627,12 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** the current value is always zero.)^
**
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** memory used by all pager caches associated with the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
**
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** memory used to store the schema for all databases associated
** with the connection - main, temp, and any [ATTACH]-ed databases.)^
** ^The full amount of memory used by the schemas is reported, even if the
@@ -6485,7 +6641,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
**
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** and lookaside memory used by all prepared statements associated with
** the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.
@@ -6885,6 +7041,10 @@ typedef struct sqlite3_backup sqlite3_backup;
** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
** an error.
**
+** ^A call to sqlite3_backup_init() will fail, returning SQLITE_ERROR, if
+** there is already a read or read-write transaction open on the
+** destination database.
+**
** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
** returned and an error code and error message are stored in the
** destination [database connection] D.
@@ -7208,12 +7368,10 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
** CAPI3REF: Write-Ahead Log Commit Hook
**
** ^The [sqlite3_wal_hook()] function is used to register a callback that
-** will be invoked each time a database connection commits data to a
-** [write-ahead log] (i.e. whenever a transaction is committed in
-** [journal_mode | journal_mode=WAL mode]).
+** is invoked each time data is committed to a database in wal mode.
**
-** ^The callback is invoked by SQLite after the commit has taken place and
-** the associated write-lock on the database released, so the implementation
+** ^(The callback is invoked by SQLite after the commit has taken place and
+** the associated write-lock on the database released)^, so the implementation
** may read, write or [checkpoint] the database as required.
**
** ^The first parameter passed to the callback function when it is invoked
@@ -7278,97 +7436,114 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
/*
** CAPI3REF: Checkpoint a database
**
-** ^The [sqlite3_wal_checkpoint(D,X)] interface causes database named X
-** on [database connection] D to be [checkpointed]. ^If X is NULL or an
-** empty string, then a checkpoint is run on all databases of
-** connection D. ^If the database connection D is not in
-** [WAL | write-ahead log mode] then this interface is a harmless no-op.
-** ^The [sqlite3_wal_checkpoint(D,X)] interface initiates a
-** [sqlite3_wal_checkpoint_v2|PASSIVE] checkpoint.
-** Use the [sqlite3_wal_checkpoint_v2()] interface to get a FULL
-** or RESET checkpoint.
+** ^(The sqlite3_wal_checkpoint(D,X) is equivalent to
+** [sqlite3_wal_checkpoint_v2](D,X,[SQLITE_CHECKPOINT_PASSIVE],0,0).)^
**
-** ^The [wal_checkpoint pragma] can be used to invoke this interface
-** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the
-** [wal_autocheckpoint pragma] can be used to cause this interface to be
-** run whenever the WAL reaches a certain size threshold.
+** In brief, sqlite3_wal_checkpoint(D,X) causes the content in the
+** [write-ahead log] for database X on [database connection] D to be
+** transferred into the database file and for the write-ahead log to
+** be reset. See the [checkpointing] documentation for addition
+** information.
**
-** See also: [sqlite3_wal_checkpoint_v2()]
+** This interface used to be the only way to cause a checkpoint to
+** occur. But then the newer and more powerful [sqlite3_wal_checkpoint_v2()]
+** interface was added. This interface is retained for backwards
+** compatibility and as a convenience for applications that need to manually
+** start a callback but which do not need the full power (and corresponding
+** complication) of [sqlite3_wal_checkpoint_v2()].
*/
SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
/*
** CAPI3REF: Checkpoint a database
**
-** Run a checkpoint operation on WAL database zDb attached to database
-** handle db. The specific operation is determined by the value of the
-** eMode parameter:
+** ^(The sqlite3_wal_checkpoint_v2(D,X,M,L,C) interface runs a checkpoint
+** operation on database X of [database connection] D in mode M. Status
+** information is written back into integers pointed to by L and C.)^
+** ^(The M parameter must be a valid [checkpoint mode]:)^
**
** <dl>
** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
-** Checkpoint as many frames as possible without waiting for any database
-** readers or writers to finish. Sync the db file if all frames in the log
-** are checkpointed. This mode is the same as calling
-** sqlite3_wal_checkpoint(). The [sqlite3_busy_handler|busy-handler callback]
-** is never invoked.
+** ^Checkpoint as many frames as possible without waiting for any database
+** readers or writers to finish, then sync the database file if all frames
+** in the log were checkpointed. ^The [busy-handler callback]
+** is never invoked in the SQLITE_CHECKPOINT_PASSIVE mode.
+** ^On the other hand, passive mode might leave the checkpoint unfinished
+** if there are concurrent readers or writers.
**
** <dt>SQLITE_CHECKPOINT_FULL<dd>
-** This mode blocks (it invokes the
+** ^This mode blocks (it invokes the
** [sqlite3_busy_handler|busy-handler callback]) until there is no
** database writer and all readers are reading from the most recent database
-** snapshot. It then checkpoints all frames in the log file and syncs the
-** database file. This call blocks database writers while it is running,
-** but not database readers.
+** snapshot. ^It then checkpoints all frames in the log file and syncs the
+** database file. ^This mode blocks new database writers while it is pending,
+** but new database readers are allowed to continue unimpeded.
**
** <dt>SQLITE_CHECKPOINT_RESTART<dd>
-** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after
-** checkpointing the log file it blocks (calls the
-** [sqlite3_busy_handler|busy-handler callback])
-** until all readers are reading from the database file only. This ensures
-** that the next client to write to the database file restarts the log file
-** from the beginning. This call blocks database writers while it is running,
-** but not database readers.
+** ^This mode works the same way as SQLITE_CHECKPOINT_FULL with the addition
+** that after checkpointing the log file it blocks (calls the
+** [busy-handler callback])
+** until all readers are reading from the database file only. ^This ensures
+** that the next writer will restart the log file from the beginning.
+** ^Like SQLITE_CHECKPOINT_FULL, this mode blocks new
+** database writer attempts while it is pending, but does not impede readers.
+**
+** <dt>SQLITE_CHECKPOINT_TRUNCATE<dd>
+** ^This mode works the same way as SQLITE_CHECKPOINT_RESTART with the
+** addition that it also truncates the log file to zero bytes just prior
+** to a successful return.
** </dl>
**
-** If pnLog is not NULL, then *pnLog is set to the total number of frames in
-** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
-** the total number of checkpointed frames (including any that were already
-** checkpointed when this function is called). *pnLog and *pnCkpt may be
-** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
-** If no values are available because of an error, they are both set to -1
-** before returning to communicate this to the caller.
-**
-** All calls obtain an exclusive "checkpoint" lock on the database file. If
+** ^If pnLog is not NULL, then *pnLog is set to the total number of frames in
+** the log file or to -1 if the checkpoint could not run because
+** of an error or because the database is not in [WAL mode]. ^If pnCkpt is not
+** NULL,then *pnCkpt is set to the total number of checkpointed frames in the
+** log file (including any that were already checkpointed before the function
+** was called) or to -1 if the checkpoint could not run due to an error or
+** because the database is not in WAL mode. ^Note that upon successful
+** completion of an SQLITE_CHECKPOINT_TRUNCATE, the log file will have been
+** truncated to zero bytes and so both *pnLog and *pnCkpt will be set to zero.
+**
+** ^All calls obtain an exclusive "checkpoint" lock on the database file. ^If
** any other process is running a checkpoint operation at the same time, the
-** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a
+** lock cannot be obtained and SQLITE_BUSY is returned. ^Even if there is a
** busy-handler configured, it will not be invoked in this case.
**
-** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive
-** "writer" lock on the database file. If the writer lock cannot be obtained
-** immediately, and a busy-handler is configured, it is invoked and the writer
-** lock retried until either the busy-handler returns 0 or the lock is
-** successfully obtained. The busy-handler is also invoked while waiting for
-** database readers as described above. If the busy-handler returns 0 before
+** ^The SQLITE_CHECKPOINT_FULL, RESTART and TRUNCATE modes also obtain the
+** exclusive "writer" lock on the database file. ^If the writer lock cannot be
+** obtained immediately, and a busy-handler is configured, it is invoked and
+** the writer lock retried until either the busy-handler returns 0 or the lock
+** is successfully obtained. ^The busy-handler is also invoked while waiting for
+** database readers as described above. ^If the busy-handler returns 0 before
** the writer lock is obtained or while waiting for database readers, the
** checkpoint operation proceeds from that point in the same way as
** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible
-** without blocking any further. SQLITE_BUSY is returned in this case.
+** without blocking any further. ^SQLITE_BUSY is returned in this case.
**
-** If parameter zDb is NULL or points to a zero length string, then the
-** specified operation is attempted on all WAL databases. In this case the
-** values written to output parameters *pnLog and *pnCkpt are undefined. If
+** ^If parameter zDb is NULL or points to a zero length string, then the
+** specified operation is attempted on all WAL databases [attached] to
+** [database connection] db. In this case the
+** values written to output parameters *pnLog and *pnCkpt are undefined. ^If
** an SQLITE_BUSY error is encountered when processing one or more of the
** attached WAL databases, the operation is still attempted on any remaining
-** attached databases and SQLITE_BUSY is returned to the caller. If any other
+** attached databases and SQLITE_BUSY is returned at the end. ^If any other
** error occurs while processing an attached database, processing is abandoned
-** and the error code returned to the caller immediately. If no error
+** and the error code is returned to the caller immediately. ^If no error
** (SQLITE_BUSY or otherwise) is encountered while processing the attached
** databases, SQLITE_OK is returned.
**
-** If database zDb is the name of an attached database that is not in WAL
-** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
+** ^If database zDb is the name of an attached database that is not in WAL
+** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. ^If
** zDb is not NULL (or a zero length string) and is not the name of any
** attached database, SQLITE_ERROR is returned to the caller.
+**
+** ^Unless it returns SQLITE_MISUSE,
+** the sqlite3_wal_checkpoint_v2() interface
+** sets the error information that is queried by
+** [sqlite3_errcode()] and [sqlite3_errmsg()].
+**
+** ^The [PRAGMA wal_checkpoint] command can be used to invoke this interface
+** from SQL.
*/
SQLITE_API int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
@@ -7379,16 +7554,18 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
);
/*
-** CAPI3REF: Checkpoint operation parameters
+** CAPI3REF: Checkpoint Mode Values
+** KEYWORDS: {checkpoint mode}
**
-** These constants can be used as the 3rd parameter to
-** [sqlite3_wal_checkpoint_v2()]. See the [sqlite3_wal_checkpoint_v2()]
-** documentation for additional information about the meaning and use of
-** each of these values.
+** These constants define all valid values for the "checkpoint mode" passed
+** as the third parameter to the [sqlite3_wal_checkpoint_v2()] interface.
+** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
+** meaning of each of these checkpoint modes.
*/
-#define SQLITE_CHECKPOINT_PASSIVE 0
-#define SQLITE_CHECKPOINT_FULL 1
-#define SQLITE_CHECKPOINT_RESTART 2
+#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
+#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
+#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for for readers */
+#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
/*
** CAPI3REF: Virtual Table Interface Configuration
@@ -7477,6 +7654,106 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
/* #define SQLITE_ABORT 4 // Also an error code */
#define SQLITE_REPLACE 5
+/*
+** CAPI3REF: Prepared Statement Scan Status Opcodes
+** KEYWORDS: {scanstatus options}
+**
+** The following constants can be used for the T parameter to the
+** [sqlite3_stmt_scanstatus(S,X,T,V)] interface. Each constant designates a
+** different metric for sqlite3_stmt_scanstatus() to return.
+**
+** When the value returned to V is a string, space to hold that string is
+** managed by the prepared statement S and will be automatically freed when
+** S is finalized.
+**
+** <dl>
+** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
+** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be
+** set to the total number of times that the X-th loop has run.</dd>
+**
+** [[SQLITE_SCANSTAT_NVISIT]] <dt>SQLITE_SCANSTAT_NVISIT</dt>
+** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be set
+** to the total number of rows examined by all iterations of the X-th loop.</dd>
+**
+** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
+** <dd>^The "double" variable pointed to by the T parameter will be set to the
+** query planner's estimate for the average number of rows output from each
+** iteration of the X-th loop. If the query planner's estimates was accurate,
+** then this value will approximate the quotient NVISIT/NLOOP and the
+** product of this value for all prior loops with the same SELECTID will
+** be the NLOOP value for the current loop.
+**
+** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
+** <dd>^The "const char *" variable pointed to by the T parameter will be set
+** to a zero-terminated UTF-8 string containing the name of the index or table
+** used for the X-th loop.
+**
+** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
+** <dd>^The "const char *" variable pointed to by the T parameter will be set
+** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
+** description for the X-th loop.
+**
+** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECT</dt>
+** <dd>^The "int" variable pointed to by the T parameter will be set to the
+** "select-id" for the X-th loop. The select-id identifies which query or
+** subquery the loop is part of. The main query has a select-id of zero.
+** The select-id is the same value as is output in the first column
+** of an [EXPLAIN QUERY PLAN] query.
+** </dl>
+*/
+#define SQLITE_SCANSTAT_NLOOP 0
+#define SQLITE_SCANSTAT_NVISIT 1
+#define SQLITE_SCANSTAT_EST 2
+#define SQLITE_SCANSTAT_NAME 3
+#define SQLITE_SCANSTAT_EXPLAIN 4
+#define SQLITE_SCANSTAT_SELECTID 5
+
+/*
+** CAPI3REF: Prepared Statement Scan Status
+**
+** This interface returns information about the predicted and measured
+** performance for pStmt. Advanced applications can use this
+** interface to compare the predicted and the measured performance and
+** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
+**
+** Since this interface is expected to be rarely used, it is only
+** available if SQLite is compiled using the [SQLITE_ENABLE_STMT_SCANSTATUS]
+** compile-time option.
+**
+** The "iScanStatusOp" parameter determines which status information to return.
+** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
+** of this interface is undefined.
+** ^The requested measurement is written into a variable pointed to by
+** the "pOut" parameter.
+** Parameter "idx" identifies the specific loop to retrieve statistics for.
+** Loops are numbered starting from zero. ^If idx is out of range - less than
+** zero or greater than or equal to the total number of loops used to implement
+** the statement - a non-zero value is returned and the variable that pOut
+** points to is unchanged.
+**
+** ^Statistics might not be available for all loops in all statements. ^In cases
+** where there exist loops with no available statistics, this function behaves
+** as if the loop did not exist - it returns non-zero and leave the variable
+** that pOut points to unchanged.
+**
+** See also: [sqlite3_stmt_scanstatus_reset()]
+*/
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_scanstatus(
+ sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
+ int idx, /* Index of loop to report on */
+ int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
+ void *pOut /* Result written here */
+);
+
+/*
+** CAPI3REF: Zero Scan-Status Counters
+**
+** ^Zero all [sqlite3_stmt_scanstatus()] related event counters.
+**
+** This API is only available if the library is built with pre-processor
+** symbol [SQLITE_ENABLE_STMT_SCANSTATUS] defined.
+*/
+SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
/*
@@ -7842,15 +8119,6 @@ struct sqlite3_rtree_query_info {
#pragma warn -spa /* Suspicious pointer arithmetic */
#endif
-/* Needed for various definitions... */
-#ifndef _GNU_SOURCE
-# define _GNU_SOURCE
-#endif
-
-#if defined(__OpenBSD__) && !defined(_BSD_SOURCE)
-# define _BSD_SOURCE
-#endif
-
/*
** Include standard header files as necessary
*/
@@ -7892,6 +8160,18 @@ struct sqlite3_rtree_query_info {
#endif
/*
+** A macro to hint to the compiler that a function should not be
+** inlined.
+*/
+#if defined(__GNUC__)
+# define SQLITE_NOINLINE __attribute__((noinline))
+#elif defined(_MSC_VER) && _MSC_VER>=1310
+# define SQLITE_NOINLINE __declspec(noinline)
+#else
+# define SQLITE_NOINLINE
+#endif
+
+/*
** The SQLITE_THREADSAFE macro must be defined as 0, 1, or 2.
** 0 means mutexes are permanently disable and the library is never
** threadsafe. 1 means the library is serialized which is the highest
@@ -7919,10 +8199,9 @@ struct sqlite3_rtree_query_info {
#endif
/*
-** The SQLITE_DEFAULT_MEMSTATUS macro must be defined as either 0 or 1.
-** It determines whether or not the features related to
-** SQLITE_CONFIG_MEMSTATUS are available by default or not. This value can
-** be overridden at runtime using the sqlite3_config() API.
+** EVIDENCE-OF: R-25715-37072 Memory allocation statistics are enabled by
+** default unless SQLite is compiled with SQLITE_DEFAULT_MEMSTATUS=0 in
+** which case memory allocation statistics are disabled by default.
*/
#if !defined(SQLITE_DEFAULT_MEMSTATUS)
# define SQLITE_DEFAULT_MEMSTATUS 1
@@ -8077,7 +8356,7 @@ SQLITE_PRIVATE void sqlite3Coverage(int);
#endif
/*
-** Return true (non-zero) if the input is a integer that is too large
+** Return true (non-zero) if the input is an integer that is too large
** to fit in 32-bits. This macro is used inside of various testcase()
** macros to verify that we have tested SQLite for large-file support.
*/
@@ -8156,15 +8435,15 @@ struct Hash {
struct HashElem {
HashElem *next, *prev; /* Next and previous elements in the table */
void *data; /* Data associated with this element */
- const char *pKey; int nKey; /* Key associated with this element */
+ const char *pKey; /* Key associated with this element */
};
/*
** Access routines. To delete, insert a NULL pointer.
*/
SQLITE_PRIVATE void sqlite3HashInit(Hash*);
-SQLITE_PRIVATE void *sqlite3HashInsert(Hash*, const char *pKey, int nKey, void *pData);
-SQLITE_PRIVATE void *sqlite3HashFind(const Hash*, const char *pKey, int nKey);
+SQLITE_PRIVATE void *sqlite3HashInsert(Hash*, const char *pKey, void *pData);
+SQLITE_PRIVATE void *sqlite3HashFind(const Hash*, const char *pKey);
SQLITE_PRIVATE void sqlite3HashClear(Hash*);
/*
@@ -8424,6 +8703,27 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
#endif
/*
+** If no value has been provided for SQLITE_MAX_WORKER_THREADS, or if
+** SQLITE_TEMP_STORE is set to 3 (never use temporary files), set it
+** to zero.
+*/
+#if SQLITE_TEMP_STORE==3 || SQLITE_THREADSAFE==0
+# undef SQLITE_MAX_WORKER_THREADS
+# define SQLITE_MAX_WORKER_THREADS 0
+#endif
+#ifndef SQLITE_MAX_WORKER_THREADS
+# define SQLITE_MAX_WORKER_THREADS 8
+#endif
+#ifndef SQLITE_DEFAULT_WORKER_THREADS
+# define SQLITE_DEFAULT_WORKER_THREADS 0
+#endif
+#if SQLITE_DEFAULT_WORKER_THREADS>SQLITE_MAX_WORKER_THREADS
+# undef SQLITE_MAX_WORKER_THREADS
+# define SQLITE_MAX_WORKER_THREADS SQLITE_DEFAULT_WORKER_THREADS
+#endif
+
+
+/*
** GCC does not define the offsetof() macro so we'll have to do it
** ourselves.
*/
@@ -8438,6 +8738,11 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash*);
#define MAX(A,B) ((A)>(B)?(A):(B))
/*
+** Swap two objects of type TYPE.
+*/
+#define SWAP(TYPE,A,B) {TYPE t=A; A=B; B=t;}
+
+/*
** Check to see if this machine uses EBCDIC. (Yes, believe it or
** not, there are still machines out there that use EBCDIC.)
*/
@@ -8526,7 +8831,7 @@ typedef INT8_TYPE i8; /* 1-byte signed integer */
** gives a possible range of values of approximately 1.0e986 to 1e-986.
** But the allowed values are "grainy". Not every value is representable.
** For example, quantities 16 and 17 are both represented by a LogEst
-** of 40. However, since LogEst quantaties are suppose to be estimates,
+** of 40. However, since LogEst quantities are suppose to be estimates,
** not exact values, this imprecision is not a problem.
**
** "LogEst" is short for "Logarithmic Estimate".
@@ -8607,7 +8912,7 @@ SQLITE_PRIVATE const int sqlite3one;
** all alignment restrictions correct.
**
** Except, if SQLITE_4_BYTE_ALIGNED_MALLOC is defined, then the
-** underlying malloc() implemention might return us 4-byte aligned
+** underlying malloc() implementation might return us 4-byte aligned
** pointers. In that case, only verify 4-byte alignment.
*/
#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
@@ -8675,6 +8980,16 @@ SQLITE_PRIVATE const int sqlite3one;
#endif
/*
+** SELECTTRACE_ENABLED will be either 1 or 0 depending on whether or not
+** the Select query generator tracing logic is turned on.
+*/
+#if defined(SQLITE_DEBUG) || defined(SQLITE_ENABLE_SELECTTRACE)
+# define SELECTTRACE_ENABLED 1
+#else
+# define SELECTTRACE_ENABLED 0
+#endif
+
+/*
** An instance of the following structure is used to store the busy-handler
** callback for a given sqlite handle.
**
@@ -8806,12 +9121,14 @@ typedef struct PrintfArguments PrintfArguments;
typedef struct RowSet RowSet;
typedef struct Savepoint Savepoint;
typedef struct Select Select;
+typedef struct SQLiteThread SQLiteThread;
typedef struct SelectDest SelectDest;
typedef struct SrcList SrcList;
typedef struct StrAccum StrAccum;
typedef struct Table Table;
typedef struct TableLock TableLock;
typedef struct Token Token;
+typedef struct TreeView TreeView;
typedef struct Trigger Trigger;
typedef struct TriggerPrg TriggerPrg;
typedef struct TriggerStep TriggerStep;
@@ -8850,7 +9167,7 @@ typedef struct With With;
/* TODO: This definition is just included so other modules compile. It
** needs to be revisited.
*/
-#define SQLITE_N_BTREE_META 10
+#define SQLITE_N_BTREE_META 16
/*
** If defined as non-zero, auto-vacuum is enabled by default. Otherwise
@@ -8914,7 +9231,7 @@ SQLITE_PRIVATE int sqlite3BtreeBeginTrans(Btree*,int);
SQLITE_PRIVATE int sqlite3BtreeCommitPhaseOne(Btree*, const char *zMaster);
SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree*, int);
SQLITE_PRIVATE int sqlite3BtreeCommit(Btree*);
-SQLITE_PRIVATE int sqlite3BtreeRollback(Btree*,int);
+SQLITE_PRIVATE int sqlite3BtreeRollback(Btree*,int,int);
SQLITE_PRIVATE int sqlite3BtreeBeginStmt(Btree*,int);
SQLITE_PRIVATE int sqlite3BtreeCreateTable(Btree*, int*, int flags);
SQLITE_PRIVATE int sqlite3BtreeIsInTrans(Btree*);
@@ -8947,7 +9264,7 @@ SQLITE_PRIVATE int sqlite3BtreeIncrVacuum(Btree *);
SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree*, int, int*);
SQLITE_PRIVATE int sqlite3BtreeClearTable(Btree*, int, int*);
SQLITE_PRIVATE int sqlite3BtreeClearTableOfCursor(BtCursor*);
-SQLITE_PRIVATE void sqlite3BtreeTripAllCursors(Btree*, int);
+SQLITE_PRIVATE int sqlite3BtreeTripAllCursors(Btree*, int, int);
SQLITE_PRIVATE void sqlite3BtreeGetMeta(Btree *pBtree, int idx, u32 *pValue);
SQLITE_PRIVATE int sqlite3BtreeUpdateMeta(Btree*, int idx, u32 value);
@@ -8965,6 +9282,11 @@ SQLITE_PRIVATE int sqlite3BtreeNewDb(Btree *p);
** For example, the free-page-count field is located at byte offset 36 of
** the database file header. The incr-vacuum-flag field is located at
** byte offset 64 (== 36+4*7).
+**
+** The BTREE_DATA_VERSION value is not really a value stored in the header.
+** It is a read-only number computed by the pager. But we merge it with
+** the header value access routines since its access pattern is the same.
+** Call it a "virtual meta value".
*/
#define BTREE_FREE_PAGE_COUNT 0
#define BTREE_SCHEMA_VERSION 1
@@ -8975,6 +9297,7 @@ SQLITE_PRIVATE int sqlite3BtreeNewDb(Btree *p);
#define BTREE_USER_VERSION 6
#define BTREE_INCR_VACUUM 7
#define BTREE_APPLICATION_ID 8
+#define BTREE_DATA_VERSION 15 /* A virtual meta-value */
/*
** Values that may be OR'd together to form the second argument of an
@@ -9000,7 +9323,8 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
int bias,
int *pRes
);
-SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor*, int*);
+SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor*);
+SQLITE_PRIVATE int sqlite3BtreeCursorRestore(BtCursor*, int*);
SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor*);
SQLITE_PRIVATE int sqlite3BtreeInsert(BtCursor*, const void *pKey, i64 nKey,
const void *pData, int nData,
@@ -9026,6 +9350,7 @@ SQLITE_PRIVATE void sqlite3BtreeClearCursor(BtCursor *);
SQLITE_PRIVATE int sqlite3BtreeSetVersion(Btree *pBt, int iVersion);
SQLITE_PRIVATE void sqlite3BtreeCursorHints(BtCursor *, unsigned int mask);
SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *pBt);
+SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void);
#ifndef NDEBUG
SQLITE_PRIVATE int sqlite3BtreeCursorIsValid(BtCursor*);
@@ -9291,42 +9616,42 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_AddImm 37 /* synopsis: r[P1]=r[P1]+P2 */
#define OP_MustBeInt 38
#define OP_RealAffinity 39
-#define OP_Permutation 40
-#define OP_Compare 41 /* synopsis: r[P1@P3] <-> r[P2@P3] */
-#define OP_Jump 42
-#define OP_Once 43
-#define OP_If 44
-#define OP_IfNot 45
-#define OP_Column 46 /* synopsis: r[P3]=PX */
-#define OP_Affinity 47 /* synopsis: affinity(r[P1@P2]) */
-#define OP_MakeRecord 48 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
-#define OP_Count 49 /* synopsis: r[P2]=count() */
-#define OP_ReadCookie 50
-#define OP_SetCookie 51
-#define OP_ReopenIdx 52 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenRead 53 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenWrite 54 /* synopsis: root=P2 iDb=P3 */
-#define OP_OpenAutoindex 55 /* synopsis: nColumn=P2 */
-#define OP_OpenEphemeral 56 /* synopsis: nColumn=P2 */
-#define OP_SorterOpen 57
-#define OP_OpenPseudo 58 /* synopsis: P3 columns in r[P2] */
-#define OP_Close 59
-#define OP_SeekLT 60 /* synopsis: key=r[P3@P4] */
-#define OP_SeekLE 61 /* synopsis: key=r[P3@P4] */
-#define OP_SeekGE 62 /* synopsis: key=r[P3@P4] */
-#define OP_SeekGT 63 /* synopsis: key=r[P3@P4] */
-#define OP_Seek 64 /* synopsis: intkey=r[P2] */
-#define OP_NoConflict 65 /* synopsis: key=r[P3@P4] */
-#define OP_NotFound 66 /* synopsis: key=r[P3@P4] */
-#define OP_Found 67 /* synopsis: key=r[P3@P4] */
-#define OP_NotExists 68 /* synopsis: intkey=r[P3] */
-#define OP_Sequence 69 /* synopsis: r[P2]=cursor[P1].ctr++ */
-#define OP_NewRowid 70 /* synopsis: r[P2]=rowid */
+#define OP_Cast 40 /* synopsis: affinity(r[P1]) */
+#define OP_Permutation 41
+#define OP_Compare 42 /* synopsis: r[P1@P3] <-> r[P2@P3] */
+#define OP_Jump 43
+#define OP_Once 44
+#define OP_If 45
+#define OP_IfNot 46
+#define OP_Column 47 /* synopsis: r[P3]=PX */
+#define OP_Affinity 48 /* synopsis: affinity(r[P1@P2]) */
+#define OP_MakeRecord 49 /* synopsis: r[P3]=mkrec(r[P1@P2]) */
+#define OP_Count 50 /* synopsis: r[P2]=count() */
+#define OP_ReadCookie 51
+#define OP_SetCookie 52
+#define OP_ReopenIdx 53 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenRead 54 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenWrite 55 /* synopsis: root=P2 iDb=P3 */
+#define OP_OpenAutoindex 56 /* synopsis: nColumn=P2 */
+#define OP_OpenEphemeral 57 /* synopsis: nColumn=P2 */
+#define OP_SorterOpen 58
+#define OP_SequenceTest 59 /* synopsis: if( cursor[P1].ctr++ ) pc = P2 */
+#define OP_OpenPseudo 60 /* synopsis: P3 columns in r[P2] */
+#define OP_Close 61
+#define OP_SeekLT 62 /* synopsis: key=r[P3@P4] */
+#define OP_SeekLE 63 /* synopsis: key=r[P3@P4] */
+#define OP_SeekGE 64 /* synopsis: key=r[P3@P4] */
+#define OP_SeekGT 65 /* synopsis: key=r[P3@P4] */
+#define OP_Seek 66 /* synopsis: intkey=r[P2] */
+#define OP_NoConflict 67 /* synopsis: key=r[P3@P4] */
+#define OP_NotFound 68 /* synopsis: key=r[P3@P4] */
+#define OP_Found 69 /* synopsis: key=r[P3@P4] */
+#define OP_NotExists 70 /* synopsis: intkey=r[P3] */
#define OP_Or 71 /* same as TK_OR, synopsis: r[P3]=(r[P1] || r[P2]) */
#define OP_And 72 /* same as TK_AND, synopsis: r[P3]=(r[P1] && r[P2]) */
-#define OP_Insert 73 /* synopsis: intkey=r[P3] data=r[P2] */
-#define OP_InsertInt 74 /* synopsis: intkey=P3 data=r[P2] */
-#define OP_Delete 75
+#define OP_Sequence 73 /* synopsis: r[P2]=cursor[P1].ctr++ */
+#define OP_NewRowid 74 /* synopsis: r[P2]=rowid */
+#define OP_Insert 75 /* synopsis: intkey=r[P3] data=r[P2] */
#define OP_IsNull 76 /* same as TK_ISNULL, synopsis: if r[P1]==NULL goto P2 */
#define OP_NotNull 77 /* same as TK_NOTNULL, synopsis: if r[P1]!=NULL goto P2 */
#define OP_Ne 78 /* same as TK_NE, synopsis: if r[P1]!=r[P3] goto P2 */
@@ -9335,7 +9660,7 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Le 81 /* same as TK_LE, synopsis: if r[P1]<=r[P3] goto P2 */
#define OP_Lt 82 /* same as TK_LT, synopsis: if r[P1]<r[P3] goto P2 */
#define OP_Ge 83 /* same as TK_GE, synopsis: if r[P1]>=r[P3] goto P2 */
-#define OP_ResetCount 84
+#define OP_InsertInt 84 /* synopsis: intkey=P3 data=r[P2] */
#define OP_BitAnd 85 /* same as TK_BITAND, synopsis: r[P3]=r[P1]&r[P2] */
#define OP_BitOr 86 /* same as TK_BITOR, synopsis: r[P3]=r[P1]|r[P2] */
#define OP_ShiftLeft 87 /* same as TK_LSHIFT, synopsis: r[P3]=r[P2]<<r[P1] */
@@ -9346,70 +9671,67 @@ typedef struct VdbeOpList VdbeOpList;
#define OP_Divide 92 /* same as TK_SLASH, synopsis: r[P3]=r[P2]/r[P1] */
#define OP_Remainder 93 /* same as TK_REM, synopsis: r[P3]=r[P2]%r[P1] */
#define OP_Concat 94 /* same as TK_CONCAT, synopsis: r[P3]=r[P2]+r[P1] */
-#define OP_SorterCompare 95 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
+#define OP_Delete 95
#define OP_BitNot 96 /* same as TK_BITNOT, synopsis: r[P1]= ~r[P1] */
#define OP_String8 97 /* same as TK_STRING, synopsis: r[P2]='P4' */
-#define OP_SorterData 98 /* synopsis: r[P2]=data */
-#define OP_RowKey 99 /* synopsis: r[P2]=key */
-#define OP_RowData 100 /* synopsis: r[P2]=data */
-#define OP_Rowid 101 /* synopsis: r[P2]=rowid */
-#define OP_NullRow 102
-#define OP_Last 103
-#define OP_SorterSort 104
-#define OP_Sort 105
-#define OP_Rewind 106
-#define OP_SorterInsert 107
-#define OP_IdxInsert 108 /* synopsis: key=r[P2] */
-#define OP_IdxDelete 109 /* synopsis: key=r[P2@P3] */
-#define OP_IdxRowid 110 /* synopsis: r[P2]=rowid */
-#define OP_IdxLE 111 /* synopsis: key=r[P3@P4] */
-#define OP_IdxGT 112 /* synopsis: key=r[P3@P4] */
-#define OP_IdxLT 113 /* synopsis: key=r[P3@P4] */
-#define OP_IdxGE 114 /* synopsis: key=r[P3@P4] */
-#define OP_Destroy 115
-#define OP_Clear 116
-#define OP_ResetSorter 117
-#define OP_CreateIndex 118 /* synopsis: r[P2]=root iDb=P1 */
-#define OP_CreateTable 119 /* synopsis: r[P2]=root iDb=P1 */
-#define OP_ParseSchema 120
-#define OP_LoadAnalysis 121
-#define OP_DropTable 122
-#define OP_DropIndex 123
-#define OP_DropTrigger 124
-#define OP_IntegrityCk 125
-#define OP_RowSetAdd 126 /* synopsis: rowset(P1)=r[P2] */
-#define OP_RowSetRead 127 /* synopsis: r[P3]=rowset(P1) */
-#define OP_RowSetTest 128 /* synopsis: if r[P3] in rowset(P1) goto P2 */
-#define OP_Program 129
-#define OP_Param 130
-#define OP_FkCounter 131 /* synopsis: fkctr[P1]+=P2 */
-#define OP_FkIfZero 132 /* synopsis: if fkctr[P1]==0 goto P2 */
+#define OP_ResetCount 98
+#define OP_SorterCompare 99 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
+#define OP_SorterData 100 /* synopsis: r[P2]=data */
+#define OP_RowKey 101 /* synopsis: r[P2]=key */
+#define OP_RowData 102 /* synopsis: r[P2]=data */
+#define OP_Rowid 103 /* synopsis: r[P2]=rowid */
+#define OP_NullRow 104
+#define OP_Last 105
+#define OP_SorterSort 106
+#define OP_Sort 107
+#define OP_Rewind 108
+#define OP_SorterInsert 109
+#define OP_IdxInsert 110 /* synopsis: key=r[P2] */
+#define OP_IdxDelete 111 /* synopsis: key=r[P2@P3] */
+#define OP_IdxRowid 112 /* synopsis: r[P2]=rowid */
+#define OP_IdxLE 113 /* synopsis: key=r[P3@P4] */
+#define OP_IdxGT 114 /* synopsis: key=r[P3@P4] */
+#define OP_IdxLT 115 /* synopsis: key=r[P3@P4] */
+#define OP_IdxGE 116 /* synopsis: key=r[P3@P4] */
+#define OP_Destroy 117
+#define OP_Clear 118
+#define OP_ResetSorter 119
+#define OP_CreateIndex 120 /* synopsis: r[P2]=root iDb=P1 */
+#define OP_CreateTable 121 /* synopsis: r[P2]=root iDb=P1 */
+#define OP_ParseSchema 122
+#define OP_LoadAnalysis 123
+#define OP_DropTable 124
+#define OP_DropIndex 125
+#define OP_DropTrigger 126
+#define OP_IntegrityCk 127
+#define OP_RowSetAdd 128 /* synopsis: rowset(P1)=r[P2] */
+#define OP_RowSetRead 129 /* synopsis: r[P3]=rowset(P1) */
+#define OP_RowSetTest 130 /* synopsis: if r[P3] in rowset(P1) goto P2 */
+#define OP_Program 131
+#define OP_Param 132
#define OP_Real 133 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
-#define OP_MemMax 134 /* synopsis: r[P1]=max(r[P1],r[P2]) */
-#define OP_IfPos 135 /* synopsis: if r[P1]>0 goto P2 */
-#define OP_IfNeg 136 /* synopsis: r[P1]+=P3, if r[P1]<0 goto P2 */
-#define OP_IfZero 137 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */
-#define OP_AggFinal 138 /* synopsis: accum=r[P1] N=P2 */
-#define OP_IncrVacuum 139
-#define OP_Expire 140
-#define OP_TableLock 141 /* synopsis: iDb=P1 root=P2 write=P3 */
-#define OP_VBegin 142
-#define OP_ToText 143 /* same as TK_TO_TEXT */
-#define OP_ToBlob 144 /* same as TK_TO_BLOB */
-#define OP_ToNumeric 145 /* same as TK_TO_NUMERIC */
-#define OP_ToInt 146 /* same as TK_TO_INT */
-#define OP_ToReal 147 /* same as TK_TO_REAL */
-#define OP_VCreate 148
-#define OP_VDestroy 149
-#define OP_VOpen 150
-#define OP_VColumn 151 /* synopsis: r[P3]=vcolumn(P2) */
-#define OP_VNext 152
-#define OP_VRename 153
-#define OP_Pagecount 154
-#define OP_MaxPgcnt 155
-#define OP_Init 156 /* synopsis: Start at P2 */
-#define OP_Noop 157
-#define OP_Explain 158
+#define OP_FkCounter 134 /* synopsis: fkctr[P1]+=P2 */
+#define OP_FkIfZero 135 /* synopsis: if fkctr[P1]==0 goto P2 */
+#define OP_MemMax 136 /* synopsis: r[P1]=max(r[P1],r[P2]) */
+#define OP_IfPos 137 /* synopsis: if r[P1]>0 goto P2 */
+#define OP_IfNeg 138 /* synopsis: r[P1]+=P3, if r[P1]<0 goto P2 */
+#define OP_IfZero 139 /* synopsis: r[P1]+=P3, if r[P1]==0 goto P2 */
+#define OP_AggFinal 140 /* synopsis: accum=r[P1] N=P2 */
+#define OP_IncrVacuum 141
+#define OP_Expire 142
+#define OP_TableLock 143 /* synopsis: iDb=P1 root=P2 write=P3 */
+#define OP_VBegin 144
+#define OP_VCreate 145
+#define OP_VDestroy 146
+#define OP_VOpen 147
+#define OP_VColumn 148 /* synopsis: r[P3]=vcolumn(P2) */
+#define OP_VNext 149
+#define OP_VRename 150
+#define OP_Pagecount 151
+#define OP_MaxPgcnt 152
+#define OP_Init 153 /* synopsis: Start at P2 */
+#define OP_Noop 154
+#define OP_Explain 155
/* Properties such as "out2" or "jump" that are specified in
@@ -9429,21 +9751,21 @@ typedef struct VdbeOpList VdbeOpList;
/* 16 */ 0x01, 0x01, 0x04, 0x24, 0x01, 0x04, 0x05, 0x10,\
/* 24 */ 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02,\
/* 32 */ 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x05, 0x04,\
-/* 40 */ 0x00, 0x00, 0x01, 0x01, 0x05, 0x05, 0x00, 0x00,\
-/* 48 */ 0x00, 0x02, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00,\
-/* 56 */ 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11,\
-/* 64 */ 0x08, 0x11, 0x11, 0x11, 0x11, 0x02, 0x02, 0x4c,\
-/* 72 */ 0x4c, 0x00, 0x00, 0x00, 0x05, 0x05, 0x15, 0x15,\
+/* 40 */ 0x04, 0x00, 0x00, 0x01, 0x01, 0x05, 0x05, 0x00,\
+/* 48 */ 0x00, 0x00, 0x02, 0x02, 0x10, 0x00, 0x00, 0x00,\
+/* 56 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11,\
+/* 64 */ 0x11, 0x11, 0x08, 0x11, 0x11, 0x11, 0x11, 0x4c,\
+/* 72 */ 0x4c, 0x02, 0x02, 0x00, 0x05, 0x05, 0x15, 0x15,\
/* 80 */ 0x15, 0x15, 0x15, 0x15, 0x00, 0x4c, 0x4c, 0x4c,\
/* 88 */ 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x00,\
-/* 96 */ 0x24, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,\
-/* 104 */ 0x01, 0x01, 0x01, 0x08, 0x08, 0x00, 0x02, 0x01,\
-/* 112 */ 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x02,\
-/* 120 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x45,\
-/* 128 */ 0x15, 0x01, 0x02, 0x00, 0x01, 0x02, 0x08, 0x05,\
-/* 136 */ 0x05, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04,\
-/* 144 */ 0x04, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,\
-/* 152 */ 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00,}
+/* 96 */ 0x24, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,\
+/* 104 */ 0x00, 0x01, 0x01, 0x01, 0x01, 0x08, 0x08, 0x00,\
+/* 112 */ 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00,\
+/* 120 */ 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+/* 128 */ 0x0c, 0x45, 0x15, 0x01, 0x02, 0x02, 0x00, 0x01,\
+/* 136 */ 0x08, 0x05, 0x05, 0x05, 0x00, 0x01, 0x00, 0x00,\
+/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,\
+/* 152 */ 0x02, 0x01, 0x00, 0x00,}
/************** End of opcodes.h *********************************************/
/************** Continuing where we left off in vdbe.h ***********************/
@@ -9501,10 +9823,10 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(Vdbe*, const char*);
SQLITE_PRIVATE int sqlite3MemCompare(const Mem*, const Mem*, const CollSeq*);
SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(KeyInfo*,int,const void*,UnpackedRecord*);
-SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*,int);
+SQLITE_PRIVATE int sqlite3VdbeRecordCompare(int,const void*,UnpackedRecord*);
SQLITE_PRIVATE UnpackedRecord *sqlite3VdbeAllocUnpackedRecord(KeyInfo *, char *, int, char **);
-typedef int (*RecordCompare)(int,const void*,UnpackedRecord*,int);
+typedef int (*RecordCompare)(int,const void*,UnpackedRecord*);
SQLITE_PRIVATE RecordCompare sqlite3VdbeFindCompare(UnpackedRecord*);
#ifndef SQLITE_OMIT_TRIGGER
@@ -9571,6 +9893,12 @@ SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe*,int);
# define VDBE_OFFSET_LINENO(x) 0
#endif
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+SQLITE_PRIVATE void sqlite3VdbeScanStatus(Vdbe*, int, int, int, LogEst, const char*);
+#else
+# define sqlite3VdbeScanStatus(a,b,c,d,e)
+#endif
+
#endif
/************** End of vdbe.h ************************************************/
@@ -9751,6 +10079,7 @@ SQLITE_PRIVATE int sqlite3PagerWalFramesize(Pager *pPager);
/* Functions used to query pager state and configuration. */
SQLITE_PRIVATE u8 sqlite3PagerIsreadonly(Pager*);
+SQLITE_PRIVATE u32 sqlite3PagerDataVersion(Pager*);
SQLITE_PRIVATE int sqlite3PagerRefcount(Pager*);
SQLITE_PRIVATE int sqlite3PagerMemUsed(Pager*);
SQLITE_PRIVATE const char *sqlite3PagerFilename(Pager*, int);
@@ -9767,6 +10096,8 @@ SQLITE_PRIVATE int sqlite3SectorSize(sqlite3_file *);
/* Functions used to truncate the database file. */
SQLITE_PRIVATE void sqlite3PagerTruncateImage(Pager*,Pgno);
+SQLITE_PRIVATE void sqlite3PagerRekey(DbPage*, Pgno, u16);
+
#if defined(SQLITE_HAS_CODEC) && !defined(SQLITE_OMIT_WAL)
SQLITE_PRIVATE void *sqlite3PagerCodec(DbPage *);
#endif
@@ -9862,7 +10193,7 @@ SQLITE_PRIVATE void sqlite3PCacheBufferSetup(void *, int sz, int n);
** Under memory stress, invoke xStress to try to make pages clean.
** Only clean and unpinned pages can be reclaimed.
*/
-SQLITE_PRIVATE void sqlite3PcacheOpen(
+SQLITE_PRIVATE int sqlite3PcacheOpen(
int szPage, /* Size of every page */
int szExtra, /* Extra space associated with each page */
int bPurgeable, /* True if pages are on backing store */
@@ -9872,7 +10203,7 @@ SQLITE_PRIVATE void sqlite3PcacheOpen(
);
/* Modify the page-size after the cache has been created. */
-SQLITE_PRIVATE void sqlite3PcacheSetPageSize(PCache *, int);
+SQLITE_PRIVATE int sqlite3PcacheSetPageSize(PCache *, int);
/* Return the size in bytes of a PCache object. Used to preallocate
** storage space.
@@ -9882,7 +10213,9 @@ SQLITE_PRIVATE int sqlite3PcacheSize(void);
/* One release per successful fetch. Page is pinned until released.
** Reference counted.
*/
-SQLITE_PRIVATE int sqlite3PcacheFetch(PCache*, Pgno, int createFlag, PgHdr**);
+SQLITE_PRIVATE sqlite3_pcache_page *sqlite3PcacheFetch(PCache*, Pgno, int createFlag);
+SQLITE_PRIVATE int sqlite3PcacheFetchStress(PCache*, Pgno, sqlite3_pcache_page**);
+SQLITE_PRIVATE PgHdr *sqlite3PcacheFetchFinish(PCache*, Pgno, sqlite3_pcache_page *pPage);
SQLITE_PRIVATE void sqlite3PcacheRelease(PgHdr*);
SQLITE_PRIVATE void sqlite3PcacheDrop(PgHdr*); /* Remove page from cache */
@@ -9952,6 +10285,10 @@ SQLITE_PRIVATE void sqlite3PcacheStats(int*,int*,int*,int*);
SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
+/* Return the header size */
+SQLITE_PRIVATE int sqlite3HeaderSizePcache(void);
+SQLITE_PRIVATE int sqlite3HeaderSizePcache1(void);
+
#endif /* _PCACHE_H_ */
/************** End of pcache.h **********************************************/
@@ -10142,7 +10479,7 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
** shared locks begins at SHARED_FIRST.
**
** The same locking strategy and
-** byte ranges are used for Unix. This leaves open the possiblity of having
+** byte ranges are used for Unix. This leaves open the possibility of having
** clients on win95, winNT, and unix all talking to the same shared file
** and all locking correctly. To do so would require that samba (or whatever
** tool is being used for file sharing) implements locks correctly between
@@ -10261,7 +10598,7 @@ SQLITE_PRIVATE int sqlite3OsCloseFree(sqlite3_file *);
** Figure out what version of the code to use. The choices are
**
** SQLITE_MUTEX_OMIT No mutex logic. Not even stubs. The
-** mutexes implemention cannot be overridden
+** mutexes implementation cannot be overridden
** at start-time.
**
** SQLITE_MUTEX_NOOP For single-threaded applications. No
@@ -10381,7 +10718,7 @@ struct Schema {
** The number of different kinds of things that can be limited
** using the sqlite3_limit() interface.
*/
-#define SQLITE_N_LIMIT (SQLITE_LIMIT_TRIGGER_DEPTH+1)
+#define SQLITE_N_LIMIT (SQLITE_LIMIT_WORKER_THREADS+1)
/*
** Lookaside malloc is a set of fixed-size buffers that can be used
@@ -10428,6 +10765,45 @@ struct FuncDefHash {
FuncDef *a[23]; /* Hash table for functions */
};
+#ifdef SQLITE_USER_AUTHENTICATION
+/*
+** Information held in the "sqlite3" database connection object and used
+** to manage user authentication.
+*/
+typedef struct sqlite3_userauth sqlite3_userauth;
+struct sqlite3_userauth {
+ u8 authLevel; /* Current authentication level */
+ int nAuthPW; /* Size of the zAuthPW in bytes */
+ char *zAuthPW; /* Password used to authenticate */
+ char *zAuthUser; /* User name used to authenticate */
+};
+
+/* Allowed values for sqlite3_userauth.authLevel */
+#define UAUTH_Unknown 0 /* Authentication not yet checked */
+#define UAUTH_Fail 1 /* User authentication failed */
+#define UAUTH_User 2 /* Authenticated as a normal user */
+#define UAUTH_Admin 3 /* Authenticated as an administrator */
+
+/* Functions used only by user authorization logic */
+SQLITE_PRIVATE int sqlite3UserAuthTable(const char*);
+SQLITE_PRIVATE int sqlite3UserAuthCheckLogin(sqlite3*,const char*,u8*);
+SQLITE_PRIVATE void sqlite3UserAuthInit(sqlite3*);
+SQLITE_PRIVATE void sqlite3CryptFunc(sqlite3_context*,int,sqlite3_value**);
+
+#endif /* SQLITE_USER_AUTHENTICATION */
+
+/*
+** typedef for the authorization callback function.
+*/
+#ifdef SQLITE_USER_AUTHENTICATION
+ typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*,
+ const char*, const char*);
+#else
+ typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*,
+ const char*);
+#endif
+
+
/*
** Each database connection is an instance of the following structure.
*/
@@ -10445,6 +10821,7 @@ struct sqlite3 {
int errCode; /* Most recent error code (SQLITE_*) */
int errMask; /* & result codes with this before returning */
u16 dbOptFlags; /* Flags to enable/disable optimizations */
+ u8 enc; /* Text encoding */
u8 autoCommit; /* The auto-commit flag. */
u8 temp_store; /* 1: file 2: memory 0: default */
u8 mallocFailed; /* True if we have seen a malloc failure */
@@ -10458,6 +10835,7 @@ struct sqlite3 {
int nChange; /* Value returned by sqlite3_changes() */
int nTotalChange; /* Value returned by sqlite3_total_changes() */
int aLimit[SQLITE_N_LIMIT]; /* Limits */
+ int nMaxSorterMmap; /* Maximum size of regions mapped by sorter */
struct sqlite3InitInfo { /* Information used during initialization */
int newTnum; /* Rootpage of table being initialized */
u8 iDb; /* Which db file is being initialized */
@@ -10494,8 +10872,7 @@ struct sqlite3 {
} u1;
Lookaside lookaside; /* Lookaside malloc configuration */
#ifndef SQLITE_OMIT_AUTHORIZATION
- int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
- /* Access authorization function */
+ sqlite3_xauth xAuth; /* Access authorization function */
void *pAuthArg; /* 1st argument to the access auth function */
#endif
#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
@@ -10521,7 +10898,6 @@ struct sqlite3 {
i64 nDeferredCons; /* Net deferred constraints this transaction. */
i64 nDeferredImmCons; /* Net deferred immediate constraints */
int *pnBytesFreed; /* If not NULL, increment this in DbFree() */
-
#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
/* The following variables are all protected by the STATIC_MASTER
** mutex, not by sqlite3.mutex. They are used by code in notify.c.
@@ -10539,12 +10915,16 @@ struct sqlite3 {
void (*xUnlockNotify)(void **, int); /* Unlock notify callback */
sqlite3 *pNextBlocked; /* Next in list of all blocked connections */
#endif
+#ifdef SQLITE_USER_AUTHENTICATION
+ sqlite3_userauth auth; /* User authentication information */
+#endif
};
/*
** A macro to discover the encoding of a database.
*/
-#define ENC(db) ((db)->aDb[0].pSchema->enc)
+#define SCHEMA_ENC(db) ((db)->aDb[0].pSchema->enc)
+#define ENC(db) ((db)->enc)
/*
** Possible values for the sqlite3.flags.
@@ -10597,8 +10977,7 @@ struct sqlite3 {
#define SQLITE_SubqCoroutine 0x0100 /* Evaluate subqueries as coroutines */
#define SQLITE_Transitive 0x0200 /* Transitive constraints */
#define SQLITE_OmitNoopJoin 0x0400 /* Omit unused tables in joins */
-#define SQLITE_Stat3 0x0800 /* Use the SQLITE_STAT3 table */
-#define SQLITE_AdjustOutEst 0x1000 /* Adjust output estimates using WHERE */
+#define SQLITE_Stat34 0x0800 /* Use STAT3 or STAT4 data */
#define SQLITE_AllOpts 0xffff /* All optimizations */
/*
@@ -10685,6 +11064,7 @@ struct FuncDestructor {
#define SQLITE_FUNC_COALESCE 0x200 /* Built-in coalesce() or ifnull() */
#define SQLITE_FUNC_UNLIKELY 0x400 /* Built-in unlikely() function */
#define SQLITE_FUNC_CONSTANT 0x800 /* Constant inputs give a constant output */
+#define SQLITE_FUNC_MINMAX 0x1000 /* True for min() and max() aggregates */
/*
** The following three macros, FUNCTION(), LIKEFUNC() and AGGREGATE() are
@@ -10732,6 +11112,9 @@ struct FuncDestructor {
#define AGGREGATE(zName, nArg, arg, nc, xStep, xFinal) \
{nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL), \
SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0}
+#define AGGREGATE2(zName, nArg, arg, nc, xStep, xFinal, extraFlags) \
+ {nArg, SQLITE_UTF8|(nc*SQLITE_FUNC_NEEDCOLL)|extraFlags, \
+ SQLITE_INT_TO_PTR(arg), 0, 0, xStep,xFinal,#zName,0,0}
/*
** All current savepoints are stored in a linked list starting at
@@ -10818,18 +11201,18 @@ struct CollSeq {
** 't' for SQLITE_AFF_TEXT. But we can save a little space and improve
** the speed a little by numbering the values consecutively.
**
-** But rather than start with 0 or 1, we begin with 'a'. That way,
+** But rather than start with 0 or 1, we begin with 'A'. That way,
** when multiple affinity types are concatenated into a string and
** used as the P4 operand, they will be more readable.
**
** Note also that the numeric types are grouped together so that testing
-** for a numeric type is a single comparison.
+** for a numeric type is a single comparison. And the NONE type is first.
*/
-#define SQLITE_AFF_TEXT 'a'
-#define SQLITE_AFF_NONE 'b'
-#define SQLITE_AFF_NUMERIC 'c'
-#define SQLITE_AFF_INTEGER 'd'
-#define SQLITE_AFF_REAL 'e'
+#define SQLITE_AFF_NONE 'A'
+#define SQLITE_AFF_TEXT 'B'
+#define SQLITE_AFF_NUMERIC 'C'
+#define SQLITE_AFF_INTEGER 'D'
+#define SQLITE_AFF_REAL 'E'
#define sqlite3IsNumericAffinity(X) ((X)>=SQLITE_AFF_NUMERIC)
@@ -10837,7 +11220,7 @@ struct CollSeq {
** The SQLITE_AFF_MASK values masks off the significant bits of an
** affinity value.
*/
-#define SQLITE_AFF_MASK 0x67
+#define SQLITE_AFF_MASK 0x47
/*
** Additional bit values that can be ORed with an affinity without
@@ -10848,10 +11231,10 @@ struct CollSeq {
** operator is NULL. It is added to certain comparison operators to
** prove that the operands are always NOT NULL.
*/
-#define SQLITE_JUMPIFNULL 0x08 /* jumps if either operand is NULL */
-#define SQLITE_STOREP2 0x10 /* Store result in reg[P2] rather than jump */
+#define SQLITE_JUMPIFNULL 0x10 /* jumps if either operand is NULL */
+#define SQLITE_STOREP2 0x20 /* Store result in reg[P2] rather than jump */
#define SQLITE_NULLEQ 0x80 /* NULL=NULL */
-#define SQLITE_NOTNULL 0x88 /* Assert that operands are never NULL */
+#define SQLITE_NOTNULL 0x90 /* Assert that operands are never NULL */
/*
** An object of this type is created for each virtual table present in
@@ -11121,7 +11504,7 @@ struct UnpackedRecord {
KeyInfo *pKeyInfo; /* Collation and sort-order information */
u16 nField; /* Number of entries in apMem[] */
i8 default_rc; /* Comparison result if keys are equal */
- u8 isCorrupt; /* Corruption detected by xRecordCompare() */
+ u8 errCode; /* Error detected by xRecordCompare (CORRUPT or NOMEM) */
Mem *aMem; /* Values */
int r1; /* Value to return if (lhs > rhs) */
int r2; /* Value to return if (rhs < lhs) */
@@ -11165,7 +11548,6 @@ struct Index {
u8 *aSortOrder; /* for each column: True==DESC, False==ASC */
char **azColl; /* Array of collation sequence names for index */
Expr *pPartIdxWhere; /* WHERE clause for partial indices */
- KeyInfo *pKeyInfo; /* A KeyInfo object suitable for this index */
int tnum; /* DB Page containing root of this index */
LogEst szIdxRow; /* Estimated average row size in bytes */
u16 nKeyCol; /* Number of columns forming the key */
@@ -11176,11 +11558,14 @@ struct Index {
unsigned uniqNotNull:1; /* True if UNIQUE and NOT NULL for all columns */
unsigned isResized:1; /* True if resizeIndexObject() has been called */
unsigned isCovering:1; /* True if this is a covering index */
+ unsigned noSkipScan:1; /* Do not try to use skip-scan if true */
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
int nSample; /* Number of elements in aSample[] */
int nSampleCol; /* Size of IndexSample.anEq[] and so on */
tRowcnt *aAvgEq; /* Average nEq values for keys not in aSample */
IndexSample *aSample; /* Samples of the left-most key */
+ tRowcnt *aiRowEst; /* Non-logarithmic stat1 data for this index */
+ tRowcnt nRowEst0; /* Non-logarithmic number of rows in the index */
#endif
};
@@ -11378,7 +11763,7 @@ struct Expr {
int iTable; /* TK_COLUMN: cursor number of table holding column
** TK_REGISTER: register number
** TK_TRIGGER: 1 -> new, 0 -> old
- ** EP_Unlikely: 1000 times likelihood */
+ ** EP_Unlikely: 134217728 times likelihood */
ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid.
** TK_VARIABLE: variable number (always >= 1). */
i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */
@@ -11393,7 +11778,7 @@ struct Expr {
/*
** The following are the meanings of bits in the Expr.flags field.
*/
-#define EP_FromJoin 0x000001 /* Originated in ON or USING clause of a join */
+#define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */
#define EP_Agg 0x000002 /* Contains one or more aggregate functions */
#define EP_Resolved 0x000004 /* IDs have been resolved to COLUMNs */
#define EP_Error 0x000008 /* Expression contains one or more errors */
@@ -11413,6 +11798,7 @@ struct Expr {
#define EP_NoReduce 0x020000 /* Cannot EXPRDUP_REDUCE this Expr */
#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */
#define EP_Constant 0x080000 /* Node is a constant */
+#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */
/*
** These macros can be used to test, set, or clear bits in the
@@ -11611,7 +11997,7 @@ struct SrcList {
#define WHERE_OMIT_OPEN_CLOSE 0x0010 /* Table cursors are already open */
#define WHERE_FORCE_TABLE 0x0020 /* Do not use an index-only search */
#define WHERE_ONETABLE_ONLY 0x0040 /* Only code the 1st table in pTabList */
-#define WHERE_AND_ONLY 0x0080 /* Don't use indices for OR terms */
+ /* 0x0080 // not currently used */
#define WHERE_GROUPBY 0x0100 /* pOrderBy is really a GROUP BY */
#define WHERE_DISTINCTBY 0x0200 /* pOrderby is really a DISTINCT clause */
#define WHERE_WANT_DISTINCT 0x0400 /* All output needs to be distinct */
@@ -11654,17 +12040,22 @@ struct NameContext {
NameContext *pNext; /* Next outer name context. NULL for outermost */
int nRef; /* Number of names resolved by this context */
int nErr; /* Number of errors encountered while resolving names */
- u8 ncFlags; /* Zero or more NC_* flags defined below */
+ u16 ncFlags; /* Zero or more NC_* flags defined below */
};
/*
** Allowed values for the NameContext, ncFlags field.
+**
+** Note: NC_MinMaxAgg must have the same value as SF_MinMaxAgg and
+** SQLITE_FUNC_MINMAX.
+**
*/
-#define NC_AllowAgg 0x01 /* Aggregate functions are allowed here */
-#define NC_HasAgg 0x02 /* One or more aggregate functions seen */
-#define NC_IsCheck 0x04 /* True if resolving names in a CHECK constraint */
-#define NC_InAggFunc 0x08 /* True if analyzing arguments to an agg func */
-#define NC_PartIdx 0x10 /* True if resolving a partial index WHERE */
+#define NC_AllowAgg 0x0001 /* Aggregate functions are allowed here */
+#define NC_HasAgg 0x0002 /* One or more aggregate functions seen */
+#define NC_IsCheck 0x0004 /* True if resolving names in a CHECK constraint */
+#define NC_InAggFunc 0x0008 /* True if analyzing arguments to an agg func */
+#define NC_PartIdx 0x0010 /* True if resolving a partial index WHERE */
+#define NC_MinMaxAgg 0x1000 /* min/max aggregates seen. See note above */
/*
** An instance of the following structure contains all information
@@ -11691,6 +12082,9 @@ struct Select {
u8 op; /* One of: TK_UNION TK_ALL TK_INTERSECT TK_EXCEPT */
u16 selFlags; /* Various SF_* values */
int iLimit, iOffset; /* Memory registers holding LIMIT & OFFSET counters */
+#if SELECTTRACE_ENABLED
+ char zSelName[12]; /* Symbolic name of this SELECT use for debugging */
+#endif
int addrOpenEphm[2]; /* OP_OpenEphem opcodes related to this select */
u64 nSelectRow; /* Estimated number of result rows */
SrcList *pSrc; /* The FROM clause */
@@ -11715,13 +12109,13 @@ struct Select {
#define SF_UsesEphemeral 0x0008 /* Uses the OpenEphemeral opcode */
#define SF_Expanded 0x0010 /* sqlite3SelectExpand() called on this */
#define SF_HasTypeInfo 0x0020 /* FROM subqueries have Table metadata */
- /* 0x0040 NOT USED */
+#define SF_Compound 0x0040 /* Part of a compound query */
#define SF_Values 0x0080 /* Synthesized from VALUES clause */
- /* 0x0100 NOT USED */
+#define SF_AllValues 0x0100 /* All terms of compound are VALUES */
#define SF_NestedFrom 0x0200 /* Part of a parenthesized FROM clause */
#define SF_MaybeConvert 0x0400 /* Need convertCompoundSelectToSubquery() */
#define SF_Recursive 0x0800 /* The recursive part of a recursive CTE */
-#define SF_Compound 0x1000 /* Part of a compound query */
+#define SF_MinMaxAgg 0x1000 /* Aggregate containing min() or max() */
/*
@@ -11949,6 +12343,10 @@ struct Parse {
int regRowid; /* Register holding rowid of CREATE TABLE entry */
int regRoot; /* Register holding root page number for new objects */
int nMaxArg; /* Max args passed to user function by sub-program */
+#if SELECTTRACE_ENABLED
+ int nSelect; /* Number of SELECT statements seen */
+ int nSelectIndent; /* How far to indent SELECTTRACE() output */
+#endif
#ifndef SQLITE_OMIT_SHARED_CACHE
int nTableLock; /* Number of locks in aTableLock */
TableLock *aTableLock; /* Required table locks for shared-cache mode */
@@ -12028,11 +12426,11 @@ struct AuthContext {
** Bitfield flags for P5 value in various opcodes.
*/
#define OPFLAG_NCHANGE 0x01 /* Set to update db->nChange */
+#define OPFLAG_EPHEM 0x01 /* OP_Column: Ephemeral output is ok */
#define OPFLAG_LASTROWID 0x02 /* Set to update db->lastRowid */
#define OPFLAG_ISUPDATE 0x04 /* This OP_Insert is an sql UPDATE */
#define OPFLAG_APPEND 0x08 /* This is likely to be an append */
#define OPFLAG_USESEEKRESULT 0x10 /* Try to avoid a seek in BtreeInsert() */
-#define OPFLAG_CLEARCACHE 0x20 /* Clear pseudo-table cache in OP_Column */
#define OPFLAG_LENGTHARG 0x40 /* OP_Column only used for length() */
#define OPFLAG_TYPEOFARG 0x80 /* OP_Column only used for typeof() */
#define OPFLAG_BULKCSR 0x01 /* OP_Open** used to open bulk cursor */
@@ -12203,6 +12601,7 @@ struct Sqlite3Config {
int nPage; /* Number of pages in pPage[] */
int mxParserStack; /* maximum depth of the parser stack */
int sharedCacheEnabled; /* true if shared-cache mode enabled */
+ u32 szPma; /* Maximum Sorter PMA size */
/* The above might be initialized to non-zero. The following need to always
** initially be zero, however. */
int isInit; /* True after initialization has finished */
@@ -12258,9 +12657,11 @@ struct Walker {
void (*xSelectCallback2)(Walker*,Select*);/* Second callback for SELECTs */
Parse *pParse; /* Parser context. */
int walkerDepth; /* Number of subqueries */
+ u8 eCode; /* A small processing code */
union { /* Extra data for callback */
NameContext *pNC; /* Naming context */
- int i; /* Integer value */
+ int n; /* A counter */
+ int iCur; /* A cursor number */
SrcList *pSrcList; /* FROM clause */
struct SrcCount *pSrcCount; /* Counting column references */
} u;
@@ -12296,6 +12697,17 @@ struct With {
} a[1];
};
+#ifdef SQLITE_DEBUG
+/*
+** An instance of the TreeView object is used for printing the content of
+** data structures on sqlite3DebugPrintf() using a tree-like view.
+*/
+struct TreeView {
+ int iLevel; /* Which level of the tree we are on */
+ u8 bLine[100]; /* Draw vertical in column i if bLine[i] is true */
+};
+#endif /* SQLITE_DEBUG */
+
/*
** Assuming zIn points to the first byte of a UTF-8 character,
** advance zIn to point to the first byte of the next UTF-8 character.
@@ -12323,11 +12735,11 @@ SQLITE_PRIVATE int sqlite3CantopenError(int);
/*
** FTS4 is really an extension for FTS3. It is enabled using the
-** SQLITE_ENABLE_FTS3 macro. But to avoid confusion we also all
-** the SQLITE_ENABLE_FTS4 macro to serve as an alisse for SQLITE_ENABLE_FTS3.
+** SQLITE_ENABLE_FTS3 macro. But to avoid confusion we also call
+** the SQLITE_ENABLE_FTS4 macro to serve as an alias for SQLITE_ENABLE_FTS3.
*/
#if defined(SQLITE_ENABLE_FTS4) && !defined(SQLITE_ENABLE_FTS3)
-# define SQLITE_ENABLE_FTS3
+# define SQLITE_ENABLE_FTS3 1
#endif
/*
@@ -12361,6 +12773,7 @@ SQLITE_PRIVATE int sqlite3CantopenError(int);
# define sqlite3Isxdigit(x) isxdigit((unsigned char)(x))
# define sqlite3Tolower(x) tolower((unsigned char)(x))
#endif
+SQLITE_PRIVATE int sqlite3IsIdChar(u8);
/*
** Internal function prototypes
@@ -12371,15 +12784,15 @@ SQLITE_PRIVATE int sqlite3Strlen30(const char*);
SQLITE_PRIVATE int sqlite3MallocInit(void);
SQLITE_PRIVATE void sqlite3MallocEnd(void);
-SQLITE_PRIVATE void *sqlite3Malloc(int);
-SQLITE_PRIVATE void *sqlite3MallocZero(int);
-SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3*, int);
-SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3*, int);
+SQLITE_PRIVATE void *sqlite3Malloc(u64);
+SQLITE_PRIVATE void *sqlite3MallocZero(u64);
+SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3*, u64);
+SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3*, u64);
SQLITE_PRIVATE char *sqlite3DbStrDup(sqlite3*,const char*);
-SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3*,const char*, int);
-SQLITE_PRIVATE void *sqlite3Realloc(void*, int);
-SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *, void *, int);
-SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *, void *, int);
+SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3*,const char*, u64);
+SQLITE_PRIVATE void *sqlite3Realloc(void*, u64);
+SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *, void *, u64);
+SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *, void *, u64);
SQLITE_PRIVATE void sqlite3DbFree(sqlite3*, void*);
SQLITE_PRIVATE int sqlite3MallocSize(void*);
SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3*, void*);
@@ -12459,25 +12872,14 @@ SQLITE_PRIVATE void sqlite3DebugPrintf(const char*, ...);
SQLITE_PRIVATE void *sqlite3TestTextToPtr(const char*);
#endif
-/* Output formatting for SQLITE_TESTCTRL_EXPLAIN */
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
-SQLITE_PRIVATE void sqlite3ExplainBegin(Vdbe*);
-SQLITE_PRIVATE void sqlite3ExplainPrintf(Vdbe*, const char*, ...);
-SQLITE_PRIVATE void sqlite3ExplainNL(Vdbe*);
-SQLITE_PRIVATE void sqlite3ExplainPush(Vdbe*);
-SQLITE_PRIVATE void sqlite3ExplainPop(Vdbe*);
-SQLITE_PRIVATE void sqlite3ExplainFinish(Vdbe*);
-SQLITE_PRIVATE void sqlite3ExplainSelect(Vdbe*, Select*);
-SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe*, Expr*);
-SQLITE_PRIVATE void sqlite3ExplainExprList(Vdbe*, ExprList*);
-SQLITE_PRIVATE const char *sqlite3VdbeExplanation(Vdbe*);
-#else
-# define sqlite3ExplainBegin(X)
-# define sqlite3ExplainSelect(A,B)
-# define sqlite3ExplainExpr(A,B)
-# define sqlite3ExplainExprList(A,B)
-# define sqlite3ExplainFinish(X)
-# define sqlite3VdbeExplanation(X) 0
+#if defined(SQLITE_DEBUG)
+SQLITE_PRIVATE TreeView *sqlite3TreeViewPush(TreeView*,u8);
+SQLITE_PRIVATE void sqlite3TreeViewPop(TreeView*);
+SQLITE_PRIVATE void sqlite3TreeViewLine(TreeView*, const char*, ...);
+SQLITE_PRIVATE void sqlite3TreeViewItem(TreeView*, const char*, u8);
+SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView*, const Expr*, u8);
+SQLITE_PRIVATE void sqlite3TreeViewExprList(TreeView*, const ExprList*, u8, const char*);
+SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView*, const Select*, u8);
#endif
@@ -12659,7 +13061,8 @@ SQLITE_PRIVATE void sqlite3CloseSavepoints(sqlite3 *);
SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3*);
SQLITE_PRIVATE int sqlite3ExprIsConstant(Expr*);
SQLITE_PRIVATE int sqlite3ExprIsConstantNotJoin(Expr*);
-SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr*);
+SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr*, u8);
+SQLITE_PRIVATE int sqlite3ExprIsTableConstant(Expr*,int);
SQLITE_PRIVATE int sqlite3ExprIsInteger(Expr*, int*);
SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr*);
SQLITE_PRIVATE int sqlite3ExprNeedsNoAffinityChange(const Expr*, char);
@@ -12683,6 +13086,11 @@ SQLITE_PRIVATE ExprList *sqlite3ExprListDup(sqlite3*,ExprList*,int);
SQLITE_PRIVATE SrcList *sqlite3SrcListDup(sqlite3*,SrcList*,int);
SQLITE_PRIVATE IdList *sqlite3IdListDup(sqlite3*,IdList*);
SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3*,Select*,int);
+#if SELECTTRACE_ENABLED
+SQLITE_PRIVATE void sqlite3SelectSetName(Select*,const char*);
+#else
+# define sqlite3SelectSetName(A,B)
+#endif
SQLITE_PRIVATE void sqlite3FuncDefInsert(FuncDefHash*, FuncDef*);
SQLITE_PRIVATE FuncDef *sqlite3FindFunction(sqlite3*,const char*,int,int,u8,u8);
SQLITE_PRIVATE void sqlite3RegisterBuiltinFunctions(sqlite3*);
@@ -12769,38 +13177,23 @@ SQLITE_PRIVATE u64 sqlite3LogEstToInt(LogEst);
/*
** Routines to read and write variable-length integers. These used to
** be defined locally, but now we use the varint routines in the util.c
-** file. Code should use the MACRO forms below, as the Varint32 versions
-** are coded to assume the single byte case is already handled (which
-** the MACRO form does).
+** file.
*/
SQLITE_PRIVATE int sqlite3PutVarint(unsigned char*, u64);
-SQLITE_PRIVATE int sqlite3PutVarint32(unsigned char*, u32);
SQLITE_PRIVATE u8 sqlite3GetVarint(const unsigned char *, u64 *);
SQLITE_PRIVATE u8 sqlite3GetVarint32(const unsigned char *, u32 *);
SQLITE_PRIVATE int sqlite3VarintLen(u64 v);
/*
-** The header of a record consists of a sequence variable-length integers.
-** These integers are almost always small and are encoded as a single byte.
-** The following macros take advantage this fact to provide a fast encode
-** and decode of the integers in a record header. It is faster for the common
-** case where the integer is a single byte. It is a little slower when the
-** integer is two or more bytes. But overall it is faster.
-**
-** The following expressions are equivalent:
-**
-** x = sqlite3GetVarint32( A, &B );
-** x = sqlite3PutVarint32( A, B );
-**
-** x = getVarint32( A, B );
-** x = putVarint32( A, B );
-**
+** The common case is for a varint to be a single byte. They following
+** macros handle the common case without a procedure call, but then call
+** the procedure for larger varints.
*/
#define getVarint32(A,B) \
(u8)((*(A)<(u8)0x80)?((B)=(u32)*(A)),1:sqlite3GetVarint32((A),(u32 *)&(B)))
#define putVarint32(A,B) \
(u8)(((u32)(B)<(u32)0x80)?(*(A)=(unsigned char)(B)),1:\
- sqlite3PutVarint32((A),(B)))
+ sqlite3PutVarint((A),(B)))
#define getVarint sqlite3GetVarint
#define putVarint sqlite3PutVarint
@@ -12812,7 +13205,8 @@ SQLITE_PRIVATE int sqlite3IndexAffinityOk(Expr *pExpr, char idx_affinity);
SQLITE_PRIVATE char sqlite3ExprAffinity(Expr *pExpr);
SQLITE_PRIVATE int sqlite3Atoi64(const char*, i64*, int, u8);
SQLITE_PRIVATE int sqlite3DecOrHexToI64(const char*, i64*);
-SQLITE_PRIVATE void sqlite3Error(sqlite3*, int, const char*,...);
+SQLITE_PRIVATE void sqlite3ErrorWithMsg(sqlite3*, int, const char*,...);
+SQLITE_PRIVATE void sqlite3Error(sqlite3*,int);
SQLITE_PRIVATE void *sqlite3HexToBlob(sqlite3*, const char *z, int n);
SQLITE_PRIVATE u8 sqlite3HexToInt(int h);
SQLITE_PRIVATE int sqlite3TwoPartName(Parse *, Token *, Token *, Token **);
@@ -12914,7 +13308,7 @@ SQLITE_PRIVATE int sqlite3OpenTempDatabase(Parse *);
SQLITE_PRIVATE void sqlite3StrAccumInit(StrAccum*, char*, int, int);
SQLITE_PRIVATE void sqlite3StrAccumAppend(StrAccum*,const char*,int);
SQLITE_PRIVATE void sqlite3StrAccumAppendAll(StrAccum*,const char*);
-SQLITE_PRIVATE void sqlite3AppendSpace(StrAccum*,int);
+SQLITE_PRIVATE void sqlite3AppendChar(StrAccum*,int,char);
SQLITE_PRIVATE char *sqlite3StrAccumFinish(StrAccum*);
SQLITE_PRIVATE void sqlite3StrAccumReset(StrAccum*);
SQLITE_PRIVATE void sqlite3SelectDestInit(SelectDest*,int,int);
@@ -12934,7 +13328,7 @@ SQLITE_PRIVATE int sqlite3Stat4Column(sqlite3*, const void*, int, int, sqlite3_v
/*
** The interface to the LEMON-generated parser
*/
-SQLITE_PRIVATE void *sqlite3ParserAlloc(void*(*)(size_t));
+SQLITE_PRIVATE void *sqlite3ParserAlloc(void*(*)(u64));
SQLITE_PRIVATE void sqlite3ParserFree(void*, void(*)(void*));
SQLITE_PRIVATE void sqlite3Parser(void*, int, Token, Parse*);
#ifdef YYTRACKMAXSTACKDEPTH
@@ -13130,7 +13524,7 @@ SQLITE_PRIVATE void sqlite3ParserTrace(FILE*, char *);
#ifdef SQLITE_ENABLE_IOTRACE
# define IOTRACE(A) if( sqlite3IoTrace ){ sqlite3IoTrace A; }
SQLITE_PRIVATE void sqlite3VdbeIOTraceSql(Vdbe*);
-SQLITE_PRIVATE void (*sqlite3IoTrace)(const char*,...);
+void (*sqlite3IoTrace)(const char*,...);
#else
# define IOTRACE(A)
# define sqlite3VdbeIOTraceSql(X)
@@ -13174,10 +13568,17 @@ SQLITE_PRIVATE int sqlite3MemdebugNoType(void*,u8);
# define sqlite3MemdebugNoType(X,Y) 1
#endif
#define MEMTYPE_HEAP 0x01 /* General heap allocations */
-#define MEMTYPE_LOOKASIDE 0x02 /* Might have been lookaside memory */
+#define MEMTYPE_LOOKASIDE 0x02 /* Heap that might have been lookaside */
#define MEMTYPE_SCRATCH 0x04 /* Scratch allocations */
#define MEMTYPE_PCACHE 0x08 /* Page cache allocations */
-#define MEMTYPE_DB 0x10 /* Uses sqlite3DbMalloc, not sqlite_malloc */
+
+/*
+** Threading interface
+*/
+#if SQLITE_MAX_WORKER_THREADS>0
+SQLITE_PRIVATE int sqlite3ThreadCreate(SQLiteThread**,void*(*)(void*),void*);
+SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread*, void**);
+#endif
#endif /* _SQLITEINT_H_ */
@@ -13195,7 +13596,7 @@ SQLITE_PRIVATE int sqlite3MemdebugNoType(void*,u8);
**
*************************************************************************
**
-** This file contains definitions of global variables and contants.
+** This file contains definitions of global variables and constants.
*/
/* An array to map all upper-case characters into their corresponding
@@ -13313,14 +13714,36 @@ SQLITE_PRIVATE const unsigned char sqlite3CtypeMap[256] = {
};
#endif
+/* EVIDENCE-OF: R-02982-34736 In order to maintain full backwards
+** compatibility for legacy applications, the URI filename capability is
+** disabled by default.
+**
+** EVIDENCE-OF: R-38799-08373 URI filenames can be enabled or disabled
+** using the SQLITE_USE_URI=1 or SQLITE_USE_URI=0 compile-time options.
+**
+** EVIDENCE-OF: R-43642-56306 By default, URI handling is globally
+** disabled. The default value may be changed by compiling with the
+** SQLITE_USE_URI symbol defined.
+*/
#ifndef SQLITE_USE_URI
# define SQLITE_USE_URI 0
#endif
+/* EVIDENCE-OF: R-38720-18127 The default setting is determined by the
+** SQLITE_ALLOW_COVERING_INDEX_SCAN compile-time option, or is "on" if
+** that compile-time option is omitted.
+*/
#ifndef SQLITE_ALLOW_COVERING_INDEX_SCAN
# define SQLITE_ALLOW_COVERING_INDEX_SCAN 1
#endif
+/* The minimum PMA size is set to this value multiplied by the database
+** page size in bytes.
+*/
+#ifndef SQLITE_SORTER_PMASZ
+# define SQLITE_SORTER_PMASZ 250
+#endif
+
/*
** The following singleton contains the global configuration for
** the SQLite library.
@@ -13351,6 +13774,7 @@ SQLITE_PRIVATE SQLITE_WSD struct Sqlite3Config sqlite3Config = {
0, /* nPage */
0, /* mxParserStack */
0, /* sharedCacheEnabled */
+ SQLITE_SORTER_PMASZ, /* szPma */
/* All the rest should always be initialized to zero */
0, /* isInit */
0, /* inProgress */
@@ -13406,8 +13830,8 @@ SQLITE_PRIVATE const Token sqlite3IntTokens[] = {
**
** IMPORTANT: Changing the pending byte to any value other than
** 0x40000000 results in an incompatible database file format!
-** Changing the pending byte during operating results in undefined
-** and dileterious behavior.
+** Changing the pending byte during operation will result in undefined
+** and incorrect behavior.
*/
#ifndef SQLITE_OMIT_WSD
SQLITE_PRIVATE int sqlite3PendingByte = 0x40000000;
@@ -13457,88 +13881,91 @@ static const char * const azCompileOpt[] = {
#define CTIMEOPT_VAL_(opt) #opt
#define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
-#ifdef SQLITE_32BIT_ROWID
+#if SQLITE_32BIT_ROWID
"32BIT_ROWID",
#endif
-#ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
+#if SQLITE_4_BYTE_ALIGNED_MALLOC
"4_BYTE_ALIGNED_MALLOC",
#endif
-#ifdef SQLITE_CASE_SENSITIVE_LIKE
+#if SQLITE_CASE_SENSITIVE_LIKE
"CASE_SENSITIVE_LIKE",
#endif
-#ifdef SQLITE_CHECK_PAGES
+#if SQLITE_CHECK_PAGES
"CHECK_PAGES",
#endif
-#ifdef SQLITE_COVERAGE_TEST
+#if SQLITE_COVERAGE_TEST
"COVERAGE_TEST",
#endif
-#ifdef SQLITE_DEBUG
+#if SQLITE_DEBUG
"DEBUG",
#endif
-#ifdef SQLITE_DEFAULT_LOCKING_MODE
+#if SQLITE_DEFAULT_LOCKING_MODE
"DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
#endif
#if defined(SQLITE_DEFAULT_MMAP_SIZE) && !defined(SQLITE_DEFAULT_MMAP_SIZE_xc)
"DEFAULT_MMAP_SIZE=" CTIMEOPT_VAL(SQLITE_DEFAULT_MMAP_SIZE),
#endif
-#ifdef SQLITE_DISABLE_DIRSYNC
+#if SQLITE_DISABLE_DIRSYNC
"DISABLE_DIRSYNC",
#endif
-#ifdef SQLITE_DISABLE_LFS
+#if SQLITE_DISABLE_LFS
"DISABLE_LFS",
#endif
-#ifdef SQLITE_ENABLE_ATOMIC_WRITE
+#if SQLITE_ENABLE_API_ARMOR
+ "ENABLE_API_ARMOR",
+#endif
+#if SQLITE_ENABLE_ATOMIC_WRITE
"ENABLE_ATOMIC_WRITE",
#endif
-#ifdef SQLITE_ENABLE_CEROD
+#if SQLITE_ENABLE_CEROD
"ENABLE_CEROD",
#endif
-#ifdef SQLITE_ENABLE_COLUMN_METADATA
+#if SQLITE_ENABLE_COLUMN_METADATA
"ENABLE_COLUMN_METADATA",
#endif
-#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
+#if SQLITE_ENABLE_EXPENSIVE_ASSERT
"ENABLE_EXPENSIVE_ASSERT",
#endif
-#ifdef SQLITE_ENABLE_FTS1
+#if SQLITE_ENABLE_FTS1
"ENABLE_FTS1",
#endif
-#ifdef SQLITE_ENABLE_FTS2
+#if SQLITE_ENABLE_FTS2
"ENABLE_FTS2",
#endif
-#ifdef SQLITE_ENABLE_FTS3
+#if SQLITE_ENABLE_FTS3
"ENABLE_FTS3",
#endif
-#ifdef SQLITE_ENABLE_FTS3_PARENTHESIS
+#if SQLITE_ENABLE_FTS3_PARENTHESIS
"ENABLE_FTS3_PARENTHESIS",
#endif
-#ifdef SQLITE_ENABLE_FTS4
+#if SQLITE_ENABLE_FTS4
"ENABLE_FTS4",
#endif
-#ifdef SQLITE_ENABLE_ICU
+#if SQLITE_ENABLE_ICU
"ENABLE_ICU",
#endif
-#ifdef SQLITE_ENABLE_IOTRACE
+#if SQLITE_ENABLE_IOTRACE
"ENABLE_IOTRACE",
#endif
-#ifdef SQLITE_ENABLE_LOAD_EXTENSION
+#if SQLITE_ENABLE_LOAD_EXTENSION
"ENABLE_LOAD_EXTENSION",
#endif
-#ifdef SQLITE_ENABLE_LOCKING_STYLE
+#if SQLITE_ENABLE_LOCKING_STYLE
"ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
#endif
-#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
+#if SQLITE_ENABLE_MEMORY_MANAGEMENT
"ENABLE_MEMORY_MANAGEMENT",
#endif
-#ifdef SQLITE_ENABLE_MEMSYS3
+#if SQLITE_ENABLE_MEMSYS3
"ENABLE_MEMSYS3",
#endif
-#ifdef SQLITE_ENABLE_MEMSYS5
+#if SQLITE_ENABLE_MEMSYS5
"ENABLE_MEMSYS5",
#endif
-#ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
+#if SQLITE_ENABLE_OVERSIZE_CELL_CHECK
"ENABLE_OVERSIZE_CELL_CHECK",
#endif
-#ifdef SQLITE_ENABLE_RTREE
+#if SQLITE_ENABLE_RTREE
"ENABLE_RTREE",
#endif
#if defined(SQLITE_ENABLE_STAT4)
@@ -13546,31 +13973,31 @@ static const char * const azCompileOpt[] = {
#elif defined(SQLITE_ENABLE_STAT3)
"ENABLE_STAT3",
#endif
-#ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
+#if SQLITE_ENABLE_UNLOCK_NOTIFY
"ENABLE_UNLOCK_NOTIFY",
#endif
-#ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT
+#if SQLITE_ENABLE_UPDATE_DELETE_LIMIT
"ENABLE_UPDATE_DELETE_LIMIT",
#endif
-#ifdef SQLITE_HAS_CODEC
+#if SQLITE_HAS_CODEC
"HAS_CODEC",
#endif
-#ifdef SQLITE_HAVE_ISNAN
+#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
"HAVE_ISNAN",
#endif
-#ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
+#if SQLITE_HOMEGROWN_RECURSIVE_MUTEX
"HOMEGROWN_RECURSIVE_MUTEX",
#endif
-#ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS
+#if SQLITE_IGNORE_AFP_LOCK_ERRORS
"IGNORE_AFP_LOCK_ERRORS",
#endif
-#ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
+#if SQLITE_IGNORE_FLOCK_LOCK_ERRORS
"IGNORE_FLOCK_LOCK_ERRORS",
#endif
#ifdef SQLITE_INT64_TYPE
"INT64_TYPE",
#endif
-#ifdef SQLITE_LOCK_TRACE
+#if SQLITE_LOCK_TRACE
"LOCK_TRACE",
#endif
#if defined(SQLITE_MAX_MMAP_SIZE) && !defined(SQLITE_MAX_MMAP_SIZE_xc)
@@ -13579,223 +14006,226 @@ static const char * const azCompileOpt[] = {
#ifdef SQLITE_MAX_SCHEMA_RETRY
"MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
#endif
-#ifdef SQLITE_MEMDEBUG
+#if SQLITE_MEMDEBUG
"MEMDEBUG",
#endif
-#ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
+#if SQLITE_MIXED_ENDIAN_64BIT_FLOAT
"MIXED_ENDIAN_64BIT_FLOAT",
#endif
-#ifdef SQLITE_NO_SYNC
+#if SQLITE_NO_SYNC
"NO_SYNC",
#endif
-#ifdef SQLITE_OMIT_ALTERTABLE
+#if SQLITE_OMIT_ALTERTABLE
"OMIT_ALTERTABLE",
#endif
-#ifdef SQLITE_OMIT_ANALYZE
+#if SQLITE_OMIT_ANALYZE
"OMIT_ANALYZE",
#endif
-#ifdef SQLITE_OMIT_ATTACH
+#if SQLITE_OMIT_ATTACH
"OMIT_ATTACH",
#endif
-#ifdef SQLITE_OMIT_AUTHORIZATION
+#if SQLITE_OMIT_AUTHORIZATION
"OMIT_AUTHORIZATION",
#endif
-#ifdef SQLITE_OMIT_AUTOINCREMENT
+#if SQLITE_OMIT_AUTOINCREMENT
"OMIT_AUTOINCREMENT",
#endif
-#ifdef SQLITE_OMIT_AUTOINIT
+#if SQLITE_OMIT_AUTOINIT
"OMIT_AUTOINIT",
#endif
-#ifdef SQLITE_OMIT_AUTOMATIC_INDEX
+#if SQLITE_OMIT_AUTOMATIC_INDEX
"OMIT_AUTOMATIC_INDEX",
#endif
-#ifdef SQLITE_OMIT_AUTORESET
+#if SQLITE_OMIT_AUTORESET
"OMIT_AUTORESET",
#endif
-#ifdef SQLITE_OMIT_AUTOVACUUM
+#if SQLITE_OMIT_AUTOVACUUM
"OMIT_AUTOVACUUM",
#endif
-#ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
+#if SQLITE_OMIT_BETWEEN_OPTIMIZATION
"OMIT_BETWEEN_OPTIMIZATION",
#endif
-#ifdef SQLITE_OMIT_BLOB_LITERAL
+#if SQLITE_OMIT_BLOB_LITERAL
"OMIT_BLOB_LITERAL",
#endif
-#ifdef SQLITE_OMIT_BTREECOUNT
+#if SQLITE_OMIT_BTREECOUNT
"OMIT_BTREECOUNT",
#endif
-#ifdef SQLITE_OMIT_BUILTIN_TEST
+#if SQLITE_OMIT_BUILTIN_TEST
"OMIT_BUILTIN_TEST",
#endif
-#ifdef SQLITE_OMIT_CAST
+#if SQLITE_OMIT_CAST
"OMIT_CAST",
#endif
-#ifdef SQLITE_OMIT_CHECK
+#if SQLITE_OMIT_CHECK
"OMIT_CHECK",
#endif
-#ifdef SQLITE_OMIT_COMPLETE
+#if SQLITE_OMIT_COMPLETE
"OMIT_COMPLETE",
#endif
-#ifdef SQLITE_OMIT_COMPOUND_SELECT
+#if SQLITE_OMIT_COMPOUND_SELECT
"OMIT_COMPOUND_SELECT",
#endif
-#ifdef SQLITE_OMIT_CTE
+#if SQLITE_OMIT_CTE
"OMIT_CTE",
#endif
-#ifdef SQLITE_OMIT_DATETIME_FUNCS
+#if SQLITE_OMIT_DATETIME_FUNCS
"OMIT_DATETIME_FUNCS",
#endif
-#ifdef SQLITE_OMIT_DECLTYPE
+#if SQLITE_OMIT_DECLTYPE
"OMIT_DECLTYPE",
#endif
-#ifdef SQLITE_OMIT_DEPRECATED
+#if SQLITE_OMIT_DEPRECATED
"OMIT_DEPRECATED",
#endif
-#ifdef SQLITE_OMIT_DISKIO
+#if SQLITE_OMIT_DISKIO
"OMIT_DISKIO",
#endif
-#ifdef SQLITE_OMIT_EXPLAIN
+#if SQLITE_OMIT_EXPLAIN
"OMIT_EXPLAIN",
#endif
-#ifdef SQLITE_OMIT_FLAG_PRAGMAS
+#if SQLITE_OMIT_FLAG_PRAGMAS
"OMIT_FLAG_PRAGMAS",
#endif
-#ifdef SQLITE_OMIT_FLOATING_POINT
+#if SQLITE_OMIT_FLOATING_POINT
"OMIT_FLOATING_POINT",
#endif
-#ifdef SQLITE_OMIT_FOREIGN_KEY
+#if SQLITE_OMIT_FOREIGN_KEY
"OMIT_FOREIGN_KEY",
#endif
-#ifdef SQLITE_OMIT_GET_TABLE
+#if SQLITE_OMIT_GET_TABLE
"OMIT_GET_TABLE",
#endif
-#ifdef SQLITE_OMIT_INCRBLOB
+#if SQLITE_OMIT_INCRBLOB
"OMIT_INCRBLOB",
#endif
-#ifdef SQLITE_OMIT_INTEGRITY_CHECK
+#if SQLITE_OMIT_INTEGRITY_CHECK
"OMIT_INTEGRITY_CHECK",
#endif
-#ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
+#if SQLITE_OMIT_LIKE_OPTIMIZATION
"OMIT_LIKE_OPTIMIZATION",
#endif
-#ifdef SQLITE_OMIT_LOAD_EXTENSION
+#if SQLITE_OMIT_LOAD_EXTENSION
"OMIT_LOAD_EXTENSION",
#endif
-#ifdef SQLITE_OMIT_LOCALTIME
+#if SQLITE_OMIT_LOCALTIME
"OMIT_LOCALTIME",
#endif
-#ifdef SQLITE_OMIT_LOOKASIDE
+#if SQLITE_OMIT_LOOKASIDE
"OMIT_LOOKASIDE",
#endif
-#ifdef SQLITE_OMIT_MEMORYDB
+#if SQLITE_OMIT_MEMORYDB
"OMIT_MEMORYDB",
#endif
-#ifdef SQLITE_OMIT_OR_OPTIMIZATION
+#if SQLITE_OMIT_OR_OPTIMIZATION
"OMIT_OR_OPTIMIZATION",
#endif
-#ifdef SQLITE_OMIT_PAGER_PRAGMAS
+#if SQLITE_OMIT_PAGER_PRAGMAS
"OMIT_PAGER_PRAGMAS",
#endif
-#ifdef SQLITE_OMIT_PRAGMA
+#if SQLITE_OMIT_PRAGMA
"OMIT_PRAGMA",
#endif
-#ifdef SQLITE_OMIT_PROGRESS_CALLBACK
+#if SQLITE_OMIT_PROGRESS_CALLBACK
"OMIT_PROGRESS_CALLBACK",
#endif
-#ifdef SQLITE_OMIT_QUICKBALANCE
+#if SQLITE_OMIT_QUICKBALANCE
"OMIT_QUICKBALANCE",
#endif
-#ifdef SQLITE_OMIT_REINDEX
+#if SQLITE_OMIT_REINDEX
"OMIT_REINDEX",
#endif
-#ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
+#if SQLITE_OMIT_SCHEMA_PRAGMAS
"OMIT_SCHEMA_PRAGMAS",
#endif
-#ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
+#if SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
"OMIT_SCHEMA_VERSION_PRAGMAS",
#endif
-#ifdef SQLITE_OMIT_SHARED_CACHE
+#if SQLITE_OMIT_SHARED_CACHE
"OMIT_SHARED_CACHE",
#endif
-#ifdef SQLITE_OMIT_SUBQUERY
+#if SQLITE_OMIT_SUBQUERY
"OMIT_SUBQUERY",
#endif
-#ifdef SQLITE_OMIT_TCL_VARIABLE
+#if SQLITE_OMIT_TCL_VARIABLE
"OMIT_TCL_VARIABLE",
#endif
-#ifdef SQLITE_OMIT_TEMPDB
+#if SQLITE_OMIT_TEMPDB
"OMIT_TEMPDB",
#endif
-#ifdef SQLITE_OMIT_TRACE
+#if SQLITE_OMIT_TRACE
"OMIT_TRACE",
#endif
-#ifdef SQLITE_OMIT_TRIGGER
+#if SQLITE_OMIT_TRIGGER
"OMIT_TRIGGER",
#endif
-#ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
+#if SQLITE_OMIT_TRUNCATE_OPTIMIZATION
"OMIT_TRUNCATE_OPTIMIZATION",
#endif
-#ifdef SQLITE_OMIT_UTF16
+#if SQLITE_OMIT_UTF16
"OMIT_UTF16",
#endif
-#ifdef SQLITE_OMIT_VACUUM
+#if SQLITE_OMIT_VACUUM
"OMIT_VACUUM",
#endif
-#ifdef SQLITE_OMIT_VIEW
+#if SQLITE_OMIT_VIEW
"OMIT_VIEW",
#endif
-#ifdef SQLITE_OMIT_VIRTUALTABLE
+#if SQLITE_OMIT_VIRTUALTABLE
"OMIT_VIRTUALTABLE",
#endif
-#ifdef SQLITE_OMIT_WAL
+#if SQLITE_OMIT_WAL
"OMIT_WAL",
#endif
-#ifdef SQLITE_OMIT_WSD
+#if SQLITE_OMIT_WSD
"OMIT_WSD",
#endif
-#ifdef SQLITE_OMIT_XFER_OPT
+#if SQLITE_OMIT_XFER_OPT
"OMIT_XFER_OPT",
#endif
-#ifdef SQLITE_PERFORMANCE_TRACE
+#if SQLITE_PERFORMANCE_TRACE
"PERFORMANCE_TRACE",
#endif
-#ifdef SQLITE_PROXY_DEBUG
+#if SQLITE_PROXY_DEBUG
"PROXY_DEBUG",
#endif
-#ifdef SQLITE_RTREE_INT_ONLY
+#if SQLITE_RTREE_INT_ONLY
"RTREE_INT_ONLY",
#endif
-#ifdef SQLITE_SECURE_DELETE
+#if SQLITE_SECURE_DELETE
"SECURE_DELETE",
#endif
-#ifdef SQLITE_SMALL_STACK
+#if SQLITE_SMALL_STACK
"SMALL_STACK",
#endif
-#ifdef SQLITE_SOUNDEX
+#if SQLITE_SOUNDEX
"SOUNDEX",
#endif
-#ifdef SQLITE_SYSTEM_MALLOC
+#if SQLITE_SYSTEM_MALLOC
"SYSTEM_MALLOC",
#endif
-#ifdef SQLITE_TCL
+#if SQLITE_TCL
"TCL",
#endif
#if defined(SQLITE_TEMP_STORE) && !defined(SQLITE_TEMP_STORE_xc)
"TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
#endif
-#ifdef SQLITE_TEST
+#if SQLITE_TEST
"TEST",
#endif
#if defined(SQLITE_THREADSAFE)
"THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
#endif
-#ifdef SQLITE_USE_ALLOCA
+#if SQLITE_USE_ALLOCA
"USE_ALLOCA",
#endif
-#ifdef SQLITE_WIN32_MALLOC
+#if SQLITE_USER_AUTHENTICATION
+ "USER_AUTHENTICATION",
+#endif
+#if SQLITE_WIN32_MALLOC
"WIN32_MALLOC",
#endif
-#ifdef SQLITE_ZERO_MALLOC
+#if SQLITE_ZERO_MALLOC
"ZERO_MALLOC"
#endif
};
@@ -13809,6 +14239,13 @@ static const char * const azCompileOpt[] = {
*/
SQLITE_API int sqlite3_compileoption_used(const char *zOptName){
int i, n;
+
+#if SQLITE_ENABLE_API_ARMOR
+ if( zOptName==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
n = sqlite3Strlen30(zOptName);
@@ -13816,7 +14253,7 @@ SQLITE_API int sqlite3_compileoption_used(const char *zOptName){
** linear search is adequate. No need for a binary search. */
for(i=0; i<ArraySize(azCompileOpt); i++){
if( sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0
- && sqlite3CtypeMap[(unsigned char)azCompileOpt[i][n]]==0
+ && sqlite3IsIdChar((unsigned char)azCompileOpt[i][n])==0
){
return 1;
}
@@ -13931,7 +14368,6 @@ struct VdbeCursor {
#endif
i8 iDb; /* Index of cursor database in db->aDb[] (or -1) */
u8 nullRow; /* True if pointing to a row with no data */
- u8 rowidIsValid; /* True if lastRowid is valid */
u8 deferredMoveto; /* A call to sqlite3BtreeMoveto() is needed */
Bool isEphemeral:1; /* True for an ephemeral table */
Bool useRandomRowid:1;/* Generate new record numbers semi-randomly */
@@ -13941,7 +14377,6 @@ struct VdbeCursor {
sqlite3_vtab_cursor *pVtabCursor; /* The cursor for a virtual table */
i64 seqCount; /* Sequence counter */
i64 movetoTarget; /* Argument to the deferred sqlite3BtreeMoveto() */
- i64 lastRowid; /* Rowid being deleted by OP_Delete */
VdbeSorter *pSorter; /* Sorter object for OP_SorterOpen cursors */
/* Cached information about the header for the data record that the
@@ -13958,6 +14393,7 @@ struct VdbeCursor {
u32 szRow; /* Byte available in aRow */
u32 iHdrOffset; /* Offset to next unparsed byte of the header */
const u8 *aRow; /* Data for the current row, if all on one page */
+ u32 *aOffset; /* Pointer to aType[nField] */
u32 aType[1]; /* Type values for all entries in the record */
/* 2*nField extra array elements allocated for aType[], beyond the one
** static element declared in the structure. nField total array slots for
@@ -13991,6 +14427,7 @@ struct VdbeFrame {
Vdbe *v; /* VM this frame belongs to */
VdbeFrame *pParent; /* Parent of this frame, or NULL if parent is main */
Op *aOp; /* Program instructions for parent frame */
+ i64 *anExec; /* Event counters from parent frame */
Mem *aMem; /* Array of memory cells for parent frame */
u8 *aOnceFlag; /* Array of OP_Once flags for parent frame */
VdbeCursor **apCsr; /* Array of Vdbe cursors for parent frame */
@@ -14003,7 +14440,8 @@ struct VdbeFrame {
int nOnceFlag; /* Number of entries in aOnceFlag */
int nChildMem; /* Number of memory cells for child frame */
int nChildCsr; /* Number of cursors for child frame */
- int nChange; /* Statement changes (Vdbe.nChanges) */
+ int nChange; /* Statement changes (Vdbe.nChange) */
+ int nDbChange; /* Value of db->nChange */
};
#define VdbeFrameMem(p) ((Mem *)&((u8 *)p)[ROUND8(sizeof(VdbeFrame))])
@@ -14019,25 +14457,28 @@ struct VdbeFrame {
** integer etc.) of the same value.
*/
struct Mem {
- sqlite3 *db; /* The associated database connection */
- char *z; /* String or BLOB value */
- double r; /* Real value */
- union {
+ union MemValue {
+ double r; /* Real value used when MEM_Real is set in flags */
i64 i; /* Integer value used when MEM_Int is set in flags */
int nZero; /* Used when bit MEM_Zero is set in flags */
FuncDef *pDef; /* Used only when flags==MEM_Agg */
RowSet *pRowSet; /* Used only when flags==MEM_RowSet */
VdbeFrame *pFrame; /* Used when flags==MEM_Frame */
} u;
- int n; /* Number of characters in string value, excluding '\0' */
u16 flags; /* Some combination of MEM_Null, MEM_Str, MEM_Dyn, etc. */
u8 enc; /* SQLITE_UTF8, SQLITE_UTF16BE, SQLITE_UTF16LE */
+ int n; /* Number of characters in string value, excluding '\0' */
+ char *z; /* String or BLOB value */
+ /* ShallowCopy only needs to copy the information above */
+ char *zMalloc; /* Space to hold MEM_Str or MEM_Blob if szMalloc>0 */
+ int szMalloc; /* Size of the zMalloc allocation */
+ u32 uTemp; /* Transient storage for serial_type in OP_MakeRecord */
+ sqlite3 *db; /* The associated database connection */
+ void (*xDel)(void*);/* Destructor for Mem.z - only valid if MEM_Dyn */
#ifdef SQLITE_DEBUG
Mem *pScopyFrom; /* This Mem is a shallow copy of pScopyFrom */
void *pFiller; /* So that sizeof(Mem) is a multiple of 8 */
#endif
- void (*xDel)(void *); /* If not null, call this function to delete Mem.z */
- char *zMalloc; /* Dynamic buffer allocated by sqlite3_malloc() */
};
/* One or more of the following flags are set to indicate the validOK
@@ -14096,7 +14537,7 @@ struct Mem {
#endif
/*
-** Each auxilliary data pointer stored by a user defined function
+** Each auxiliary data pointer stored by a user defined function
** implementation calling sqlite3_set_auxdata() is stored in an instance
** of this structure. All such structures associated with a single VM
** are stored in a linked list headed at Vdbe.pAuxData. All are destroyed
@@ -14111,7 +14552,7 @@ struct AuxData {
};
/*
-** The "context" argument for a installable function. A pointer to an
+** The "context" argument for an installable function. A pointer to an
** instance of this structure is the first argument to the routines used
** implement the SQL functions.
**
@@ -14124,14 +14565,13 @@ struct AuxData {
** (Mem) which are only defined there.
*/
struct sqlite3_context {
- FuncDef *pFunc; /* Pointer to function information. MUST BE FIRST */
- Mem s; /* The return value is stored here */
+ Mem *pOut; /* The return value is stored here */
+ FuncDef *pFunc; /* Pointer to function information */
Mem *pMem; /* Memory cell used to store aggregate context */
- CollSeq *pColl; /* Collating sequence */
Vdbe *pVdbe; /* The VM that owns this context */
int iOp; /* Instruction number of OP_Function */
int isError; /* Error code returned by the function. */
- u8 skipFlag; /* Skip skip accumulator loading if true */
+ u8 skipFlag; /* Skip accumulator loading if true */
u8 fErrorOrAux; /* isError!=0 or pVdbe->pAuxData modified */
};
@@ -14152,6 +14592,16 @@ struct Explain {
*/
typedef unsigned bft; /* Bit Field Type */
+typedef struct ScanStatus ScanStatus;
+struct ScanStatus {
+ int addrExplain; /* OP_Explain for loop */
+ int addrLoop; /* Address of "loops" counter */
+ int addrVisit; /* Address of "rows visited" counter */
+ int iSelectID; /* The "Select-ID" for this loop */
+ LogEst nEst; /* Estimated output rows per loop */
+ char *zName; /* Name of table or index */
+};
+
/*
** An instance of the virtual machine. This structure contains the complete
** state of the virtual machine.
@@ -14216,10 +14666,6 @@ struct Vdbe {
i64 nStmtDefImmCons; /* Number of def. imm constraints when stmt started */
char *zSql; /* Text of the SQL statement that generated this */
void *pFree; /* Free this when deleting the vdbe */
-#ifdef SQLITE_ENABLE_TREE_EXPLAIN
- Explain *pExplain; /* The explainer */
- char *zExplain; /* Explanation of data structures */
-#endif
VdbeFrame *pFrame; /* Parent frame */
VdbeFrame *pDelFrame; /* List of frame objects to free on VM reset */
int nFrame; /* Number of frames in pFrame list */
@@ -14228,6 +14674,11 @@ struct Vdbe {
int nOnceFlag; /* Size of array aOnceFlag[] */
u8 *aOnceFlag; /* Flags for OP_Once */
AuxData *pAuxData; /* Linked list of auxdata allocations */
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ i64 *anExec; /* Number of times each op has been executed */
+ int nScan; /* Entries in aScan[] */
+ ScanStatus *aScan; /* Scan definitions for sqlite3_stmt_scanstatus() */
+#endif
};
/*
@@ -14244,6 +14695,7 @@ struct Vdbe {
SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *, VdbeCursor*);
void sqliteVdbePopStack(Vdbe*,int);
SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor*);
+SQLITE_PRIVATE int sqlite3VdbeCursorRestore(VdbeCursor*);
#if defined(SQLITE_DEBUG) || defined(VDBE_PROFILE)
SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE*, int, Op*);
#endif
@@ -14254,8 +14706,8 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(const unsigned char*, u32, Mem*);
SQLITE_PRIVATE void sqlite3VdbeDeleteAuxData(Vdbe*, int, int);
int sqlite2BtreeKeyCompare(BtCursor *, const void *, int, int, int *);
-SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(VdbeCursor*,UnpackedRecord*,int*);
-SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3*, BtCursor *, i64 *);
+SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(sqlite3*,VdbeCursor*,UnpackedRecord*,int*);
+SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3*, BtCursor*, i64*);
SQLITE_PRIVATE int sqlite3VdbeExec(Vdbe*);
SQLITE_PRIVATE int sqlite3VdbeList(Vdbe*);
SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe*);
@@ -14272,39 +14724,39 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem*, i64);
#else
SQLITE_PRIVATE void sqlite3VdbeMemSetDouble(Mem*, double);
#endif
+SQLITE_PRIVATE void sqlite3VdbeMemInit(Mem*,sqlite3*,u16);
SQLITE_PRIVATE void sqlite3VdbeMemSetNull(Mem*);
SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem*,int);
SQLITE_PRIVATE void sqlite3VdbeMemSetRowSet(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem*);
-SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, int);
+SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem*, u8, u8);
SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemIntegerify(Mem*);
SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem*);
SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem*);
SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem*);
+SQLITE_PRIVATE void sqlite3VdbeMemCast(Mem*,u8,u8);
SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(BtCursor*,u32,u32,int,Mem*);
SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p);
-SQLITE_PRIVATE void sqlite3VdbeMemReleaseExternal(Mem *p);
#define VdbeMemDynamic(X) \
(((X)->flags&(MEM_Agg|MEM_Dyn|MEM_RowSet|MEM_Frame))!=0)
-#define VdbeMemRelease(X) \
- if( VdbeMemDynamic(X) ) sqlite3VdbeMemReleaseExternal(X);
SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem*, FuncDef*);
SQLITE_PRIVATE const char *sqlite3OpcodeName(int);
SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int preserve);
+SQLITE_PRIVATE int sqlite3VdbeMemClearAndResize(Mem *pMem, int n);
SQLITE_PRIVATE int sqlite3VdbeCloseStatement(Vdbe *, int);
SQLITE_PRIVATE void sqlite3VdbeFrameDelete(VdbeFrame*);
SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *);
SQLITE_PRIVATE int sqlite3VdbeTransferError(Vdbe *p);
-SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *, VdbeCursor *);
+SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *, int, VdbeCursor *);
SQLITE_PRIVATE void sqlite3VdbeSorterReset(sqlite3 *, VdbeSorter *);
SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *, VdbeCursor *);
SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *, Mem *);
SQLITE_PRIVATE int sqlite3VdbeSorterNext(sqlite3 *, const VdbeCursor *, int *);
-SQLITE_PRIVATE int sqlite3VdbeSorterRewind(sqlite3 *, const VdbeCursor *, int *);
-SQLITE_PRIVATE int sqlite3VdbeSorterWrite(sqlite3 *, const VdbeCursor *, Mem *);
+SQLITE_PRIVATE int sqlite3VdbeSorterRewind(const VdbeCursor *, int *);
+SQLITE_PRIVATE int sqlite3VdbeSorterWrite(const VdbeCursor *, Mem *);
SQLITE_PRIVATE int sqlite3VdbeSorterCompare(const VdbeCursor *, Mem *, int, int *);
#if !defined(SQLITE_OMIT_SHARED_CACHE) && SQLITE_THREADSAFE>0
@@ -14416,6 +14868,9 @@ SQLITE_API int sqlite3_status(int op, int *pCurrent, int *pHighwater, int resetF
if( op<0 || op>=ArraySize(wsdStat.nowValue) ){
return SQLITE_MISUSE_BKPT;
}
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( pCurrent==0 || pHighwater==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*pCurrent = wsdStat.nowValue[op];
*pHighwater = wsdStat.mxValue[op];
if( resetFlag ){
@@ -14435,6 +14890,11 @@ SQLITE_API int sqlite3_db_status(
int resetFlag /* Reset high-water mark if true */
){
int rc = SQLITE_OK; /* Return code */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || pCurrent==0|| pHighwater==0 ){
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
switch( op ){
case SQLITE_DBSTATUS_LOOKASIDE_USED: {
@@ -14543,7 +15003,7 @@ SQLITE_API int sqlite3_db_status(
}
db->pnBytesFreed = 0;
- *pHighwater = 0;
+ *pHighwater = 0; /* IMP: R-64479-57858 */
*pCurrent = nByte;
break;
@@ -14568,7 +15028,9 @@ SQLITE_API int sqlite3_db_status(
sqlite3PagerCacheStat(pPager, op, resetFlag, &nRet);
}
}
- *pHighwater = 0;
+ *pHighwater = 0; /* IMP: R-42420-56072 */
+ /* IMP: R-54100-20147 */
+ /* IMP: R-29431-39229 */
*pCurrent = nRet;
break;
}
@@ -14578,7 +15040,7 @@ SQLITE_API int sqlite3_db_status(
** have been satisfied. The *pHighwater is always set to zero.
*/
case SQLITE_DBSTATUS_DEFERRED_FKS: {
- *pHighwater = 0;
+ *pHighwater = 0; /* IMP: R-11967-56545 */
*pCurrent = db->nDeferredImmCons>0 || db->nDeferredCons>0;
break;
}
@@ -14611,7 +15073,7 @@ SQLITE_API int sqlite3_db_status(
** sqlite3RegisterDateTimeFunctions() found at the bottom of the file.
** All other code has file scope.
**
-** SQLite processes all times and dates as Julian Day numbers. The
+** SQLite processes all times and dates as julian day numbers. The
** dates and times are stored as the number of days since noon
** in Greenwich on November 24, 4714 B.C. according to the Gregorian
** calendar system.
@@ -14619,14 +15081,14 @@ SQLITE_API int sqlite3_db_status(
** 1970-01-01 00:00:00 is JD 2440587.5
** 2000-01-01 00:00:00 is JD 2451544.5
**
-** This implemention requires years to be expressed as a 4-digit number
+** This implementation requires years to be expressed as a 4-digit number
** which means that only dates between 0000-01-01 and 9999-12-31 can
** be represented, even though julian day numbers allow a much wider
** range of dates.
**
** The Gregorian calendar system is used for all dates and times,
** even those that predate the Gregorian calendar. Historians usually
-** use the Julian calendar for dates prior to 1582-10-15 and for some
+** use the julian calendar for dates prior to 1582-10-15 and for some
** dates afterwards, depending on locale. Beware of this difference.
**
** The conversion algorithms are implemented based on descriptions
@@ -14898,7 +15360,7 @@ static int setDateTimeToCurrent(sqlite3_context *context, DateTime *p){
}
/*
-** Attempt to parse the given string into a Julian Day Number. Return
+** Attempt to parse the given string into a julian day number. Return
** the number of errors.
**
** The following are acceptable forms for the input string:
@@ -15006,12 +15468,14 @@ static void clearYMD_HMS_TZ(DateTime *p){
** already, check for an MSVC build environment that provides
** localtime_s().
*/
-#if !defined(HAVE_LOCALTIME_R) && !defined(HAVE_LOCALTIME_S) && \
- defined(_MSC_VER) && defined(_CRT_INSECURE_DEPRECATE)
+#if !HAVE_LOCALTIME_R && !HAVE_LOCALTIME_S \
+ && defined(_MSC_VER) && defined(_CRT_INSECURE_DEPRECATE)
+#undef HAVE_LOCALTIME_S
#define HAVE_LOCALTIME_S 1
#endif
#if defined(_WIN32_WCE)
+#undef HAVE_LOCALTIME_S
struct tm *__cdecl localtime(const time_t *t);
#endif
@@ -15031,8 +15495,7 @@ struct tm *__cdecl localtime(const time_t *t);
*/
static int osLocaltime(time_t *t, struct tm *pTm){
int rc;
-#if (!defined(HAVE_LOCALTIME_R) || !HAVE_LOCALTIME_R) \
- && (!defined(HAVE_LOCALTIME_S) || !HAVE_LOCALTIME_S)
+#if !HAVE_LOCALTIME_R && !HAVE_LOCALTIME_S
struct tm *pX;
#if SQLITE_THREADSAFE>0
sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER);
@@ -15049,7 +15512,7 @@ static int osLocaltime(time_t *t, struct tm *pTm){
#ifndef SQLITE_OMIT_BUILTIN_TEST
if( sqlite3GlobalConfig.bLocaltimeFault ) return 1;
#endif
-#if defined(HAVE_LOCALTIME_R) && HAVE_LOCALTIME_R
+#if HAVE_LOCALTIME_R
rc = localtime_r(t, pTm)==0;
#else
rc = localtime_s(pTm, t);
@@ -15473,7 +15936,7 @@ static void dateFunc(
** %f ** fractional seconds SS.SSS
** %H hour 00-24
** %j day of year 000-366
-** %J ** Julian day number
+** %J ** julian day number
** %m month 01-12
** %M minute 00-59
** %s seconds since 1970-01-01
@@ -15493,8 +15956,10 @@ static void strftimeFunc(
size_t i,j;
char *z;
sqlite3 *db;
- const char *zFmt = (const char*)sqlite3_value_text(argv[0]);
+ const char *zFmt;
char zBuf[100];
+ if( argc==0 ) return;
+ zFmt = (const char*)sqlite3_value_text(argv[0]);
if( zFmt==0 || isDate(context, argc-1, argv+1, &x) ) return;
db = sqlite3_context_db_handle(context);
for(i=0, n=1; zFmt[i]; i++, n++){
@@ -15688,7 +16153,7 @@ static void currentTimeFunc(
iT = sqlite3StmtCurrentTime(context);
if( iT<=0 ) return;
t = iT/1000 - 10000*(sqlite3_int64)21086676;
-#ifdef HAVE_GMTIME_R
+#if HAVE_GMTIME_R
pTm = gmtime_r(&t, &sNow);
#else
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER));
@@ -16098,6 +16563,10 @@ SQLITE_API int sqlite3_vfs_register(sqlite3_vfs *pVfs, int makeDflt){
int rc = sqlite3_initialize();
if( rc ) return rc;
#endif
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( pVfs==0 ) return SQLITE_MISUSE_BKPT;
+#endif
+
MUTEX_LOGIC( mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); )
sqlite3_mutex_enter(mutex);
vfsUnlink(pVfs);
@@ -16358,9 +16827,9 @@ static malloc_zone_t* _sqliteZone_;
** The malloc.h header file is needed for malloc_usable_size() function
** on some systems (e.g. Linux).
*/
-#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLOC_USABLE_SIZE)
-# define SQLITE_USE_MALLOC_H
-# define SQLITE_USE_MALLOC_USABLE_SIZE
+#if HAVE_MALLOC_H && HAVE_MALLOC_USABLE_SIZE
+# define SQLITE_USE_MALLOC_H 1
+# define SQLITE_USE_MALLOC_USABLE_SIZE 1
/*
** The MSVCRT has malloc_usable_size(), but it is called _msize(). The
** use of _msize() is automatic, but can be disabled by compiling with
@@ -16467,7 +16936,7 @@ static int sqlite3MemSize(void *pPrior){
**
** For this low-level interface, we know that pPrior!=0. Cases where
** pPrior==0 while have been intercepted by higher-level routine and
-** redirected to xMalloc. Similarly, we know that nByte>0 becauses
+** redirected to xMalloc. Similarly, we know that nByte>0 because
** cases where nByte<=0 will have been intercepted by higher-level
** routines and redirected to xFree.
*/
@@ -16970,7 +17439,7 @@ SQLITE_PRIVATE void sqlite3MemdebugSetType(void *p, u8 eType){
** This routine is designed for use within an assert() statement, to
** verify the type of an allocation. For example:
**
-** assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );
+** assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
*/
SQLITE_PRIVATE int sqlite3MemdebugHasType(void *p, u8 eType){
int rc = 1;
@@ -16992,7 +17461,7 @@ SQLITE_PRIVATE int sqlite3MemdebugHasType(void *p, u8 eType){
** This routine is designed for use within an assert() statement, to
** verify the type of an allocation. For example:
**
-** assert( sqlite3MemdebugNoType(p, MEMTYPE_DB) );
+** assert( sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
*/
SQLITE_PRIVATE int sqlite3MemdebugNoType(void *p, u8 eType){
int rc = 1;
@@ -17824,7 +18293,7 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetMemsys3(void){
** 1. All memory allocations sizes are rounded up to a power of 2.
**
** 2. If two adjacent free blocks are the halves of a larger block,
-** then the two blocks are coalesed into the single larger block.
+** then the two blocks are coalesced into the single larger block.
**
** 3. New memory is allocated from the first available free block.
**
@@ -18455,6 +18924,7 @@ SQLITE_PRIVATE int sqlite3MutexEnd(void){
SQLITE_API sqlite3_mutex *sqlite3_mutex_alloc(int id){
#ifndef SQLITE_OMIT_AUTOINIT
if( id<=SQLITE_MUTEX_RECURSIVE && sqlite3_initialize() ) return 0;
+ if( id>SQLITE_MUTEX_RECURSIVE && sqlite3MutexInit() ) return 0;
#endif
return sqlite3GlobalConfig.mutex.xMutexAlloc(id);
}
@@ -18911,8 +19381,12 @@ static sqlite3_mutex *pthreadMutexAlloc(int iType){
break;
}
default: {
- assert( iType-2 >= 0 );
- assert( iType-2 < ArraySize(staticMutexes) );
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( iType-2<0 || iType-2>=ArraySize(staticMutexes) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
p = &staticMutexes[iType-2];
#if SQLITE_MUTEX_NREF
p->id = iType;
@@ -19393,6 +19867,16 @@ SQLITE_API int sqlite3_open_file_count = 0;
# define SQLITE_OS_WINRT 0
#endif
+/*
+** For WinCE, some API function parameters do not appear to be declared as
+** volatile.
+*/
+#if SQLITE_OS_WINCE
+# define SQLITE_WIN32_VOLATILE
+#else
+# define SQLITE_WIN32_VOLATILE volatile
+#endif
+
#endif /* _OS_WIN_H_ */
/************** End of os_win.h **********************************************/
@@ -19473,7 +19957,7 @@ static int winMutex_isNt = -1; /* <0 means "need to query" */
** of the sqlite3_initialize() and sqlite3_shutdown() processing, the
** "interlocked" magic used here is probably not strictly necessary.
*/
-static LONG volatile winMutex_lock = 0;
+static LONG SQLITE_WIN32_VOLATILE winMutex_lock = 0;
SQLITE_API int sqlite3_win32_is_nt(void); /* os_win.c */
SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds); /* os_win.c */
@@ -19583,6 +20067,12 @@ static sqlite3_mutex *winMutexAlloc(int iType){
break;
}
default: {
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( iType-2<0 || iType-2>=ArraySize(winMutex_staticMutexes) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
assert( iType-2 >= 0 );
assert( iType-2 < ArraySize(winMutex_staticMutexes) );
assert( winMutex_isInit==1 );
@@ -20041,11 +20531,9 @@ static int mallocWithAlarm(int n, void **pp){
** Allocate memory. This routine is like sqlite3_malloc() except that it
** assumes the memory subsystem has already been initialized.
*/
-SQLITE_PRIVATE void *sqlite3Malloc(int n){
+SQLITE_PRIVATE void *sqlite3Malloc(u64 n){
void *p;
- if( n<=0 /* IMP: R-65312-04917 */
- || n>=0x7fffff00
- ){
+ if( n==0 || n>=0x7fffff00 ){
/* A memory allocation of a number of bytes which is near the maximum
** signed integer value might cause an integer overflow inside of the
** xMalloc(). Hence we limit the maximum size to 0x7fffff00, giving
@@ -20054,12 +20542,12 @@ SQLITE_PRIVATE void *sqlite3Malloc(int n){
p = 0;
}else if( sqlite3GlobalConfig.bMemstat ){
sqlite3_mutex_enter(mem0.mutex);
- mallocWithAlarm(n, &p);
+ mallocWithAlarm((int)n, &p);
sqlite3_mutex_leave(mem0.mutex);
}else{
- p = sqlite3GlobalConfig.m.xMalloc(n);
+ p = sqlite3GlobalConfig.m.xMalloc((int)n);
}
- assert( EIGHT_BYTE_ALIGNMENT(p) ); /* IMP: R-04675-44850 */
+ assert( EIGHT_BYTE_ALIGNMENT(p) ); /* IMP: R-11148-40995 */
return p;
}
@@ -20072,6 +20560,12 @@ SQLITE_API void *sqlite3_malloc(int n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
+ return n<=0 ? 0 : sqlite3Malloc(n);
+}
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64 n){
+#ifndef SQLITE_OMIT_AUTOINIT
+ if( sqlite3_initialize() ) return 0;
+#endif
return sqlite3Malloc(n);
}
@@ -20099,22 +20593,20 @@ SQLITE_PRIVATE void *sqlite3ScratchMalloc(int n){
assert( n>0 );
sqlite3_mutex_enter(mem0.mutex);
+ sqlite3StatusSet(SQLITE_STATUS_SCRATCH_SIZE, n);
if( mem0.nScratchFree && sqlite3GlobalConfig.szScratch>=n ){
p = mem0.pScratchFree;
mem0.pScratchFree = mem0.pScratchFree->pNext;
mem0.nScratchFree--;
sqlite3StatusAdd(SQLITE_STATUS_SCRATCH_USED, 1);
- sqlite3StatusSet(SQLITE_STATUS_SCRATCH_SIZE, n);
sqlite3_mutex_leave(mem0.mutex);
}else{
- if( sqlite3GlobalConfig.bMemstat ){
- sqlite3StatusSet(SQLITE_STATUS_SCRATCH_SIZE, n);
- n = mallocWithAlarm(n, &p);
- if( p ) sqlite3StatusAdd(SQLITE_STATUS_SCRATCH_OVERFLOW, n);
- sqlite3_mutex_leave(mem0.mutex);
- }else{
+ sqlite3_mutex_leave(mem0.mutex);
+ p = sqlite3Malloc(n);
+ if( sqlite3GlobalConfig.bMemstat && p ){
+ sqlite3_mutex_enter(mem0.mutex);
+ sqlite3StatusAdd(SQLITE_STATUS_SCRATCH_OVERFLOW, sqlite3MallocSize(p));
sqlite3_mutex_leave(mem0.mutex);
- p = sqlite3GlobalConfig.m.xMalloc(n);
}
sqlite3MemdebugSetType(p, MEMTYPE_SCRATCH);
}
@@ -20122,11 +20614,12 @@ SQLITE_PRIVATE void *sqlite3ScratchMalloc(int n){
#if SQLITE_THREADSAFE==0 && !defined(NDEBUG)
- /* Verify that no more than two scratch allocations per thread
- ** are outstanding at one time. (This is only checked in the
- ** single-threaded case since checking in the multi-threaded case
- ** would be much more complicated.) */
- assert( scratchAllocOut<=1 );
+ /* EVIDENCE-OF: R-12970-05880 SQLite will not use more than one scratch
+ ** buffers per thread.
+ **
+ ** This can only be checked in single-threaded mode.
+ */
+ assert( scratchAllocOut==0 );
if( p ) scratchAllocOut++;
#endif
@@ -20192,29 +20685,37 @@ static int isLookaside(sqlite3 *db, void *p){
*/
SQLITE_PRIVATE int sqlite3MallocSize(void *p){
assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
- assert( sqlite3MemdebugNoType(p, MEMTYPE_DB) );
return sqlite3GlobalConfig.m.xSize(p);
}
SQLITE_PRIVATE int sqlite3DbMallocSize(sqlite3 *db, void *p){
- assert( db!=0 );
- assert( sqlite3_mutex_held(db->mutex) );
- if( isLookaside(db, p) ){
- return db->lookaside.sz;
+ if( db==0 ){
+ assert( sqlite3MemdebugNoType(p, ~MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
+ return sqlite3MallocSize(p);
}else{
- assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );
- assert( sqlite3MemdebugHasType(p, MEMTYPE_LOOKASIDE|MEMTYPE_HEAP) );
- assert( db!=0 || sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
- return sqlite3GlobalConfig.m.xSize(p);
+ assert( sqlite3_mutex_held(db->mutex) );
+ if( isLookaside(db, p) ){
+ return db->lookaside.sz;
+ }else{
+ assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
+ assert( sqlite3MemdebugNoType(p, ~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
+ return sqlite3GlobalConfig.m.xSize(p);
+ }
}
}
+SQLITE_API sqlite3_uint64 sqlite3_msize(void *p){
+ assert( sqlite3MemdebugNoType(p, ~MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
+ return (sqlite3_uint64)sqlite3GlobalConfig.m.xSize(p);
+}
/*
** Free memory previously obtained from sqlite3Malloc().
*/
SQLITE_API void sqlite3_free(void *p){
if( p==0 ) return; /* IMP: R-49053-54554 */
- assert( sqlite3MemdebugNoType(p, MEMTYPE_DB) );
assert( sqlite3MemdebugHasType(p, MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugNoType(p, ~MEMTYPE_HEAP) );
if( sqlite3GlobalConfig.bMemstat ){
sqlite3_mutex_enter(mem0.mutex);
sqlite3StatusAdd(SQLITE_STATUS_MEMORY_USED, -sqlite3MallocSize(p));
@@ -20227,6 +20728,14 @@ SQLITE_API void sqlite3_free(void *p){
}
/*
+** Add the size of memory allocation "p" to the count in
+** *db->pnBytesFreed.
+*/
+static SQLITE_NOINLINE void measureAllocationSize(sqlite3 *db, void *p){
+ *db->pnBytesFreed += sqlite3DbMallocSize(db,p);
+}
+
+/*
** Free memory that might be associated with a particular database
** connection.
*/
@@ -20235,7 +20744,7 @@ SQLITE_PRIVATE void sqlite3DbFree(sqlite3 *db, void *p){
if( p==0 ) return;
if( db ){
if( db->pnBytesFreed ){
- *db->pnBytesFreed += sqlite3DbMallocSize(db, p);
+ measureAllocationSize(db, p);
return;
}
if( isLookaside(db, p) ){
@@ -20250,8 +20759,8 @@ SQLITE_PRIVATE void sqlite3DbFree(sqlite3 *db, void *p){
return;
}
}
- assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );
- assert( sqlite3MemdebugHasType(p, MEMTYPE_LOOKASIDE|MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
+ assert( sqlite3MemdebugNoType(p, ~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
assert( db!=0 || sqlite3MemdebugNoType(p, MEMTYPE_LOOKASIDE) );
sqlite3MemdebugSetType(p, MEMTYPE_HEAP);
sqlite3_free(p);
@@ -20260,14 +20769,16 @@ SQLITE_PRIVATE void sqlite3DbFree(sqlite3 *db, void *p){
/*
** Change the size of an existing memory allocation
*/
-SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, int nBytes){
+SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, u64 nBytes){
int nOld, nNew, nDiff;
void *pNew;
+ assert( sqlite3MemdebugHasType(pOld, MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugNoType(pOld, ~MEMTYPE_HEAP) );
if( pOld==0 ){
- return sqlite3Malloc(nBytes); /* IMP: R-28354-25769 */
+ return sqlite3Malloc(nBytes); /* IMP: R-04300-56712 */
}
- if( nBytes<=0 ){
- sqlite3_free(pOld); /* IMP: R-31593-10574 */
+ if( nBytes==0 ){
+ sqlite3_free(pOld); /* IMP: R-26507-47431 */
return 0;
}
if( nBytes>=0x7fffff00 ){
@@ -20278,22 +20789,20 @@ SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, int nBytes){
/* IMPLEMENTATION-OF: R-46199-30249 SQLite guarantees that the second
** argument to xRealloc is always a value returned by a prior call to
** xRoundup. */
- nNew = sqlite3GlobalConfig.m.xRoundup(nBytes);
+ nNew = sqlite3GlobalConfig.m.xRoundup((int)nBytes);
if( nOld==nNew ){
pNew = pOld;
}else if( sqlite3GlobalConfig.bMemstat ){
sqlite3_mutex_enter(mem0.mutex);
- sqlite3StatusSet(SQLITE_STATUS_MALLOC_SIZE, nBytes);
+ sqlite3StatusSet(SQLITE_STATUS_MALLOC_SIZE, (int)nBytes);
nDiff = nNew - nOld;
if( sqlite3StatusValue(SQLITE_STATUS_MEMORY_USED) >=
mem0.alarmThreshold-nDiff ){
sqlite3MallocAlarm(nDiff);
}
- assert( sqlite3MemdebugHasType(pOld, MEMTYPE_HEAP) );
- assert( sqlite3MemdebugNoType(pOld, ~MEMTYPE_HEAP) );
pNew = sqlite3GlobalConfig.m.xRealloc(pOld, nNew);
if( pNew==0 && mem0.alarmCallback ){
- sqlite3MallocAlarm(nBytes);
+ sqlite3MallocAlarm((int)nBytes);
pNew = sqlite3GlobalConfig.m.xRealloc(pOld, nNew);
}
if( pNew ){
@@ -20304,7 +20813,7 @@ SQLITE_PRIVATE void *sqlite3Realloc(void *pOld, int nBytes){
}else{
pNew = sqlite3GlobalConfig.m.xRealloc(pOld, nNew);
}
- assert( EIGHT_BYTE_ALIGNMENT(pNew) ); /* IMP: R-04675-44850 */
+ assert( EIGHT_BYTE_ALIGNMENT(pNew) ); /* IMP: R-11148-40995 */
return pNew;
}
@@ -20316,6 +20825,13 @@ SQLITE_API void *sqlite3_realloc(void *pOld, int n){
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
+ if( n<0 ) n = 0; /* IMP: R-26507-47431 */
+ return sqlite3Realloc(pOld, n);
+}
+SQLITE_API void *sqlite3_realloc64(void *pOld, sqlite3_uint64 n){
+#ifndef SQLITE_OMIT_AUTOINIT
+ if( sqlite3_initialize() ) return 0;
+#endif
return sqlite3Realloc(pOld, n);
}
@@ -20323,10 +20839,10 @@ SQLITE_API void *sqlite3_realloc(void *pOld, int n){
/*
** Allocate and zero memory.
*/
-SQLITE_PRIVATE void *sqlite3MallocZero(int n){
+SQLITE_PRIVATE void *sqlite3MallocZero(u64 n){
void *p = sqlite3Malloc(n);
if( p ){
- memset(p, 0, n);
+ memset(p, 0, (size_t)n);
}
return p;
}
@@ -20335,10 +20851,10 @@ SQLITE_PRIVATE void *sqlite3MallocZero(int n){
** Allocate and zero memory. If the allocation fails, make
** the mallocFailed flag in the connection pointer.
*/
-SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3 *db, int n){
+SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3 *db, u64 n){
void *p = sqlite3DbMallocRaw(db, n);
if( p ){
- memset(p, 0, n);
+ memset(p, 0, (size_t)n);
}
return p;
}
@@ -20361,7 +20877,7 @@ SQLITE_PRIVATE void *sqlite3DbMallocZero(sqlite3 *db, int n){
** In other words, if a subsequent malloc (ex: "b") worked, it is assumed
** that all prior mallocs (ex: "a") worked too.
*/
-SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3 *db, int n){
+SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3 *db, u64 n){
void *p;
assert( db==0 || sqlite3_mutex_held(db->mutex) );
assert( db==0 || db->pnBytesFreed==0 );
@@ -20396,8 +20912,8 @@ SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3 *db, int n){
if( !p && db ){
db->mallocFailed = 1;
}
- sqlite3MemdebugSetType(p, MEMTYPE_DB |
- ((db && db->lookaside.bEnabled) ? MEMTYPE_LOOKASIDE : MEMTYPE_HEAP));
+ sqlite3MemdebugSetType(p,
+ (db && db->lookaside.bEnabled) ? MEMTYPE_LOOKASIDE : MEMTYPE_HEAP);
return p;
}
@@ -20405,7 +20921,7 @@ SQLITE_PRIVATE void *sqlite3DbMallocRaw(sqlite3 *db, int n){
** Resize the block of memory pointed to by p to n bytes. If the
** resize fails, set the mallocFailed flag in the connection object.
*/
-SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *db, void *p, int n){
+SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *db, void *p, u64 n){
void *pNew = 0;
assert( db!=0 );
assert( sqlite3_mutex_held(db->mutex) );
@@ -20423,15 +20939,14 @@ SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *db, void *p, int n){
sqlite3DbFree(db, p);
}
}else{
- assert( sqlite3MemdebugHasType(p, MEMTYPE_DB) );
- assert( sqlite3MemdebugHasType(p, MEMTYPE_LOOKASIDE|MEMTYPE_HEAP) );
+ assert( sqlite3MemdebugHasType(p, (MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
+ assert( sqlite3MemdebugNoType(p, ~(MEMTYPE_LOOKASIDE|MEMTYPE_HEAP)) );
sqlite3MemdebugSetType(p, MEMTYPE_HEAP);
- pNew = sqlite3_realloc(p, n);
+ pNew = sqlite3_realloc64(p, n);
if( !pNew ){
- sqlite3MemdebugSetType(p, MEMTYPE_DB|MEMTYPE_HEAP);
db->mallocFailed = 1;
}
- sqlite3MemdebugSetType(pNew, MEMTYPE_DB |
+ sqlite3MemdebugSetType(pNew,
(db->lookaside.bEnabled ? MEMTYPE_LOOKASIDE : MEMTYPE_HEAP));
}
}
@@ -20442,7 +20957,7 @@ SQLITE_PRIVATE void *sqlite3DbRealloc(sqlite3 *db, void *p, int n){
** Attempt to reallocate p. If the reallocation fails, then free p
** and set the mallocFailed flag in the database connection.
*/
-SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *db, void *p, int n){
+SQLITE_PRIVATE void *sqlite3DbReallocOrFree(sqlite3 *db, void *p, u64 n){
void *pNew;
pNew = sqlite3DbRealloc(db, p, n);
if( !pNew ){
@@ -20472,7 +20987,7 @@ SQLITE_PRIVATE char *sqlite3DbStrDup(sqlite3 *db, const char *z){
}
return zNew;
}
-SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3 *db, const char *z, int n){
+SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3 *db, const char *z, u64 n){
char *zNew;
if( z==0 ){
return 0;
@@ -20480,7 +20995,7 @@ SQLITE_PRIVATE char *sqlite3DbStrNDup(sqlite3 *db, const char *z, int n){
assert( (n&0x7fffffff)==n );
zNew = sqlite3DbMallocRaw(db, n+1);
if( zNew ){
- memcpy(zNew, z, n);
+ memcpy(zNew, z, (size_t)n);
zNew[n] = 0;
}
return zNew;
@@ -20502,6 +21017,14 @@ SQLITE_PRIVATE void sqlite3SetString(char **pz, sqlite3 *db, const char *zFormat
*pz = z;
}
+/*
+** Take actions at the end of an API call to indicate an OOM error
+*/
+static SQLITE_NOINLINE int apiOomError(sqlite3 *db){
+ db->mallocFailed = 0;
+ sqlite3Error(db, SQLITE_NOMEM);
+ return SQLITE_NOMEM;
+}
/*
** This function must be called before exiting any API function (i.e.
@@ -20522,12 +21045,11 @@ SQLITE_PRIVATE int sqlite3ApiExit(sqlite3* db, int rc){
** is unsafe, as is the call to sqlite3Error().
*/
assert( !db || sqlite3_mutex_held(db->mutex) );
- if( db && (db->mallocFailed || rc==SQLITE_IOERR_NOMEM) ){
- sqlite3Error(db, SQLITE_NOMEM, 0);
- db->mallocFailed = 0;
- rc = SQLITE_NOMEM;
+ if( db==0 ) return rc & 0xff;
+ if( db->mallocFailed || rc==SQLITE_IOERR_NOMEM ){
+ return apiOomError(db);
}
- return rc & (db ? db->errMask : 0xff);
+ return rc & db->errMask;
}
/************** End of malloc.c **********************************************/
@@ -20734,7 +21256,7 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
const et_info *infop; /* Pointer to the appropriate info structure */
char *zOut; /* Rendering buffer */
int nOut; /* Size of the rendering buffer */
- char *zExtra; /* Malloced memory used by some conversion */
+ char *zExtra = 0; /* Malloced memory used by some conversion */
#ifndef SQLITE_OMIT_FLOATING_POINT
int exp, e2; /* exponent of real numbers */
int nsd; /* Number of significant digits returned */
@@ -20745,6 +21267,13 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
PrintfArguments *pArgList = 0; /* Arguments for SQLITE_PRINTF_SQLFUNC */
char buf[etBUFSIZE]; /* Conversion buffer */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( ap==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ sqlite3StrAccumReset(pAccum);
+ return;
+ }
+#endif
bufpt = 0;
if( bFlags ){
if( (bArgList = (bFlags & SQLITE_PRINTF_SQLFUNC))!=0 ){
@@ -20757,9 +21286,13 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
for(; (c=(*fmt))!=0; ++fmt){
if( c!='%' ){
bufpt = (char *)fmt;
- while( (c=(*++fmt))!='%' && c!=0 ){};
+#if HAVE_STRCHRNUL
+ fmt = strchrnul(fmt, '%');
+#else
+ do{ fmt++; }while( *fmt && *fmt != '%' );
+#endif
sqlite3StrAccumAppend(pAccum, bufpt, (int)(fmt - bufpt));
- if( c==0 ) break;
+ if( *fmt==0 ) break;
}
if( (c=(*++fmt))==0 ){
sqlite3StrAccumAppend(pAccum, "%", 1);
@@ -20847,7 +21380,6 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
break;
}
}
- zExtra = 0;
/*
** At this point, variables are initialized as follows:
@@ -21138,13 +21670,16 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
}else{
c = va_arg(ap,int);
}
- buf[0] = (char)c;
- if( precision>=0 ){
- for(idx=1; idx<precision; idx++) buf[idx] = (char)c;
- length = precision;
- }else{
- length =1;
+ if( precision>1 ){
+ width -= precision-1;
+ if( width>1 && !flag_leftjustify ){
+ sqlite3AppendChar(pAccum, width-1, ' ');
+ width = 0;
+ }
+ sqlite3AppendChar(pAccum, precision-1, c);
}
+ length = 1;
+ buf[0] = c;
bufpt = buf;
break;
case etSTRING:
@@ -21245,11 +21780,14 @@ SQLITE_PRIVATE void sqlite3VXPrintf(
** the output.
*/
width -= length;
- if( width>0 && !flag_leftjustify ) sqlite3AppendSpace(pAccum, width);
+ if( width>0 && !flag_leftjustify ) sqlite3AppendChar(pAccum, width, ' ');
sqlite3StrAccumAppend(pAccum, bufpt, length);
- if( width>0 && flag_leftjustify ) sqlite3AppendSpace(pAccum, width);
+ if( width>0 && flag_leftjustify ) sqlite3AppendChar(pAccum, width, ' ');
- if( zExtra ) sqlite3_free(zExtra);
+ if( zExtra ){
+ sqlite3_free(zExtra);
+ zExtra = 0;
+ }
}/* End for loop over the format string */
} /* End of function */
@@ -21276,6 +21814,11 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
char *zOld = (p->zText==p->zBase ? 0 : p->zText);
i64 szNew = p->nChar;
szNew += N + 1;
+ if( szNew+p->nChar<=p->mxAlloc ){
+ /* Force exponential buffer size growth as long as it does not overflow,
+ ** to avoid having to call this routine too often */
+ szNew += p->nChar;
+ }
if( szNew > p->mxAlloc ){
sqlite3StrAccumReset(p);
setStrAccumError(p, STRACCUM_TOOBIG);
@@ -21292,6 +21835,7 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
assert( p->zText!=0 || p->nChar==0 );
if( zOld==0 && p->nChar>0 ) memcpy(zNew, p->zText, p->nChar);
p->zText = zNew;
+ p->nAlloc = sqlite3DbMallocSize(p->db, zNew);
}else{
sqlite3StrAccumReset(p);
setStrAccumError(p, STRACCUM_NOMEM);
@@ -21302,11 +21846,11 @@ static int sqlite3StrAccumEnlarge(StrAccum *p, int N){
}
/*
-** Append N space characters to the given string buffer.
+** Append N copies of character c to the given string buffer.
*/
-SQLITE_PRIVATE void sqlite3AppendSpace(StrAccum *p, int N){
+SQLITE_PRIVATE void sqlite3AppendChar(StrAccum *p, int N, char c){
if( p->nChar+N >= p->nAlloc && (N = sqlite3StrAccumEnlarge(p, N))<=0 ) return;
- while( (N--)>0 ) p->zText[p->nChar++] = ' ';
+ while( (N--)>0 ) p->zText[p->nChar++] = c;
}
/*
@@ -21317,7 +21861,7 @@ SQLITE_PRIVATE void sqlite3AppendSpace(StrAccum *p, int N){
** work (enlarging the buffer) using tail recursion, so that the
** sqlite3StrAccumAppend() routine can use fast calling semantics.
*/
-static void enlargeAndAppend(StrAccum *p, const char *z, int N){
+static void SQLITE_NOINLINE enlargeAndAppend(StrAccum *p, const char *z, int N){
N = sqlite3StrAccumEnlarge(p, N);
if( N>0 ){
memcpy(&p->zText[p->nChar], z, N);
@@ -21336,11 +21880,11 @@ SQLITE_PRIVATE void sqlite3StrAccumAppend(StrAccum *p, const char *z, int N){
assert( p->accError==0 || p->nAlloc==0 );
if( p->nChar+N >= p->nAlloc ){
enlargeAndAppend(p,z,N);
- return;
+ }else{
+ assert( p->zText );
+ p->nChar += N;
+ memcpy(&p->zText[p->nChar-N], z, N);
}
- assert( p->zText );
- memcpy(&p->zText[p->nChar], z, N);
- p->nChar += N;
}
/*
@@ -21437,7 +21981,7 @@ SQLITE_PRIVATE char *sqlite3MPrintf(sqlite3 *db, const char *zFormat, ...){
/*
** Like sqlite3MPrintf(), but call sqlite3DbFree() on zStr after formatting
-** the string and before returnning. This routine is intended to be used
+** the string and before returning. This routine is intended to be used
** to modify an existing string. For example:
**
** x = sqlite3MPrintf(db, x, "prefix %s suffix", x);
@@ -21461,6 +22005,13 @@ SQLITE_API char *sqlite3_vmprintf(const char *zFormat, va_list ap){
char *z;
char zBase[SQLITE_PRINT_BUF_SIZE];
StrAccum acc;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( zFormat==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
#ifndef SQLITE_OMIT_AUTOINIT
if( sqlite3_initialize() ) return 0;
#endif
@@ -21503,6 +22054,13 @@ SQLITE_API char *sqlite3_mprintf(const char *zFormat, ...){
SQLITE_API char *sqlite3_vsnprintf(int n, char *zBuf, const char *zFormat, va_list ap){
StrAccum acc;
if( n<=0 ) return zBuf;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( zBuf==0 || zFormat==0 ) {
+ (void)SQLITE_MISUSE_BKPT;
+ if( zBuf && n>0 ) zBuf[0] = 0;
+ return zBuf;
+ }
+#endif
sqlite3StrAccumInit(&acc, zBuf, n, 0);
acc.useMalloc = 0;
sqlite3VXPrintf(&acc, 0, zFormat, ap);
@@ -21570,6 +22128,69 @@ SQLITE_PRIVATE void sqlite3DebugPrintf(const char *zFormat, ...){
}
#endif
+#ifdef SQLITE_DEBUG
+/*************************************************************************
+** Routines for implementing the "TreeView" display of hierarchical
+** data structures for debugging.
+**
+** The main entry points (coded elsewhere) are:
+** sqlite3TreeViewExpr(0, pExpr, 0);
+** sqlite3TreeViewExprList(0, pList, 0, 0);
+** sqlite3TreeViewSelect(0, pSelect, 0);
+** Insert calls to those routines while debugging in order to display
+** a diagram of Expr, ExprList, and Select objects.
+**
+*/
+/* Add a new subitem to the tree. The moreToFollow flag indicates that this
+** is not the last item in the tree. */
+SQLITE_PRIVATE TreeView *sqlite3TreeViewPush(TreeView *p, u8 moreToFollow){
+ if( p==0 ){
+ p = sqlite3_malloc( sizeof(*p) );
+ if( p==0 ) return 0;
+ memset(p, 0, sizeof(*p));
+ }else{
+ p->iLevel++;
+ }
+ assert( moreToFollow==0 || moreToFollow==1 );
+ if( p->iLevel<sizeof(p->bLine) ) p->bLine[p->iLevel] = moreToFollow;
+ return p;
+}
+/* Finished with one layer of the tree */
+SQLITE_PRIVATE void sqlite3TreeViewPop(TreeView *p){
+ if( p==0 ) return;
+ p->iLevel--;
+ if( p->iLevel<0 ) sqlite3_free(p);
+}
+/* Generate a single line of output for the tree, with a prefix that contains
+** all the appropriate tree lines */
+SQLITE_PRIVATE void sqlite3TreeViewLine(TreeView *p, const char *zFormat, ...){
+ va_list ap;
+ int i;
+ StrAccum acc;
+ char zBuf[500];
+ sqlite3StrAccumInit(&acc, zBuf, sizeof(zBuf), 0);
+ acc.useMalloc = 0;
+ if( p ){
+ for(i=0; i<p->iLevel && i<sizeof(p->bLine)-1; i++){
+ sqlite3StrAccumAppend(&acc, p->bLine[i] ? "| " : " ", 4);
+ }
+ sqlite3StrAccumAppend(&acc, p->bLine[i] ? "|-- " : "'-- ", 4);
+ }
+ va_start(ap, zFormat);
+ sqlite3VXPrintf(&acc, 0, zFormat, ap);
+ va_end(ap);
+ if( zBuf[acc.nChar-1]!='\n' ) sqlite3StrAccumAppend(&acc, "\n", 1);
+ sqlite3StrAccumFinish(&acc);
+ fprintf(stdout,"%s", zBuf);
+ fflush(stdout);
+}
+/* Shorthand for starting a new tree item that consists of a single label */
+SQLITE_PRIVATE void sqlite3TreeViewItem(TreeView *p, const char *zLabel, u8 moreToFollow){
+ p = sqlite3TreeViewPush(p, moreToFollow);
+ sqlite3TreeViewLine(p, "%s", zLabel);
+}
+#endif /* SQLITE_DEBUG */
+
/*
** variable-argument wrapper around sqlite3VXPrintf().
*/
@@ -21631,11 +22252,19 @@ SQLITE_API void sqlite3_randomness(int N, void *pBuf){
#endif
#if SQLITE_THREADSAFE
- sqlite3_mutex *mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
- sqlite3_mutex_enter(mutex);
+ sqlite3_mutex *mutex;
+#endif
+
+#ifndef SQLITE_OMIT_AUTOINIT
+ if( sqlite3_initialize() ) return;
+#endif
+
+#if SQLITE_THREADSAFE
+ mutex = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_PRNG);
#endif
- if( N<=0 ){
+ sqlite3_mutex_enter(mutex);
+ if( N<=0 || pBuf==0 ){
wsdPrng.isInit = 0;
sqlite3_mutex_leave(mutex);
return;
@@ -21709,6 +22338,272 @@ SQLITE_PRIVATE void sqlite3PrngRestoreState(void){
#endif /* SQLITE_OMIT_BUILTIN_TEST */
/************** End of random.c **********************************************/
+/************** Begin file threads.c *****************************************/
+/*
+** 2012 July 21
+**
+** The author disclaims copyright to this source code. In place of
+** a legal notice, here is a blessing:
+**
+** May you do good and not evil.
+** May you find forgiveness for yourself and forgive others.
+** May you share freely, never taking more than you give.
+**
+******************************************************************************
+**
+** This file presents a simple cross-platform threading interface for
+** use internally by SQLite.
+**
+** A "thread" can be created using sqlite3ThreadCreate(). This thread
+** runs independently of its creator until it is joined using
+** sqlite3ThreadJoin(), at which point it terminates.
+**
+** Threads do not have to be real. It could be that the work of the
+** "thread" is done by the main thread at either the sqlite3ThreadCreate()
+** or sqlite3ThreadJoin() call. This is, in fact, what happens in
+** single threaded systems. Nothing in SQLite requires multiple threads.
+** This interface exists so that applications that want to take advantage
+** of multiple cores can do so, while also allowing applications to stay
+** single-threaded if desired.
+*/
+#if SQLITE_OS_WIN
+#endif
+
+#if SQLITE_MAX_WORKER_THREADS>0
+
+/********************************* Unix Pthreads ****************************/
+#if SQLITE_OS_UNIX && defined(SQLITE_MUTEX_PTHREADS) && SQLITE_THREADSAFE>0
+
+#define SQLITE_THREADS_IMPLEMENTED 1 /* Prevent the single-thread code below */
+/* #include <pthread.h> */
+
+/* A running thread */
+struct SQLiteThread {
+ pthread_t tid; /* Thread ID */
+ int done; /* Set to true when thread finishes */
+ void *pOut; /* Result returned by the thread */
+ void *(*xTask)(void*); /* The thread routine */
+ void *pIn; /* Argument to the thread */
+};
+
+/* Create a new thread */
+SQLITE_PRIVATE int sqlite3ThreadCreate(
+ SQLiteThread **ppThread, /* OUT: Write the thread object here */
+ void *(*xTask)(void*), /* Routine to run in a separate thread */
+ void *pIn /* Argument passed into xTask() */
+){
+ SQLiteThread *p;
+ int rc;
+
+ assert( ppThread!=0 );
+ assert( xTask!=0 );
+ /* This routine is never used in single-threaded mode */
+ assert( sqlite3GlobalConfig.bCoreMutex!=0 );
+
+ *ppThread = 0;
+ p = sqlite3Malloc(sizeof(*p));
+ if( p==0 ) return SQLITE_NOMEM;
+ memset(p, 0, sizeof(*p));
+ p->xTask = xTask;
+ p->pIn = pIn;
+ if( sqlite3FaultSim(200) ){
+ rc = 1;
+ }else{
+ rc = pthread_create(&p->tid, 0, xTask, pIn);
+ }
+ if( rc ){
+ p->done = 1;
+ p->pOut = xTask(pIn);
+ }
+ *ppThread = p;
+ return SQLITE_OK;
+}
+
+/* Get the results of the thread */
+SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
+ int rc;
+
+ assert( ppOut!=0 );
+ if( NEVER(p==0) ) return SQLITE_NOMEM;
+ if( p->done ){
+ *ppOut = p->pOut;
+ rc = SQLITE_OK;
+ }else{
+ rc = pthread_join(p->tid, ppOut) ? SQLITE_ERROR : SQLITE_OK;
+ }
+ sqlite3_free(p);
+ return rc;
+}
+
+#endif /* SQLITE_OS_UNIX && defined(SQLITE_MUTEX_PTHREADS) */
+/******************************** End Unix Pthreads *************************/
+
+
+/********************************* Win32 Threads ****************************/
+#if SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && SQLITE_THREADSAFE>0
+
+#define SQLITE_THREADS_IMPLEMENTED 1 /* Prevent the single-thread code below */
+#include <process.h>
+
+/* A running thread */
+struct SQLiteThread {
+ void *tid; /* The thread handle */
+ unsigned id; /* The thread identifier */
+ void *(*xTask)(void*); /* The routine to run as a thread */
+ void *pIn; /* Argument to xTask */
+ void *pResult; /* Result of xTask */
+};
+
+/* Thread procedure Win32 compatibility shim */
+static unsigned __stdcall sqlite3ThreadProc(
+ void *pArg /* IN: Pointer to the SQLiteThread structure */
+){
+ SQLiteThread *p = (SQLiteThread *)pArg;
+
+ assert( p!=0 );
+#if 0
+ /*
+ ** This assert appears to trigger spuriously on certain
+ ** versions of Windows, possibly due to _beginthreadex()
+ ** and/or CreateThread() not fully setting their thread
+ ** ID parameter before starting the thread.
+ */
+ assert( p->id==GetCurrentThreadId() );
+#endif
+ assert( p->xTask!=0 );
+ p->pResult = p->xTask(p->pIn);
+
+ _endthreadex(0);
+ return 0; /* NOT REACHED */
+}
+
+/* Create a new thread */
+SQLITE_PRIVATE int sqlite3ThreadCreate(
+ SQLiteThread **ppThread, /* OUT: Write the thread object here */
+ void *(*xTask)(void*), /* Routine to run in a separate thread */
+ void *pIn /* Argument passed into xTask() */
+){
+ SQLiteThread *p;
+
+ assert( ppThread!=0 );
+ assert( xTask!=0 );
+ *ppThread = 0;
+ p = sqlite3Malloc(sizeof(*p));
+ if( p==0 ) return SQLITE_NOMEM;
+ if( sqlite3GlobalConfig.bCoreMutex==0 ){
+ memset(p, 0, sizeof(*p));
+ }else{
+ p->xTask = xTask;
+ p->pIn = pIn;
+ p->tid = (void*)_beginthreadex(0, 0, sqlite3ThreadProc, p, 0, &p->id);
+ if( p->tid==0 ){
+ memset(p, 0, sizeof(*p));
+ }
+ }
+ if( p->xTask==0 ){
+ p->id = GetCurrentThreadId();
+ p->pResult = xTask(pIn);
+ }
+ *ppThread = p;
+ return SQLITE_OK;
+}
+
+SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject); /* os_win.c */
+
+/* Get the results of the thread */
+SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
+ DWORD rc;
+ BOOL bRc;
+
+ assert( ppOut!=0 );
+ if( NEVER(p==0) ) return SQLITE_NOMEM;
+ if( p->xTask==0 ){
+ assert( p->id==GetCurrentThreadId() );
+ rc = WAIT_OBJECT_0;
+ assert( p->tid==0 );
+ }else{
+ assert( p->id!=0 && p->id!=GetCurrentThreadId() );
+ rc = sqlite3Win32Wait((HANDLE)p->tid);
+ assert( rc!=WAIT_IO_COMPLETION );
+ bRc = CloseHandle((HANDLE)p->tid);
+ assert( bRc );
+ }
+ if( rc==WAIT_OBJECT_0 ) *ppOut = p->pResult;
+ sqlite3_free(p);
+ return (rc==WAIT_OBJECT_0) ? SQLITE_OK : SQLITE_ERROR;
+}
+
+#endif /* SQLITE_OS_WIN && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT */
+/******************************** End Win32 Threads *************************/
+
+
+/********************************* Single-Threaded **************************/
+#ifndef SQLITE_THREADS_IMPLEMENTED
+/*
+** This implementation does not actually create a new thread. It does the
+** work of the thread in the main thread, when either the thread is created
+** or when it is joined
+*/
+
+/* A running thread */
+struct SQLiteThread {
+ void *(*xTask)(void*); /* The routine to run as a thread */
+ void *pIn; /* Argument to xTask */
+ void *pResult; /* Result of xTask */
+};
+
+/* Create a new thread */
+SQLITE_PRIVATE int sqlite3ThreadCreate(
+ SQLiteThread **ppThread, /* OUT: Write the thread object here */
+ void *(*xTask)(void*), /* Routine to run in a separate thread */
+ void *pIn /* Argument passed into xTask() */
+){
+ SQLiteThread *p;
+
+ assert( ppThread!=0 );
+ assert( xTask!=0 );
+ *ppThread = 0;
+ p = sqlite3Malloc(sizeof(*p));
+ if( p==0 ) return SQLITE_NOMEM;
+ if( (SQLITE_PTR_TO_INT(p)/17)&1 ){
+ p->xTask = xTask;
+ p->pIn = pIn;
+ }else{
+ p->xTask = 0;
+ p->pResult = xTask(pIn);
+ }
+ *ppThread = p;
+ return SQLITE_OK;
+}
+
+/* Get the results of the thread */
+SQLITE_PRIVATE int sqlite3ThreadJoin(SQLiteThread *p, void **ppOut){
+
+ assert( ppOut!=0 );
+ if( NEVER(p==0) ) return SQLITE_NOMEM;
+ if( p->xTask ){
+ *ppOut = p->xTask(p->pIn);
+ }else{
+ *ppOut = p->pResult;
+ }
+ sqlite3_free(p);
+
+#if defined(SQLITE_TEST)
+ {
+ void *pTstAlloc = sqlite3Malloc(10);
+ if (!pTstAlloc) return SQLITE_NOMEM;
+ sqlite3_free(pTstAlloc);
+ }
+#endif
+
+ return SQLITE_OK;
+}
+
+#endif /* !defined(SQLITE_THREADS_IMPLEMENTED) */
+/****************************** End Single-Threaded *************************/
+#endif /* SQLITE_MAX_WORKER_THREADS>0 */
+
+/************** End of threads.c *********************************************/
/************** Begin file utf.c *********************************************/
/*
** 2004 April 13
@@ -21909,7 +22804,7 @@ SQLITE_PRIVATE u32 sqlite3Utf8Read(
** desiredEnc. It is an error if the string is already of the desired
** encoding, or if *pMem does not contain a string value.
*/
-SQLITE_PRIVATE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
+SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
int len; /* Maximum length of output string in bytes */
unsigned char *zOut; /* Output buffer */
unsigned char *zIn; /* Input iterator */
@@ -22024,12 +22919,13 @@ SQLITE_PRIVATE int sqlite3VdbeMemTranslate(Mem *pMem, u8 desiredEnc){
*z = 0;
assert( (pMem->n+(desiredEnc==SQLITE_UTF8?1:2))<=len );
+ c = pMem->flags;
sqlite3VdbeMemRelease(pMem);
- pMem->flags &= ~(MEM_Static|MEM_Dyn|MEM_Ephem);
+ pMem->flags = MEM_Str|MEM_Term|(c&MEM_AffMask);
pMem->enc = desiredEnc;
- pMem->flags |= (MEM_Term);
pMem->z = (char*)zOut;
pMem->zMalloc = pMem->z;
+ pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->z);
translate_out:
#if defined(TRANSLATE_TRACE) && defined(SQLITE_DEBUG)
@@ -22258,7 +23154,7 @@ SQLITE_PRIVATE void sqlite3UtfSelfTest(void){
**
*/
/* #include <stdarg.h> */
-#ifdef SQLITE_HAVE_ISNAN
+#if HAVE_ISNAN || SQLITE_HAVE_ISNAN
# include <math.h>
#endif
@@ -22299,7 +23195,7 @@ SQLITE_PRIVATE int sqlite3FaultSim(int iTest){
*/
SQLITE_PRIVATE int sqlite3IsNaN(double x){
int rc; /* The value return */
-#if !defined(SQLITE_HAVE_ISNAN)
+#if !SQLITE_HAVE_ISNAN && !HAVE_ISNAN
/*
** Systems that support the isnan() library function should probably
** make use of it by compiling with -DSQLITE_HAVE_ISNAN. But we have
@@ -22329,9 +23225,9 @@ SQLITE_PRIVATE int sqlite3IsNaN(double x){
volatile double y = x;
volatile double z = y;
rc = (y!=z);
-#else /* if defined(SQLITE_HAVE_ISNAN) */
+#else /* if HAVE_ISNAN */
rc = isnan(x);
-#endif /* SQLITE_HAVE_ISNAN */
+#endif /* HAVE_ISNAN */
testcase( rc );
return rc;
}
@@ -22353,6 +23249,15 @@ SQLITE_PRIVATE int sqlite3Strlen30(const char *z){
}
/*
+** Set the current error code to err_code and clear any prior error message.
+*/
+SQLITE_PRIVATE void sqlite3Error(sqlite3 *db, int err_code){
+ assert( db!=0 );
+ db->errCode = err_code;
+ if( db->pErr ) sqlite3ValueSetNull(db->pErr);
+}
+
+/*
** Set the most recent error code and error string for the sqlite
** handle "db". The error code is set to "err_code".
**
@@ -22373,18 +23278,18 @@ SQLITE_PRIVATE int sqlite3Strlen30(const char *z){
** should be called with err_code set to SQLITE_OK and zFormat set
** to NULL.
*/
-SQLITE_PRIVATE void sqlite3Error(sqlite3 *db, int err_code, const char *zFormat, ...){
+SQLITE_PRIVATE void sqlite3ErrorWithMsg(sqlite3 *db, int err_code, const char *zFormat, ...){
assert( db!=0 );
db->errCode = err_code;
- if( zFormat && (db->pErr || (db->pErr = sqlite3ValueNew(db))!=0) ){
+ if( zFormat==0 ){
+ sqlite3Error(db, err_code);
+ }else if( db->pErr || (db->pErr = sqlite3ValueNew(db))!=0 ){
char *z;
va_list ap;
va_start(ap, zFormat);
z = sqlite3VMPrintf(db, zFormat, ap);
va_end(ap);
sqlite3ValueSetStr(db->pErr, -1, z, SQLITE_UTF8, SQLITE_DYNAMIC);
- }else if( db->pErr ){
- sqlite3ValueSetNull(db->pErr);
}
}
@@ -22398,12 +23303,12 @@ SQLITE_PRIVATE void sqlite3Error(sqlite3 *db, int err_code, const char *zFormat,
** %T Insert a token
** %S Insert the first element of a SrcList
**
-** This function should be used to report any error that occurs whilst
+** This function should be used to report any error that occurs while
** compiling an SQL statement (i.e. within sqlite3_prepare()). The
** last thing the sqlite3_prepare() function does is copy the error
** stored by this function into the database handle using sqlite3Error().
-** Function sqlite3Error() should be used during statement execution
-** (sqlite3_step() etc.).
+** Functions sqlite3Error() or sqlite3ErrorWithMsg() should be used
+** during statement execution (sqlite3_step() etc.).
*/
SQLITE_PRIVATE void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){
char *zMsg;
@@ -22436,7 +23341,7 @@ SQLITE_PRIVATE void sqlite3ErrorMsg(Parse *pParse, const char *zFormat, ...){
** occur.
**
** 2002-Feb-14: This routine is extended to remove MS-Access style
-** brackets from around identifers. For example: "[a-b-c]" becomes
+** brackets from around identifiers. For example: "[a-b-c]" becomes
** "a-b-c".
*/
SQLITE_PRIVATE int sqlite3Dequote(char *z){
@@ -22483,6 +23388,11 @@ SQLITE_PRIVATE int sqlite3Dequote(char *z){
*/
SQLITE_API int sqlite3_stricmp(const char *zLeft, const char *zRight){
register unsigned char *a, *b;
+ if( zLeft==0 ){
+ return zRight ? -1 : 0;
+ }else if( zRight==0 ){
+ return 1;
+ }
a = (unsigned char *)zLeft;
b = (unsigned char *)zRight;
while( *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; }
@@ -22490,6 +23400,11 @@ SQLITE_API int sqlite3_stricmp(const char *zLeft, const char *zRight){
}
SQLITE_API int sqlite3_strnicmp(const char *zLeft, const char *zRight, int N){
register unsigned char *a, *b;
+ if( zLeft==0 ){
+ return zRight ? -1 : 0;
+ }else if( zRight==0 ){
+ return 1;
+ }
a = (unsigned char *)zLeft;
b = (unsigned char *)zRight;
while( N-- > 0 && *a!=0 && UpperToLower[*a]==UpperToLower[*b]){ a++; b++; }
@@ -22940,7 +23855,7 @@ SQLITE_PRIVATE int sqlite3Atoi(const char *z){
** bit clear. Except, if we get to the 9th byte, it stores the full
** 8 bits and is the last byte.
*/
-SQLITE_PRIVATE int sqlite3PutVarint(unsigned char *p, u64 v){
+static int SQLITE_NOINLINE putVarint64(unsigned char *p, u64 v){
int i, j, n;
u8 buf[10];
if( v & (((u64)0xff000000)<<32) ){
@@ -22964,28 +23879,17 @@ SQLITE_PRIVATE int sqlite3PutVarint(unsigned char *p, u64 v){
}
return n;
}
-
-/*
-** This routine is a faster version of sqlite3PutVarint() that only
-** works for 32-bit positive integers and which is optimized for
-** the common case of small integers. A MACRO version, putVarint32,
-** is provided which inlines the single-byte case. All code should use
-** the MACRO version as this function assumes the single-byte case has
-** already been handled.
-*/
-SQLITE_PRIVATE int sqlite3PutVarint32(unsigned char *p, u32 v){
-#ifndef putVarint32
- if( (v & ~0x7f)==0 ){
- p[0] = v;
+SQLITE_PRIVATE int sqlite3PutVarint(unsigned char *p, u64 v){
+ if( v<=0x7f ){
+ p[0] = v&0x7f;
return 1;
}
-#endif
- if( (v & ~0x3fff)==0 ){
- p[0] = (u8)((v>>7) | 0x80);
- p[1] = (u8)(v & 0x7f);
+ if( v<=0x3fff ){
+ p[0] = ((v>>7)&0x7f)|0x80;
+ p[1] = v&0x7f;
return 2;
}
- return sqlite3PutVarint(p, v);
+ return putVarint64(p,v);
}
/*
@@ -23661,12 +24565,11 @@ SQLITE_PRIVATE void sqlite3HashClear(Hash *pH){
/*
** The hashing function.
*/
-static unsigned int strHash(const char *z, int nKey){
+static unsigned int strHash(const char *z){
unsigned int h = 0;
- assert( nKey>=0 );
- while( nKey > 0 ){
- h = (h<<3) ^ h ^ sqlite3UpperToLower[(unsigned char)*z++];
- nKey--;
+ unsigned char c;
+ while( (c = (unsigned char)*z++)!=0 ){
+ h = (h<<3) ^ h ^ sqlite3UpperToLower[c];
}
return h;
}
@@ -23738,7 +24641,7 @@ static int rehash(Hash *pH, unsigned int new_size){
pH->htsize = new_size = sqlite3MallocSize(new_ht)/sizeof(struct _ht);
memset(new_ht, 0, new_size*sizeof(struct _ht));
for(elem=pH->first, pH->first=0; elem; elem = next_elem){
- unsigned int h = strHash(elem->pKey, elem->nKey) % new_size;
+ unsigned int h = strHash(elem->pKey) % new_size;
next_elem = elem->next;
insertElement(pH, &new_ht[h], elem);
}
@@ -23746,28 +24649,33 @@ static int rehash(Hash *pH, unsigned int new_size){
}
/* This function (for internal use only) locates an element in an
-** hash table that matches the given key. The hash for this key has
-** already been computed and is passed as the 4th parameter.
+** hash table that matches the given key. The hash for this key is
+** also computed and returned in the *pH parameter.
*/
-static HashElem *findElementGivenHash(
+static HashElem *findElementWithHash(
const Hash *pH, /* The pH to be searched */
const char *pKey, /* The key we are searching for */
- int nKey, /* Bytes in key (not counting zero terminator) */
- unsigned int h /* The hash for this key. */
+ unsigned int *pHash /* Write the hash value here */
){
HashElem *elem; /* Used to loop thru the element list */
int count; /* Number of elements left to test */
+ unsigned int h; /* The computed hash */
if( pH->ht ){
- struct _ht *pEntry = &pH->ht[h];
+ struct _ht *pEntry;
+ h = strHash(pKey) % pH->htsize;
+ pEntry = &pH->ht[h];
elem = pEntry->chain;
count = pEntry->count;
}else{
+ h = 0;
elem = pH->first;
count = pH->count;
}
- while( count-- && ALWAYS(elem) ){
- if( elem->nKey==nKey && sqlite3StrNICmp(elem->pKey,pKey,nKey)==0 ){
+ *pHash = h;
+ while( count-- ){
+ assert( elem!=0 );
+ if( sqlite3StrICmp(elem->pKey,pKey)==0 ){
return elem;
}
elem = elem->next;
@@ -23810,26 +24718,20 @@ static void removeElementGivenHash(
}
/* Attempt to locate an element of the hash table pH with a key
-** that matches pKey,nKey. Return the data for this element if it is
+** that matches pKey. Return the data for this element if it is
** found, or NULL if there is no match.
*/
-SQLITE_PRIVATE void *sqlite3HashFind(const Hash *pH, const char *pKey, int nKey){
+SQLITE_PRIVATE void *sqlite3HashFind(const Hash *pH, const char *pKey){
HashElem *elem; /* The element that matches key */
unsigned int h; /* A hash on key */
assert( pH!=0 );
assert( pKey!=0 );
- assert( nKey>=0 );
- if( pH->ht ){
- h = strHash(pKey, nKey) % pH->htsize;
- }else{
- h = 0;
- }
- elem = findElementGivenHash(pH, pKey, nKey, h);
+ elem = findElementWithHash(pH, pKey, &h);
return elem ? elem->data : 0;
}
-/* Insert an element into the hash table pH. The key is pKey,nKey
+/* Insert an element into the hash table pH. The key is pKey
** and the data is "data".
**
** If no element exists with a matching key, then a new
@@ -23843,20 +24745,14 @@ SQLITE_PRIVATE void *sqlite3HashFind(const Hash *pH, const char *pKey, int nKey)
** If the "data" parameter to this function is NULL, then the
** element corresponding to "key" is removed from the hash table.
*/
-SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, int nKey, void *data){
+SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, void *data){
unsigned int h; /* the hash of the key modulo hash table size */
HashElem *elem; /* Used to loop thru the element list */
HashElem *new_elem; /* New element added to the pH */
assert( pH!=0 );
assert( pKey!=0 );
- assert( nKey>=0 );
- if( pH->htsize ){
- h = strHash(pKey, nKey) % pH->htsize;
- }else{
- h = 0;
- }
- elem = findElementGivenHash(pH,pKey,nKey,h);
+ elem = findElementWithHash(pH,pKey,&h);
if( elem ){
void *old_data = elem->data;
if( data==0 ){
@@ -23864,7 +24760,6 @@ SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, int nKey, voi
}else{
elem->data = data;
elem->pKey = pKey;
- assert(nKey==elem->nKey);
}
return old_data;
}
@@ -23872,20 +24767,15 @@ SQLITE_PRIVATE void *sqlite3HashInsert(Hash *pH, const char *pKey, int nKey, voi
new_elem = (HashElem*)sqlite3Malloc( sizeof(HashElem) );
if( new_elem==0 ) return data;
new_elem->pKey = pKey;
- new_elem->nKey = nKey;
new_elem->data = data;
pH->count++;
if( pH->count>=10 && pH->count > 2*pH->htsize ){
if( rehash(pH, pH->count*2) ){
assert( pH->htsize>0 );
- h = strHash(pKey, nKey) % pH->htsize;
+ h = strHash(pKey) % pH->htsize;
}
}
- if( pH->ht ){
- insertElement(pH, &pH->ht[h], new_elem);
- }else{
- insertElement(pH, 0, new_elem);
- }
+ insertElement(pH, pH->ht ? &pH->ht[h] : 0, new_elem);
return 0;
}
@@ -23940,42 +24830,42 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 37 */ "AddImm" OpHelp("r[P1]=r[P1]+P2"),
/* 38 */ "MustBeInt" OpHelp(""),
/* 39 */ "RealAffinity" OpHelp(""),
- /* 40 */ "Permutation" OpHelp(""),
- /* 41 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
- /* 42 */ "Jump" OpHelp(""),
- /* 43 */ "Once" OpHelp(""),
- /* 44 */ "If" OpHelp(""),
- /* 45 */ "IfNot" OpHelp(""),
- /* 46 */ "Column" OpHelp("r[P3]=PX"),
- /* 47 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
- /* 48 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
- /* 49 */ "Count" OpHelp("r[P2]=count()"),
- /* 50 */ "ReadCookie" OpHelp(""),
- /* 51 */ "SetCookie" OpHelp(""),
- /* 52 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
- /* 53 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
- /* 54 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
- /* 55 */ "OpenAutoindex" OpHelp("nColumn=P2"),
- /* 56 */ "OpenEphemeral" OpHelp("nColumn=P2"),
- /* 57 */ "SorterOpen" OpHelp(""),
- /* 58 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
- /* 59 */ "Close" OpHelp(""),
- /* 60 */ "SeekLT" OpHelp("key=r[P3@P4]"),
- /* 61 */ "SeekLE" OpHelp("key=r[P3@P4]"),
- /* 62 */ "SeekGE" OpHelp("key=r[P3@P4]"),
- /* 63 */ "SeekGT" OpHelp("key=r[P3@P4]"),
- /* 64 */ "Seek" OpHelp("intkey=r[P2]"),
- /* 65 */ "NoConflict" OpHelp("key=r[P3@P4]"),
- /* 66 */ "NotFound" OpHelp("key=r[P3@P4]"),
- /* 67 */ "Found" OpHelp("key=r[P3@P4]"),
- /* 68 */ "NotExists" OpHelp("intkey=r[P3]"),
- /* 69 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
- /* 70 */ "NewRowid" OpHelp("r[P2]=rowid"),
+ /* 40 */ "Cast" OpHelp("affinity(r[P1])"),
+ /* 41 */ "Permutation" OpHelp(""),
+ /* 42 */ "Compare" OpHelp("r[P1@P3] <-> r[P2@P3]"),
+ /* 43 */ "Jump" OpHelp(""),
+ /* 44 */ "Once" OpHelp(""),
+ /* 45 */ "If" OpHelp(""),
+ /* 46 */ "IfNot" OpHelp(""),
+ /* 47 */ "Column" OpHelp("r[P3]=PX"),
+ /* 48 */ "Affinity" OpHelp("affinity(r[P1@P2])"),
+ /* 49 */ "MakeRecord" OpHelp("r[P3]=mkrec(r[P1@P2])"),
+ /* 50 */ "Count" OpHelp("r[P2]=count()"),
+ /* 51 */ "ReadCookie" OpHelp(""),
+ /* 52 */ "SetCookie" OpHelp(""),
+ /* 53 */ "ReopenIdx" OpHelp("root=P2 iDb=P3"),
+ /* 54 */ "OpenRead" OpHelp("root=P2 iDb=P3"),
+ /* 55 */ "OpenWrite" OpHelp("root=P2 iDb=P3"),
+ /* 56 */ "OpenAutoindex" OpHelp("nColumn=P2"),
+ /* 57 */ "OpenEphemeral" OpHelp("nColumn=P2"),
+ /* 58 */ "SorterOpen" OpHelp(""),
+ /* 59 */ "SequenceTest" OpHelp("if( cursor[P1].ctr++ ) pc = P2"),
+ /* 60 */ "OpenPseudo" OpHelp("P3 columns in r[P2]"),
+ /* 61 */ "Close" OpHelp(""),
+ /* 62 */ "SeekLT" OpHelp("key=r[P3@P4]"),
+ /* 63 */ "SeekLE" OpHelp("key=r[P3@P4]"),
+ /* 64 */ "SeekGE" OpHelp("key=r[P3@P4]"),
+ /* 65 */ "SeekGT" OpHelp("key=r[P3@P4]"),
+ /* 66 */ "Seek" OpHelp("intkey=r[P2]"),
+ /* 67 */ "NoConflict" OpHelp("key=r[P3@P4]"),
+ /* 68 */ "NotFound" OpHelp("key=r[P3@P4]"),
+ /* 69 */ "Found" OpHelp("key=r[P3@P4]"),
+ /* 70 */ "NotExists" OpHelp("intkey=r[P3]"),
/* 71 */ "Or" OpHelp("r[P3]=(r[P1] || r[P2])"),
/* 72 */ "And" OpHelp("r[P3]=(r[P1] && r[P2])"),
- /* 73 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
- /* 74 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
- /* 75 */ "Delete" OpHelp(""),
+ /* 73 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
+ /* 74 */ "NewRowid" OpHelp("r[P2]=rowid"),
+ /* 75 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
/* 76 */ "IsNull" OpHelp("if r[P1]==NULL goto P2"),
/* 77 */ "NotNull" OpHelp("if r[P1]!=NULL goto P2"),
/* 78 */ "Ne" OpHelp("if r[P1]!=r[P3] goto P2"),
@@ -23984,7 +24874,7 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 81 */ "Le" OpHelp("if r[P1]<=r[P3] goto P2"),
/* 82 */ "Lt" OpHelp("if r[P1]<r[P3] goto P2"),
/* 83 */ "Ge" OpHelp("if r[P1]>=r[P3] goto P2"),
- /* 84 */ "ResetCount" OpHelp(""),
+ /* 84 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
/* 85 */ "BitAnd" OpHelp("r[P3]=r[P1]&r[P2]"),
/* 86 */ "BitOr" OpHelp("r[P3]=r[P1]|r[P2]"),
/* 87 */ "ShiftLeft" OpHelp("r[P3]=r[P2]<<r[P1]"),
@@ -23995,70 +24885,67 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
/* 92 */ "Divide" OpHelp("r[P3]=r[P2]/r[P1]"),
/* 93 */ "Remainder" OpHelp("r[P3]=r[P2]%r[P1]"),
/* 94 */ "Concat" OpHelp("r[P3]=r[P2]+r[P1]"),
- /* 95 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
+ /* 95 */ "Delete" OpHelp(""),
/* 96 */ "BitNot" OpHelp("r[P1]= ~r[P1]"),
/* 97 */ "String8" OpHelp("r[P2]='P4'"),
- /* 98 */ "SorterData" OpHelp("r[P2]=data"),
- /* 99 */ "RowKey" OpHelp("r[P2]=key"),
- /* 100 */ "RowData" OpHelp("r[P2]=data"),
- /* 101 */ "Rowid" OpHelp("r[P2]=rowid"),
- /* 102 */ "NullRow" OpHelp(""),
- /* 103 */ "Last" OpHelp(""),
- /* 104 */ "SorterSort" OpHelp(""),
- /* 105 */ "Sort" OpHelp(""),
- /* 106 */ "Rewind" OpHelp(""),
- /* 107 */ "SorterInsert" OpHelp(""),
- /* 108 */ "IdxInsert" OpHelp("key=r[P2]"),
- /* 109 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
- /* 110 */ "IdxRowid" OpHelp("r[P2]=rowid"),
- /* 111 */ "IdxLE" OpHelp("key=r[P3@P4]"),
- /* 112 */ "IdxGT" OpHelp("key=r[P3@P4]"),
- /* 113 */ "IdxLT" OpHelp("key=r[P3@P4]"),
- /* 114 */ "IdxGE" OpHelp("key=r[P3@P4]"),
- /* 115 */ "Destroy" OpHelp(""),
- /* 116 */ "Clear" OpHelp(""),
- /* 117 */ "ResetSorter" OpHelp(""),
- /* 118 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
- /* 119 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
- /* 120 */ "ParseSchema" OpHelp(""),
- /* 121 */ "LoadAnalysis" OpHelp(""),
- /* 122 */ "DropTable" OpHelp(""),
- /* 123 */ "DropIndex" OpHelp(""),
- /* 124 */ "DropTrigger" OpHelp(""),
- /* 125 */ "IntegrityCk" OpHelp(""),
- /* 126 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
- /* 127 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
- /* 128 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
- /* 129 */ "Program" OpHelp(""),
- /* 130 */ "Param" OpHelp(""),
- /* 131 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
- /* 132 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
+ /* 98 */ "ResetCount" OpHelp(""),
+ /* 99 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
+ /* 100 */ "SorterData" OpHelp("r[P2]=data"),
+ /* 101 */ "RowKey" OpHelp("r[P2]=key"),
+ /* 102 */ "RowData" OpHelp("r[P2]=data"),
+ /* 103 */ "Rowid" OpHelp("r[P2]=rowid"),
+ /* 104 */ "NullRow" OpHelp(""),
+ /* 105 */ "Last" OpHelp(""),
+ /* 106 */ "SorterSort" OpHelp(""),
+ /* 107 */ "Sort" OpHelp(""),
+ /* 108 */ "Rewind" OpHelp(""),
+ /* 109 */ "SorterInsert" OpHelp(""),
+ /* 110 */ "IdxInsert" OpHelp("key=r[P2]"),
+ /* 111 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
+ /* 112 */ "IdxRowid" OpHelp("r[P2]=rowid"),
+ /* 113 */ "IdxLE" OpHelp("key=r[P3@P4]"),
+ /* 114 */ "IdxGT" OpHelp("key=r[P3@P4]"),
+ /* 115 */ "IdxLT" OpHelp("key=r[P3@P4]"),
+ /* 116 */ "IdxGE" OpHelp("key=r[P3@P4]"),
+ /* 117 */ "Destroy" OpHelp(""),
+ /* 118 */ "Clear" OpHelp(""),
+ /* 119 */ "ResetSorter" OpHelp(""),
+ /* 120 */ "CreateIndex" OpHelp("r[P2]=root iDb=P1"),
+ /* 121 */ "CreateTable" OpHelp("r[P2]=root iDb=P1"),
+ /* 122 */ "ParseSchema" OpHelp(""),
+ /* 123 */ "LoadAnalysis" OpHelp(""),
+ /* 124 */ "DropTable" OpHelp(""),
+ /* 125 */ "DropIndex" OpHelp(""),
+ /* 126 */ "DropTrigger" OpHelp(""),
+ /* 127 */ "IntegrityCk" OpHelp(""),
+ /* 128 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
+ /* 129 */ "RowSetRead" OpHelp("r[P3]=rowset(P1)"),
+ /* 130 */ "RowSetTest" OpHelp("if r[P3] in rowset(P1) goto P2"),
+ /* 131 */ "Program" OpHelp(""),
+ /* 132 */ "Param" OpHelp(""),
/* 133 */ "Real" OpHelp("r[P2]=P4"),
- /* 134 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
- /* 135 */ "IfPos" OpHelp("if r[P1]>0 goto P2"),
- /* 136 */ "IfNeg" OpHelp("r[P1]+=P3, if r[P1]<0 goto P2"),
- /* 137 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"),
- /* 138 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
- /* 139 */ "IncrVacuum" OpHelp(""),
- /* 140 */ "Expire" OpHelp(""),
- /* 141 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
- /* 142 */ "VBegin" OpHelp(""),
- /* 143 */ "ToText" OpHelp(""),
- /* 144 */ "ToBlob" OpHelp(""),
- /* 145 */ "ToNumeric" OpHelp(""),
- /* 146 */ "ToInt" OpHelp(""),
- /* 147 */ "ToReal" OpHelp(""),
- /* 148 */ "VCreate" OpHelp(""),
- /* 149 */ "VDestroy" OpHelp(""),
- /* 150 */ "VOpen" OpHelp(""),
- /* 151 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
- /* 152 */ "VNext" OpHelp(""),
- /* 153 */ "VRename" OpHelp(""),
- /* 154 */ "Pagecount" OpHelp(""),
- /* 155 */ "MaxPgcnt" OpHelp(""),
- /* 156 */ "Init" OpHelp("Start at P2"),
- /* 157 */ "Noop" OpHelp(""),
- /* 158 */ "Explain" OpHelp(""),
+ /* 134 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
+ /* 135 */ "FkIfZero" OpHelp("if fkctr[P1]==0 goto P2"),
+ /* 136 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
+ /* 137 */ "IfPos" OpHelp("if r[P1]>0 goto P2"),
+ /* 138 */ "IfNeg" OpHelp("r[P1]+=P3, if r[P1]<0 goto P2"),
+ /* 139 */ "IfZero" OpHelp("r[P1]+=P3, if r[P1]==0 goto P2"),
+ /* 140 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
+ /* 141 */ "IncrVacuum" OpHelp(""),
+ /* 142 */ "Expire" OpHelp(""),
+ /* 143 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
+ /* 144 */ "VBegin" OpHelp(""),
+ /* 145 */ "VCreate" OpHelp(""),
+ /* 146 */ "VDestroy" OpHelp(""),
+ /* 147 */ "VOpen" OpHelp(""),
+ /* 148 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
+ /* 149 */ "VNext" OpHelp(""),
+ /* 150 */ "VRename" OpHelp(""),
+ /* 151 */ "Pagecount" OpHelp(""),
+ /* 152 */ "MaxPgcnt" OpHelp(""),
+ /* 153 */ "Init" OpHelp("Start at P2"),
+ /* 154 */ "Noop" OpHelp(""),
+ /* 155 */ "Explain" OpHelp(""),
};
return azName[i];
}
@@ -24575,6 +25462,14 @@ SQLITE_API int sqlite3_open_file_count = 0;
#endif
/*
+** Explicitly call the 64-bit version of lseek() on Android. Otherwise, lseek()
+** is the 32-bit version, even if _FILE_OFFSET_BITS=64 is defined.
+*/
+#ifdef __ANDROID__
+# define lseek lseek64
+#endif
+
+/*
** Different Unix systems declare open() in different ways. Same use
** open(const char*,int,mode_t). Others use open(const char*,int,...).
** The difference is important when using a pointer to the function.
@@ -24906,7 +25801,7 @@ static int unixMutexHeld(void) {
#if defined(SQLITE_TEST) && defined(SQLITE_DEBUG)
/*
** Helper function for printing out trace information from debugging
-** binaries. This returns the string represetation of the supplied
+** binaries. This returns the string representation of the supplied
** integer lock-type.
*/
static const char *azFileLock(int eFileLock){
@@ -24983,9 +25878,22 @@ static int lockTrace(int fd, int op, struct flock *p){
/*
** Retry ftruncate() calls that fail due to EINTR
+**
+** All calls to ftruncate() within this file should be made through this wrapper.
+** On the Android platform, bypassing the logic below could lead to a corrupt
+** database.
*/
static int robust_ftruncate(int h, sqlite3_int64 sz){
int rc;
+#ifdef __ANDROID__
+ /* On Android, ftruncate() always uses 32-bit offsets, even if
+ ** _FILE_OFFSET_BITS=64 is defined. This means it is unsafe to attempt to
+ ** truncate a file to any size larger than 2GiB. Silently ignore any
+ ** such attempts. */
+ if( sz>(sqlite3_int64)0x7FFFFFFF ){
+ rc = SQLITE_OK;
+ }else
+#endif
do{ rc = osFtruncate(h,sz); }while( rc<0 && errno==EINTR );
return rc;
}
@@ -27373,7 +28281,7 @@ static int nfsUnlock(sqlite3_file *id, int eFileLock){
** NB: If you define USE_PREAD or USE_PREAD64, then it might also
** be necessary to define _XOPEN_SOURCE to be 500. This varies from
** one system to another. Since SQLite does not define USE_PREAD
-** any any form by default, we will not attempt to define _XOPEN_SOURCE.
+** in any form by default, we will not attempt to define _XOPEN_SOURCE.
** See tickets #2741 and #2681.
**
** To avoid stomping the errno value on a failed read the lastErrno value
@@ -27640,9 +28548,9 @@ SQLITE_API int sqlite3_fullsync_count = 0;
** We do not trust systems to provide a working fdatasync(). Some do.
** Others do no. To be safe, we will stick with the (slightly slower)
** fsync(). If you know that your system does support fdatasync() correctly,
-** then simply compile with -Dfdatasync=fdatasync
+** then simply compile with -Dfdatasync=fdatasync or -DHAVE_FDATASYNC
*/
-#if !defined(fdatasync)
+#if !defined(fdatasync) && !HAVE_FDATASYNC
# define fdatasync fsync
#endif
@@ -27870,7 +28778,7 @@ static int unixTruncate(sqlite3_file *id, i64 nByte){
nByte = ((nByte + pFile->szChunk - 1)/pFile->szChunk) * pFile->szChunk;
}
- rc = robust_ftruncate(pFile->h, (off_t)nByte);
+ rc = robust_ftruncate(pFile->h, nByte);
if( rc ){
pFile->lastErrno = errno;
return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
@@ -27963,24 +28871,28 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
}while( err==EINTR );
if( err ) return SQLITE_IOERR_WRITE;
#else
- /* If the OS does not have posix_fallocate(), fake it. First use
- ** ftruncate() to set the file size, then write a single byte to
- ** the last byte in each block within the extended region. This
- ** is the same technique used by glibc to implement posix_fallocate()
- ** on systems that do not have a real fallocate() system call.
+ /* If the OS does not have posix_fallocate(), fake it. Write a
+ ** single byte to the last byte in each block that falls entirely
+ ** within the extended region. Then, if required, a single byte
+ ** at offset (nSize-1), to set the size of the file correctly.
+ ** This is a similar technique to that used by glibc on systems
+ ** that do not have a real fallocate() call.
*/
int nBlk = buf.st_blksize; /* File-system block size */
+ int nWrite = 0; /* Number of bytes written by seekAndWrite */
i64 iWrite; /* Next offset to write to */
- if( robust_ftruncate(pFile->h, nSize) ){
- pFile->lastErrno = errno;
- return unixLogError(SQLITE_IOERR_TRUNCATE, "ftruncate", pFile->zPath);
- }
iWrite = ((buf.st_size + 2*nBlk - 1)/nBlk)*nBlk-1;
- while( iWrite<nSize ){
- int nWrite = seekAndWrite(pFile, iWrite, "", 1);
+ assert( iWrite>=buf.st_size );
+ assert( (iWrite/nBlk)==((buf.st_size+nBlk-1)/nBlk) );
+ assert( ((iWrite+1)%nBlk)==0 );
+ for(/*no-op*/; iWrite<nSize; iWrite+=nBlk ){
+ nWrite = seekAndWrite(pFile, iWrite, "", 1);
+ if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
+ }
+ if( nWrite==0 || (nSize%nBlk) ){
+ nWrite = seekAndWrite(pFile, nSize-1, "", 1);
if( nWrite!=1 ) return SQLITE_IOERR_WRITE;
- iWrite += nBlk;
}
#endif
}
@@ -28005,7 +28917,7 @@ static int fcntlSizeHint(unixFile *pFile, i64 nByte){
}
/*
-** If *pArg is inititially negative then this is a query. Set *pArg to
+** If *pArg is initially negative then this is a query. Set *pArg to
** 1 or 0 depending on whether or not bit mask of pFile->ctrlFlags is set.
**
** If *pArg is 0 or 1, then clear or set the mask bit of pFile->ctrlFlags.
@@ -28212,7 +29124,7 @@ static int unixSectorSize(sqlite3_file *id){
** Return the device characteristics for the file.
**
** This VFS is set up to return SQLITE_IOCAP_POWERSAFE_OVERWRITE by default.
-** However, that choice is contraversial since technically the underlying
+** However, that choice is controversial since technically the underlying
** file system does not always provide powersafe overwrites. (In other
** words, after a power-loss event, parts of the file that were never
** written might end up being altered.) However, non-PSOW behavior is very,
@@ -29184,7 +30096,7 @@ static int unixUnfetch(sqlite3_file *fd, i64 iOff, void *p){
** looks at the filesystem type and tries to guess the best locking
** strategy from that.
**
-** For finder-funtion F, two objects are created:
+** For finder-function F, two objects are created:
**
** (1) The real finder-function named "FImpt()".
**
@@ -29205,7 +30117,7 @@ static int unixUnfetch(sqlite3_file *fd, i64 iOff, void *p){
** * An I/O method finder function called FINDER that returns a pointer
** to the METHOD object in the previous bullet.
*/
-#define IOMETHODS(FINDER, METHOD, VERSION, CLOSE, LOCK, UNLOCK, CKLOCK) \
+#define IOMETHODS(FINDER, METHOD, VERSION, CLOSE, LOCK, UNLOCK, CKLOCK, SHMMAP) \
static const sqlite3_io_methods METHOD = { \
VERSION, /* iVersion */ \
CLOSE, /* xClose */ \
@@ -29220,7 +30132,7 @@ static const sqlite3_io_methods METHOD = { \
unixFileControl, /* xFileControl */ \
unixSectorSize, /* xSectorSize */ \
unixDeviceCharacteristics, /* xDeviceCapabilities */ \
- unixShmMap, /* xShmMap */ \
+ SHMMAP, /* xShmMap */ \
unixShmLock, /* xShmLock */ \
unixShmBarrier, /* xShmBarrier */ \
unixShmUnmap, /* xShmUnmap */ \
@@ -29246,16 +30158,18 @@ IOMETHODS(
unixClose, /* xClose method */
unixLock, /* xLock method */
unixUnlock, /* xUnlock method */
- unixCheckReservedLock /* xCheckReservedLock method */
+ unixCheckReservedLock, /* xCheckReservedLock method */
+ unixShmMap /* xShmMap method */
)
IOMETHODS(
nolockIoFinder, /* Finder function name */
nolockIoMethods, /* sqlite3_io_methods object name */
- 1, /* shared memory is disabled */
+ 3, /* shared memory is disabled */
nolockClose, /* xClose method */
nolockLock, /* xLock method */
nolockUnlock, /* xUnlock method */
- nolockCheckReservedLock /* xCheckReservedLock method */
+ nolockCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
IOMETHODS(
dotlockIoFinder, /* Finder function name */
@@ -29264,7 +30178,8 @@ IOMETHODS(
dotlockClose, /* xClose method */
dotlockLock, /* xLock method */
dotlockUnlock, /* xUnlock method */
- dotlockCheckReservedLock /* xCheckReservedLock method */
+ dotlockCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#if SQLITE_ENABLE_LOCKING_STYLE && !OS_VXWORKS
@@ -29275,7 +30190,8 @@ IOMETHODS(
flockClose, /* xClose method */
flockLock, /* xLock method */
flockUnlock, /* xUnlock method */
- flockCheckReservedLock /* xCheckReservedLock method */
+ flockCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#endif
@@ -29287,7 +30203,8 @@ IOMETHODS(
semClose, /* xClose method */
semLock, /* xLock method */
semUnlock, /* xUnlock method */
- semCheckReservedLock /* xCheckReservedLock method */
+ semCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#endif
@@ -29299,7 +30216,8 @@ IOMETHODS(
afpClose, /* xClose method */
afpLock, /* xLock method */
afpUnlock, /* xUnlock method */
- afpCheckReservedLock /* xCheckReservedLock method */
+ afpCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#endif
@@ -29324,7 +30242,8 @@ IOMETHODS(
proxyClose, /* xClose method */
proxyLock, /* xLock method */
proxyUnlock, /* xUnlock method */
- proxyCheckReservedLock /* xCheckReservedLock method */
+ proxyCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#endif
@@ -29337,7 +30256,8 @@ IOMETHODS(
unixClose, /* xClose method */
unixLock, /* xLock method */
nfsUnlock, /* xUnlock method */
- unixCheckReservedLock /* xCheckReservedLock method */
+ unixCheckReservedLock, /* xCheckReservedLock method */
+ 0 /* xShmMap method */
)
#endif
@@ -29446,7 +30366,7 @@ static const sqlite3_io_methods
#endif /* OS_VXWORKS && SQLITE_ENABLE_LOCKING_STYLE */
/*
-** An abstract type for a pointer to a IO method finder function:
+** An abstract type for a pointer to an IO method finder function:
*/
typedef const sqlite3_io_methods *(*finder_type)(const char*,unixFile*);
@@ -29760,7 +30680,7 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
** descriptor on the same path, fail, and return an error to SQLite.
**
** Even if a subsequent open() call does succeed, the consequences of
- ** not searching for a resusable file descriptor are not dire. */
+ ** not searching for a reusable file descriptor are not dire. */
if( 0==osStat(zPath, &sStat) ){
unixInodeInfo *pInode;
@@ -29791,7 +30711,7 @@ static UnixUnusedFd *findReusableFd(const char *zPath, int flags){
** written to *pMode. If an IO error occurs, an SQLite error code is
** returned and the value of *pMode is not modified.
**
-** In most cases cases, this routine sets *pMode to 0, which will become
+** In most cases, this routine sets *pMode to 0, which will become
** an indication to robust_open() to create the file using
** SQLITE_DEFAULT_FILE_PERMISSIONS adjusted by the umask.
** But if the file being opened is a WAL or regular journal file, then
@@ -30160,7 +31080,7 @@ static int unixDelete(
if( osUnlink(zPath)==(-1) ){
if( errno==ENOENT
#if OS_VXWORKS
- || errno==0x380003
+ || osAccess(zPath,0)!=0
#endif
){
rc = SQLITE_IOERR_DELETE_NOENT;
@@ -30583,7 +31503,7 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
** proxy path against the values stored in the conch. The conch file is
** stored in the same directory as the database file and the file name
** is patterned after the database file name as ".<databasename>-conch".
-** If the conch file does not exist, or it's contents do not match the
+** If the conch file does not exist, or its contents do not match the
** host ID and/or proxy path, then the lock is escalated to an exclusive
** lock and the conch file contents is updated with the host ID and proxy
** path and the lock is downgraded to a shared lock again. If the conch
@@ -30635,7 +31555,7 @@ static int unixGetLastError(sqlite3_vfs *NotUsed, int NotUsed2, char *NotUsed3){
** setting the environment variable SQLITE_FORCE_PROXY_LOCKING to 1 will
** force proxy locking to be used for every database file opened, and 0
** will force automatic proxy locking to be disabled for all database
-** files (explicity calling the SQLITE_SET_LOCKPROXYFILE pragma or
+** files (explicitly calling the SQLITE_SET_LOCKPROXYFILE pragma or
** sqlite_file_control API is not affected by SQLITE_FORCE_PROXY_LOCKING).
*/
@@ -32021,6 +32941,11 @@ SQLITE_API int sqlite3_open_file_count = 0;
with SQLITE_OMIT_WAL."
#endif
+#if !SQLITE_OS_WINNT && SQLITE_MAX_MMAP_SIZE>0
+# error "Memory mapped files require support from the Windows NT kernel,\
+ compile with SQLITE_MAX_MMAP_SIZE=0."
+#endif
+
/*
** Are most of the Win32 ANSI APIs available (i.e. with certain exceptions
** based on the sub-platform)?
@@ -32150,10 +33075,11 @@ SQLITE_API int sqlite3_open_file_count = 0;
/*
** Do we need to manually define the Win32 file mapping APIs for use with WAL
-** mode (e.g. these APIs are available in the Windows CE SDK; however, they
-** are not present in the header file)?
+** mode or memory mapped files (e.g. these APIs are available in the Windows
+** CE SDK; however, they are not present in the header file)?
*/
-#if SQLITE_WIN32_FILEMAPPING_API && !defined(SQLITE_OMIT_WAL)
+#if SQLITE_WIN32_FILEMAPPING_API && \
+ (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
/*
** Two of the file mapping APIs are different under WinRT. Figure out which
** set we need.
@@ -32181,7 +33107,7 @@ WINBASEAPI LPVOID WINAPI MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, SIZE_T);
** This file mapping API is common to both Win32 and WinRT.
*/
WINBASEAPI BOOL WINAPI UnmapViewOfFile(LPCVOID);
-#endif /* SQLITE_WIN32_FILEMAPPING_API && !defined(SQLITE_OMIT_WAL) */
+#endif /* SQLITE_WIN32_FILEMAPPING_API */
/*
** Some Microsoft compilers lack this definition.
@@ -32397,9 +33323,9 @@ SQLITE_PRIVATE const sqlite3_mem_methods *sqlite3MemGetWin32(void);
** can manually set this value to 1 to emulate Win98 behavior.
*/
#ifdef SQLITE_TEST
-SQLITE_API LONG volatile sqlite3_os_type = 0;
+SQLITE_API LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0;
#else
-static LONG volatile sqlite3_os_type = 0;
+static LONG SQLITE_WIN32_VOLATILE sqlite3_os_type = 0;
#endif
#ifndef SYSCALL
@@ -32474,7 +33400,7 @@ static struct win_syscall {
LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE))aSyscall[5].pCurrent)
#if (!SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_ANSI) && \
- !defined(SQLITE_OMIT_WAL))
+ (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
{ "CreateFileMappingA", (SYSCALL)CreateFileMappingA, 0 },
#else
{ "CreateFileMappingA", (SYSCALL)0, 0 },
@@ -32484,7 +33410,7 @@ static struct win_syscall {
DWORD,DWORD,DWORD,LPCSTR))aSyscall[6].pCurrent)
#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
- !defined(SQLITE_OMIT_WAL))
+ (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
{ "CreateFileMappingW", (SYSCALL)CreateFileMappingW, 0 },
#else
{ "CreateFileMappingW", (SYSCALL)0, 0 },
@@ -32824,7 +33750,8 @@ static struct win_syscall {
LPOVERLAPPED))aSyscall[48].pCurrent)
#endif
-#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && !defined(SQLITE_OMIT_WAL))
+#if SQLITE_OS_WINCE || (!SQLITE_OS_WINRT && \
+ (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0))
{ "MapViewOfFile", (SYSCALL)MapViewOfFile, 0 },
#else
{ "MapViewOfFile", (SYSCALL)0, 0 },
@@ -32894,7 +33821,7 @@ static struct win_syscall {
#define osUnlockFileEx ((BOOL(WINAPI*)(HANDLE,DWORD,DWORD,DWORD, \
LPOVERLAPPED))aSyscall[58].pCurrent)
-#if SQLITE_OS_WINCE || !defined(SQLITE_OMIT_WAL)
+#if SQLITE_OS_WINCE || !defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0
{ "UnmapViewOfFile", (SYSCALL)UnmapViewOfFile, 0 },
#else
{ "UnmapViewOfFile", (SYSCALL)0, 0 },
@@ -32930,7 +33857,7 @@ static struct win_syscall {
#define osWaitForSingleObject ((DWORD(WINAPI*)(HANDLE, \
DWORD))aSyscall[63].pCurrent)
-#if SQLITE_OS_WINRT
+#if !SQLITE_OS_WINCE
{ "WaitForSingleObjectEx", (SYSCALL)WaitForSingleObjectEx, 0 },
#else
{ "WaitForSingleObjectEx", (SYSCALL)0, 0 },
@@ -32957,7 +33884,7 @@ static struct win_syscall {
#define osGetFileInformationByHandleEx ((BOOL(WINAPI*)(HANDLE, \
FILE_INFO_BY_HANDLE_CLASS,LPVOID,DWORD))aSyscall[66].pCurrent)
-#if SQLITE_OS_WINRT && !defined(SQLITE_OMIT_WAL)
+#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
{ "MapViewOfFileFromApp", (SYSCALL)MapViewOfFileFromApp, 0 },
#else
{ "MapViewOfFileFromApp", (SYSCALL)0, 0 },
@@ -33021,7 +33948,7 @@ static struct win_syscall {
#define osGetProcessHeap ((HANDLE(WINAPI*)(VOID))aSyscall[74].pCurrent)
-#if SQLITE_OS_WINRT && !defined(SQLITE_OMIT_WAL)
+#if SQLITE_OS_WINRT && (!defined(SQLITE_OMIT_WAL) || SQLITE_MAX_MMAP_SIZE>0)
{ "CreateFileMappingFromApp", (SYSCALL)CreateFileMappingFromApp, 0 },
#else
{ "CreateFileMappingFromApp", (SYSCALL)0, 0 },
@@ -33042,8 +33969,8 @@ static struct win_syscall {
#else
{ "InterlockedCompareExchange", (SYSCALL)InterlockedCompareExchange, 0 },
-#define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG volatile*, \
- LONG,LONG))aSyscall[76].pCurrent)
+#define osInterlockedCompareExchange ((LONG(WINAPI*)(LONG \
+ SQLITE_WIN32_VOLATILE*, LONG,LONG))aSyscall[76].pCurrent)
#endif /* defined(InterlockedCompareExchange) */
}; /* End of the overrideable system calls */
@@ -33183,8 +34110,8 @@ SQLITE_API int sqlite3_win32_reset_heap(){
int rc;
MUTEX_LOGIC( sqlite3_mutex *pMaster; ) /* The main static mutex */
MUTEX_LOGIC( sqlite3_mutex *pMem; ) /* The memsys static mutex */
- MUTEX_LOGIC( pMaster = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER); )
- MUTEX_LOGIC( pMem = sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MEM); )
+ MUTEX_LOGIC( pMaster = sqlite3_mutex_alloc(SQLITE_MUTEX_STATIC_MASTER); )
+ MUTEX_LOGIC( pMem = sqlite3_mutex_alloc(SQLITE_MUTEX_STATIC_MEM); )
sqlite3_mutex_enter(pMaster);
sqlite3_mutex_enter(pMem);
winMemAssertMagic();
@@ -33277,6 +34204,16 @@ SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){
#endif
}
+#if SQLITE_MAX_WORKER_THREADS>0 && !SQLITE_OS_WINCE && !SQLITE_OS_WINRT && \
+ SQLITE_THREADSAFE>0
+SQLITE_PRIVATE DWORD sqlite3Win32Wait(HANDLE hObject){
+ DWORD rc;
+ while( (rc = osWaitForSingleObjectEx(hObject, INFINITE,
+ TRUE))==WAIT_IO_COMPLETION ){}
+ return rc;
+}
+#endif
+
/*
** Return true (non-zero) if we are running under WinNT, Win2K, WinXP,
** or WinCE. Return false (zero) for Win95, Win98, or WinME.
@@ -33304,19 +34241,24 @@ SQLITE_API void sqlite3_win32_sleep(DWORD milliseconds){
** based on the NT kernel.
*/
SQLITE_API int sqlite3_win32_is_nt(void){
-#if defined(SQLITE_WIN32_GETVERSIONEX) && SQLITE_WIN32_GETVERSIONEX
+#if SQLITE_OS_WINRT
+ /*
+ ** NOTE: The WinRT sub-platform is always assumed to be based on the NT
+ ** kernel.
+ */
+ return 1;
+#elif defined(SQLITE_WIN32_GETVERSIONEX) && SQLITE_WIN32_GETVERSIONEX
if( osInterlockedCompareExchange(&sqlite3_os_type, 0, 0)==0 ){
-#if !SQLITE_OS_WINRT && defined(SQLITE_WIN32_HAS_WIDE) && \
- defined(NTDDI_VERSION) && NTDDI_VERSION >= NTDDI_WIN8
- OSVERSIONINFOW sInfo;
+#if defined(SQLITE_WIN32_HAS_ANSI)
+ OSVERSIONINFOA sInfo;
sInfo.dwOSVersionInfoSize = sizeof(sInfo);
- osGetVersionExW(&sInfo);
+ osGetVersionExA(&sInfo);
osInterlockedCompareExchange(&sqlite3_os_type,
(sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0);
-#elif defined(SQLITE_WIN32_HAS_ANSI)
- OSVERSIONINFOA sInfo;
+#elif defined(SQLITE_WIN32_HAS_WIDE)
+ OSVERSIONINFOW sInfo;
sInfo.dwOSVersionInfoSize = sizeof(sInfo);
- osGetVersionExA(&sInfo);
+ osGetVersionExW(&sInfo);
osInterlockedCompareExchange(&sqlite3_os_type,
(sInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) ? 2 : 1, 0);
#endif
@@ -33325,6 +34267,10 @@ SQLITE_API int sqlite3_win32_is_nt(void){
#elif SQLITE_TEST
return osInterlockedCompareExchange(&sqlite3_os_type, 2, 2)==2;
#else
+ /*
+ ** NOTE: All sub-platforms where the GetVersionEx[AW] functions are
+ ** deprecated are always assumed to be based on the NT kernel.
+ */
return 1;
#endif
}
@@ -34440,7 +35386,7 @@ static int winRead(
int amt, /* Number of bytes to read */
sqlite3_int64 offset /* Begin reading at this offset */
){
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_OVERLAPPED)
OVERLAPPED overlapped; /* The offset for ReadFile. */
#endif
winFile *pFile = (winFile*)id; /* file handle */
@@ -34472,7 +35418,7 @@ static int winRead(
}
#endif
-#if SQLITE_OS_WINCE
+#if SQLITE_OS_WINCE || defined(SQLITE_WIN32_NO_OVERLAPPED)
if( winSeekFile(pFile, offset) ){
OSTRACE(("READ file=%p, rc=SQLITE_FULL\n", pFile->h));
return SQLITE_FULL;
@@ -34544,13 +35490,13 @@ static int winWrite(
}
#endif
-#if SQLITE_OS_WINCE
+#if SQLITE_OS_WINCE || defined(SQLITE_WIN32_NO_OVERLAPPED)
rc = winSeekFile(pFile, offset);
if( rc==0 ){
#else
{
#endif
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_OVERLAPPED)
OVERLAPPED overlapped; /* The offset for WriteFile. */
#endif
u8 *aRem = (u8 *)pBuf; /* Data yet to be written */
@@ -34558,14 +35504,14 @@ static int winWrite(
DWORD nWrite; /* Bytes written by each WriteFile() call */
DWORD lastErrno = NO_ERROR; /* Value returned by GetLastError() */
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_OVERLAPPED)
memset(&overlapped, 0, sizeof(OVERLAPPED));
overlapped.Offset = (LONG)(offset & 0xffffffff);
overlapped.OffsetHigh = (LONG)((offset>>32) & 0x7fffffff);
#endif
while( nRem>0 ){
-#if SQLITE_OS_WINCE
+#if SQLITE_OS_WINCE || defined(SQLITE_WIN32_NO_OVERLAPPED)
if( !osWriteFile(pFile->h, aRem, nRem, &nWrite, 0) ){
#else
if( !osWriteFile(pFile->h, aRem, nRem, &nWrite, &overlapped) ){
@@ -34578,7 +35524,7 @@ static int winWrite(
lastErrno = osGetLastError();
break;
}
-#if !SQLITE_OS_WINCE
+#if !SQLITE_OS_WINCE && !defined(SQLITE_WIN32_NO_OVERLAPPED)
offset += nWrite;
overlapped.Offset = (LONG)(offset & 0xffffffff);
overlapped.OffsetHigh = (LONG)((offset>>32) & 0x7fffffff);
@@ -35101,7 +36047,7 @@ static int winUnlock(sqlite3_file *id, int locktype){
}
/*
-** If *pArg is inititially negative then this is a query. Set *pArg to
+** If *pArg is initially negative then this is a query. Set *pArg to
** 1 or 0 depending on whether or not bit mask of pFile->ctrlFlags is set.
**
** If *pArg is 0 or 1, then clear or set the mask bit of pFile->ctrlFlags.
@@ -36115,7 +37061,7 @@ static int winUnfetch(sqlite3_file *fd, i64 iOff, void *p){
}else{
/* FIXME: If Windows truly always prevents truncating or deleting a
** file while a mapping is held, then the following winUnmapfile() call
- ** is unnecessary can can be omitted - potentially improving
+ ** is unnecessary can be omitted - potentially improving
** performance. */
winUnmapfile(pFd);
}
@@ -37959,102 +38905,73 @@ struct PCache {
PgHdr *pPage1; /* Reference to page 1 */
};
-/*
-** Some of the assert() macros in this code are too expensive to run
-** even during normal debugging. Use them only rarely on long-running
-** tests. Enable the expensive asserts using the
-** -DSQLITE_ENABLE_EXPENSIVE_ASSERT=1 compile-time option.
-*/
-#ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
-# define expensive_assert(X) assert(X)
-#else
-# define expensive_assert(X)
-#endif
-
/********************************** Linked List Management ********************/
-#if !defined(NDEBUG) && defined(SQLITE_ENABLE_EXPENSIVE_ASSERT)
-/*
-** Check that the pCache->pSynced variable is set correctly. If it
-** is not, either fail an assert or return zero. Otherwise, return
-** non-zero. This is only used in debugging builds, as follows:
-**
-** expensive_assert( pcacheCheckSynced(pCache) );
-*/
-static int pcacheCheckSynced(PCache *pCache){
- PgHdr *p;
- for(p=pCache->pDirtyTail; p!=pCache->pSynced; p=p->pDirtyPrev){
- assert( p->nRef || (p->flags&PGHDR_NEED_SYNC) );
- }
- return (p==0 || p->nRef || (p->flags&PGHDR_NEED_SYNC)==0);
-}
-#endif /* !NDEBUG && SQLITE_ENABLE_EXPENSIVE_ASSERT */
+/* Allowed values for second argument to pcacheManageDirtyList() */
+#define PCACHE_DIRTYLIST_REMOVE 1 /* Remove pPage from dirty list */
+#define PCACHE_DIRTYLIST_ADD 2 /* Add pPage to the dirty list */
+#define PCACHE_DIRTYLIST_FRONT 3 /* Move pPage to the front of the list */
/*
-** Remove page pPage from the list of dirty pages.
+** Manage pPage's participation on the dirty list. Bits of the addRemove
+** argument determines what operation to do. The 0x01 bit means first
+** remove pPage from the dirty list. The 0x02 means add pPage back to
+** the dirty list. Doing both moves pPage to the front of the dirty list.
*/
-static void pcacheRemoveFromDirtyList(PgHdr *pPage){
+static void pcacheManageDirtyList(PgHdr *pPage, u8 addRemove){
PCache *p = pPage->pCache;
- assert( pPage->pDirtyNext || pPage==p->pDirtyTail );
- assert( pPage->pDirtyPrev || pPage==p->pDirty );
-
- /* Update the PCache1.pSynced variable if necessary. */
- if( p->pSynced==pPage ){
- PgHdr *pSynced = pPage->pDirtyPrev;
- while( pSynced && (pSynced->flags&PGHDR_NEED_SYNC) ){
- pSynced = pSynced->pDirtyPrev;
+ if( addRemove & PCACHE_DIRTYLIST_REMOVE ){
+ assert( pPage->pDirtyNext || pPage==p->pDirtyTail );
+ assert( pPage->pDirtyPrev || pPage==p->pDirty );
+
+ /* Update the PCache1.pSynced variable if necessary. */
+ if( p->pSynced==pPage ){
+ PgHdr *pSynced = pPage->pDirtyPrev;
+ while( pSynced && (pSynced->flags&PGHDR_NEED_SYNC) ){
+ pSynced = pSynced->pDirtyPrev;
+ }
+ p->pSynced = pSynced;
}
- p->pSynced = pSynced;
- }
-
- if( pPage->pDirtyNext ){
- pPage->pDirtyNext->pDirtyPrev = pPage->pDirtyPrev;
- }else{
- assert( pPage==p->pDirtyTail );
- p->pDirtyTail = pPage->pDirtyPrev;
- }
- if( pPage->pDirtyPrev ){
- pPage->pDirtyPrev->pDirtyNext = pPage->pDirtyNext;
- }else{
- assert( pPage==p->pDirty );
- p->pDirty = pPage->pDirtyNext;
- if( p->pDirty==0 && p->bPurgeable ){
- assert( p->eCreate==1 );
- p->eCreate = 2;
+
+ if( pPage->pDirtyNext ){
+ pPage->pDirtyNext->pDirtyPrev = pPage->pDirtyPrev;
+ }else{
+ assert( pPage==p->pDirtyTail );
+ p->pDirtyTail = pPage->pDirtyPrev;
}
+ if( pPage->pDirtyPrev ){
+ pPage->pDirtyPrev->pDirtyNext = pPage->pDirtyNext;
+ }else{
+ assert( pPage==p->pDirty );
+ p->pDirty = pPage->pDirtyNext;
+ if( p->pDirty==0 && p->bPurgeable ){
+ assert( p->eCreate==1 );
+ p->eCreate = 2;
+ }
+ }
+ pPage->pDirtyNext = 0;
+ pPage->pDirtyPrev = 0;
}
- pPage->pDirtyNext = 0;
- pPage->pDirtyPrev = 0;
-
- expensive_assert( pcacheCheckSynced(p) );
-}
-
-/*
-** Add page pPage to the head of the dirty list (PCache1.pDirty is set to
-** pPage).
-*/
-static void pcacheAddToDirtyList(PgHdr *pPage){
- PCache *p = pPage->pCache;
-
- assert( pPage->pDirtyNext==0 && pPage->pDirtyPrev==0 && p->pDirty!=pPage );
-
- pPage->pDirtyNext = p->pDirty;
- if( pPage->pDirtyNext ){
- assert( pPage->pDirtyNext->pDirtyPrev==0 );
- pPage->pDirtyNext->pDirtyPrev = pPage;
- }else if( p->bPurgeable ){
- assert( p->eCreate==2 );
- p->eCreate = 1;
- }
- p->pDirty = pPage;
- if( !p->pDirtyTail ){
- p->pDirtyTail = pPage;
- }
- if( !p->pSynced && 0==(pPage->flags&PGHDR_NEED_SYNC) ){
- p->pSynced = pPage;
+ if( addRemove & PCACHE_DIRTYLIST_ADD ){
+ assert( pPage->pDirtyNext==0 && pPage->pDirtyPrev==0 && p->pDirty!=pPage );
+
+ pPage->pDirtyNext = p->pDirty;
+ if( pPage->pDirtyNext ){
+ assert( pPage->pDirtyNext->pDirtyPrev==0 );
+ pPage->pDirtyNext->pDirtyPrev = pPage;
+ }else{
+ p->pDirtyTail = pPage;
+ if( p->bPurgeable ){
+ assert( p->eCreate==2 );
+ p->eCreate = 1;
+ }
+ }
+ p->pDirty = pPage;
+ if( !p->pSynced && 0==(pPage->flags&PGHDR_NEED_SYNC) ){
+ p->pSynced = pPage;
+ }
}
- expensive_assert( pcacheCheckSynced(p) );
}
/*
@@ -38062,12 +38979,22 @@ static void pcacheAddToDirtyList(PgHdr *pPage){
** being used for an in-memory database, this function is a no-op.
*/
static void pcacheUnpin(PgHdr *p){
- PCache *pCache = p->pCache;
- if( pCache->bPurgeable ){
+ if( p->pCache->bPurgeable ){
if( p->pgno==1 ){
- pCache->pPage1 = 0;
+ p->pCache->pPage1 = 0;
}
- sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, p->pPage, 0);
+ sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 0);
+ }
+}
+
+/*
+** Compute the number of pages of cache requested.
+*/
+static int numberOfCachePages(PCache *p){
+ if( p->szCache>=0 ){
+ return p->szCache;
+ }else{
+ return (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
}
}
@@ -38103,7 +39030,7 @@ SQLITE_PRIVATE int sqlite3PcacheSize(void){ return sizeof(PCache); }
** The caller discovers how much space needs to be allocated by
** calling sqlite3PcacheSize().
*/
-SQLITE_PRIVATE void sqlite3PcacheOpen(
+SQLITE_PRIVATE int sqlite3PcacheOpen(
int szPage, /* Size of every page */
int szExtra, /* Extra space associated with each page */
int bPurgeable, /* True if pages are on backing store */
@@ -38112,76 +39039,76 @@ SQLITE_PRIVATE void sqlite3PcacheOpen(
PCache *p /* Preallocated space for the PCache */
){
memset(p, 0, sizeof(PCache));
- p->szPage = szPage;
+ p->szPage = 1;
p->szExtra = szExtra;
p->bPurgeable = bPurgeable;
p->eCreate = 2;
p->xStress = xStress;
p->pStress = pStress;
p->szCache = 100;
+ return sqlite3PcacheSetPageSize(p, szPage);
}
/*
** Change the page size for PCache object. The caller must ensure that there
** are no outstanding page references when this function is called.
*/
-SQLITE_PRIVATE void sqlite3PcacheSetPageSize(PCache *pCache, int szPage){
+SQLITE_PRIVATE int sqlite3PcacheSetPageSize(PCache *pCache, int szPage){
assert( pCache->nRef==0 && pCache->pDirty==0 );
- if( pCache->pCache ){
- sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache);
- pCache->pCache = 0;
+ if( pCache->szPage ){
+ sqlite3_pcache *pNew;
+ pNew = sqlite3GlobalConfig.pcache2.xCreate(
+ szPage, pCache->szExtra + ROUND8(sizeof(PgHdr)),
+ pCache->bPurgeable
+ );
+ if( pNew==0 ) return SQLITE_NOMEM;
+ sqlite3GlobalConfig.pcache2.xCachesize(pNew, numberOfCachePages(pCache));
+ if( pCache->pCache ){
+ sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache);
+ }
+ pCache->pCache = pNew;
pCache->pPage1 = 0;
+ pCache->szPage = szPage;
}
- pCache->szPage = szPage;
-}
-
-/*
-** Compute the number of pages of cache requested.
-*/
-static int numberOfCachePages(PCache *p){
- if( p->szCache>=0 ){
- return p->szCache;
- }else{
- return (int)((-1024*(i64)p->szCache)/(p->szPage+p->szExtra));
- }
+ return SQLITE_OK;
}
/*
** Try to obtain a page from the cache.
+**
+** This routine returns a pointer to an sqlite3_pcache_page object if
+** such an object is already in cache, or if a new one is created.
+** This routine returns a NULL pointer if the object was not in cache
+** and could not be created.
+**
+** The createFlags should be 0 to check for existing pages and should
+** be 3 (not 1, but 3) to try to create a new page.
+**
+** If the createFlag is 0, then NULL is always returned if the page
+** is not already in the cache. If createFlag is 1, then a new page
+** is created only if that can be done without spilling dirty pages
+** and without exceeding the cache size limit.
+**
+** The caller needs to invoke sqlite3PcacheFetchFinish() to properly
+** initialize the sqlite3_pcache_page object and convert it into a
+** PgHdr object. The sqlite3PcacheFetch() and sqlite3PcacheFetchFinish()
+** routines are split this way for performance reasons. When separated
+** they can both (usually) operate without having to push values to
+** the stack on entry and pop them back off on exit, which saves a
+** lot of pushing and popping.
*/
-SQLITE_PRIVATE int sqlite3PcacheFetch(
+SQLITE_PRIVATE sqlite3_pcache_page *sqlite3PcacheFetch(
PCache *pCache, /* Obtain the page from this cache */
Pgno pgno, /* Page number to obtain */
- int createFlag, /* If true, create page if it does not exist already */
- PgHdr **ppPage /* Write the page here */
+ int createFlag /* If true, create page if it does not exist already */
){
- sqlite3_pcache_page *pPage;
- PgHdr *pPgHdr = 0;
int eCreate;
assert( pCache!=0 );
- assert( createFlag==1 || createFlag==0 );
+ assert( pCache->pCache!=0 );
+ assert( createFlag==3 || createFlag==0 );
assert( pgno>0 );
- /* If the pluggable cache (sqlite3_pcache*) has not been allocated,
- ** allocate it now.
- */
- if( !pCache->pCache ){
- sqlite3_pcache *p;
- if( !createFlag ){
- *ppPage = 0;
- return SQLITE_OK;
- }
- p = sqlite3GlobalConfig.pcache2.xCreate(
- pCache->szPage, pCache->szExtra + sizeof(PgHdr), pCache->bPurgeable
- );
- if( !p ){
- return SQLITE_NOMEM;
- }
- sqlite3GlobalConfig.pcache2.xCachesize(p, numberOfCachePages(pCache));
- pCache->pCache = p;
- }
-
/* eCreate defines what to do if the page does not exist.
** 0 Do not allocate a new page. (createFlag==0)
** 1 Allocate a new page if doing so is inexpensive.
@@ -38189,89 +39116,135 @@ SQLITE_PRIVATE int sqlite3PcacheFetch(
** 2 Allocate a new page even it doing so is difficult.
** (createFlag==1 AND !(bPurgeable AND pDirty)
*/
- eCreate = createFlag==0 ? 0 : pCache->eCreate;
- assert( (createFlag*(1+(!pCache->bPurgeable||!pCache->pDirty)))==eCreate );
- pPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate);
- if( !pPage && eCreate==1 ){
- PgHdr *pPg;
+ eCreate = createFlag & pCache->eCreate;
+ assert( eCreate==0 || eCreate==1 || eCreate==2 );
+ assert( createFlag==0 || pCache->eCreate==eCreate );
+ assert( createFlag==0 || eCreate==1+(!pCache->bPurgeable||!pCache->pDirty) );
+ return sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, eCreate);
+}
- /* Find a dirty page to write-out and recycle. First try to find a
- ** page that does not require a journal-sync (one with PGHDR_NEED_SYNC
- ** cleared), but if that is not possible settle for any other
- ** unreferenced dirty page.
- */
- expensive_assert( pcacheCheckSynced(pCache) );
- for(pPg=pCache->pSynced;
- pPg && (pPg->nRef || (pPg->flags&PGHDR_NEED_SYNC));
- pPg=pPg->pDirtyPrev
- );
- pCache->pSynced = pPg;
- if( !pPg ){
- for(pPg=pCache->pDirtyTail; pPg && pPg->nRef; pPg=pPg->pDirtyPrev);
- }
- if( pPg ){
- int rc;
+/*
+** If the sqlite3PcacheFetch() routine is unable to allocate a new
+** page because new clean pages are available for reuse and the cache
+** size limit has been reached, then this routine can be invoked to
+** try harder to allocate a page. This routine might invoke the stress
+** callback to spill dirty pages to the journal. It will then try to
+** allocate the new page and will only fail to allocate a new page on
+** an OOM error.
+**
+** This routine should be invoked only after sqlite3PcacheFetch() fails.
+*/
+SQLITE_PRIVATE int sqlite3PcacheFetchStress(
+ PCache *pCache, /* Obtain the page from this cache */
+ Pgno pgno, /* Page number to obtain */
+ sqlite3_pcache_page **ppPage /* Write result here */
+){
+ PgHdr *pPg;
+ if( pCache->eCreate==2 ) return 0;
+
+
+ /* Find a dirty page to write-out and recycle. First try to find a
+ ** page that does not require a journal-sync (one with PGHDR_NEED_SYNC
+ ** cleared), but if that is not possible settle for any other
+ ** unreferenced dirty page.
+ */
+ for(pPg=pCache->pSynced;
+ pPg && (pPg->nRef || (pPg->flags&PGHDR_NEED_SYNC));
+ pPg=pPg->pDirtyPrev
+ );
+ pCache->pSynced = pPg;
+ if( !pPg ){
+ for(pPg=pCache->pDirtyTail; pPg && pPg->nRef; pPg=pPg->pDirtyPrev);
+ }
+ if( pPg ){
+ int rc;
#ifdef SQLITE_LOG_CACHE_SPILL
- sqlite3_log(SQLITE_FULL,
- "spill page %d making room for %d - cache used: %d/%d",
- pPg->pgno, pgno,
- sqlite3GlobalConfig.pcache.xPagecount(pCache->pCache),
- numberOfCachePages(pCache));
-#endif
- rc = pCache->xStress(pCache->pStress, pPg);
- if( rc!=SQLITE_OK && rc!=SQLITE_BUSY ){
- return rc;
- }
+ sqlite3_log(SQLITE_FULL,
+ "spill page %d making room for %d - cache used: %d/%d",
+ pPg->pgno, pgno,
+ sqlite3GlobalConfig.pcache.xPagecount(pCache->pCache),
+ numberOfCachePages(pCache));
+#endif
+ rc = pCache->xStress(pCache->pStress, pPg);
+ if( rc!=SQLITE_OK && rc!=SQLITE_BUSY ){
+ return rc;
}
-
- pPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, 2);
}
+ *ppPage = sqlite3GlobalConfig.pcache2.xFetch(pCache->pCache, pgno, 2);
+ return *ppPage==0 ? SQLITE_NOMEM : SQLITE_OK;
+}
- if( pPage ){
- pPgHdr = (PgHdr *)pPage->pExtra;
-
- if( !pPgHdr->pPage ){
- memset(pPgHdr, 0, sizeof(PgHdr));
- pPgHdr->pPage = pPage;
- pPgHdr->pData = pPage->pBuf;
- pPgHdr->pExtra = (void *)&pPgHdr[1];
- memset(pPgHdr->pExtra, 0, pCache->szExtra);
- pPgHdr->pCache = pCache;
- pPgHdr->pgno = pgno;
- }
- assert( pPgHdr->pCache==pCache );
- assert( pPgHdr->pgno==pgno );
- assert( pPgHdr->pData==pPage->pBuf );
- assert( pPgHdr->pExtra==(void *)&pPgHdr[1] );
-
- if( 0==pPgHdr->nRef ){
- pCache->nRef++;
- }
- pPgHdr->nRef++;
- if( pgno==1 ){
- pCache->pPage1 = pPgHdr;
- }
+/*
+** This is a helper routine for sqlite3PcacheFetchFinish()
+**
+** In the uncommon case where the page being fetched has not been
+** initialized, this routine is invoked to do the initialization.
+** This routine is broken out into a separate function since it
+** requires extra stack manipulation that can be avoided in the common
+** case.
+*/
+static SQLITE_NOINLINE PgHdr *pcacheFetchFinishWithInit(
+ PCache *pCache, /* Obtain the page from this cache */
+ Pgno pgno, /* Page number obtained */
+ sqlite3_pcache_page *pPage /* Page obtained by prior PcacheFetch() call */
+){
+ PgHdr *pPgHdr;
+ assert( pPage!=0 );
+ pPgHdr = (PgHdr*)pPage->pExtra;
+ assert( pPgHdr->pPage==0 );
+ memset(pPgHdr, 0, sizeof(PgHdr));
+ pPgHdr->pPage = pPage;
+ pPgHdr->pData = pPage->pBuf;
+ pPgHdr->pExtra = (void *)&pPgHdr[1];
+ memset(pPgHdr->pExtra, 0, pCache->szExtra);
+ pPgHdr->pCache = pCache;
+ pPgHdr->pgno = pgno;
+ return sqlite3PcacheFetchFinish(pCache,pgno,pPage);
+}
+
+/*
+** This routine converts the sqlite3_pcache_page object returned by
+** sqlite3PcacheFetch() into an initialized PgHdr object. This routine
+** must be called after sqlite3PcacheFetch() in order to get a usable
+** result.
+*/
+SQLITE_PRIVATE PgHdr *sqlite3PcacheFetchFinish(
+ PCache *pCache, /* Obtain the page from this cache */
+ Pgno pgno, /* Page number obtained */
+ sqlite3_pcache_page *pPage /* Page obtained by prior PcacheFetch() call */
+){
+ PgHdr *pPgHdr;
+
+ if( pPage==0 ) return 0;
+ pPgHdr = (PgHdr *)pPage->pExtra;
+
+ if( !pPgHdr->pPage ){
+ return pcacheFetchFinishWithInit(pCache, pgno, pPage);
+ }
+ if( 0==pPgHdr->nRef ){
+ pCache->nRef++;
+ }
+ pPgHdr->nRef++;
+ if( pgno==1 ){
+ pCache->pPage1 = pPgHdr;
}
- *ppPage = pPgHdr;
- return (pPgHdr==0 && eCreate) ? SQLITE_NOMEM : SQLITE_OK;
+ return pPgHdr;
}
/*
** Decrement the reference count on a page. If the page is clean and the
-** reference count drops to 0, then it is made elible for recycling.
+** reference count drops to 0, then it is made eligible for recycling.
*/
-SQLITE_PRIVATE void sqlite3PcacheRelease(PgHdr *p){
+SQLITE_PRIVATE void SQLITE_NOINLINE sqlite3PcacheRelease(PgHdr *p){
assert( p->nRef>0 );
p->nRef--;
if( p->nRef==0 ){
- PCache *pCache = p->pCache;
- pCache->nRef--;
+ p->pCache->nRef--;
if( (p->flags&PGHDR_DIRTY)==0 ){
pcacheUnpin(p);
- }else{
+ }else if( p->pDirtyPrev!=0 ){
/* Move the page to the head of the dirty list. */
- pcacheRemoveFromDirtyList(p);
- pcacheAddToDirtyList(p);
+ pcacheManageDirtyList(p, PCACHE_DIRTYLIST_FRONT);
}
}
}
@@ -38290,17 +39263,15 @@ SQLITE_PRIVATE void sqlite3PcacheRef(PgHdr *p){
** page pointed to by p is invalid.
*/
SQLITE_PRIVATE void sqlite3PcacheDrop(PgHdr *p){
- PCache *pCache;
assert( p->nRef==1 );
if( p->flags&PGHDR_DIRTY ){
- pcacheRemoveFromDirtyList(p);
+ pcacheManageDirtyList(p, PCACHE_DIRTYLIST_REMOVE);
}
- pCache = p->pCache;
- pCache->nRef--;
+ p->pCache->nRef--;
if( p->pgno==1 ){
- pCache->pPage1 = 0;
+ p->pCache->pPage1 = 0;
}
- sqlite3GlobalConfig.pcache2.xUnpin(pCache->pCache, p->pPage, 1);
+ sqlite3GlobalConfig.pcache2.xUnpin(p->pCache->pCache, p->pPage, 1);
}
/*
@@ -38312,7 +39283,7 @@ SQLITE_PRIVATE void sqlite3PcacheMakeDirty(PgHdr *p){
assert( p->nRef>0 );
if( 0==(p->flags & PGHDR_DIRTY) ){
p->flags |= PGHDR_DIRTY;
- pcacheAddToDirtyList( p);
+ pcacheManageDirtyList(p, PCACHE_DIRTYLIST_ADD);
}
}
@@ -38322,7 +39293,7 @@ SQLITE_PRIVATE void sqlite3PcacheMakeDirty(PgHdr *p){
*/
SQLITE_PRIVATE void sqlite3PcacheMakeClean(PgHdr *p){
if( (p->flags & PGHDR_DIRTY) ){
- pcacheRemoveFromDirtyList(p);
+ pcacheManageDirtyList(p, PCACHE_DIRTYLIST_REMOVE);
p->flags &= ~(PGHDR_DIRTY|PGHDR_NEED_SYNC);
if( p->nRef==0 ){
pcacheUnpin(p);
@@ -38361,8 +39332,7 @@ SQLITE_PRIVATE void sqlite3PcacheMove(PgHdr *p, Pgno newPgno){
sqlite3GlobalConfig.pcache2.xRekey(pCache->pCache, p->pPage, p->pgno,newPgno);
p->pgno = newPgno;
if( (p->flags&PGHDR_DIRTY) && (p->flags&PGHDR_NEED_SYNC) ){
- pcacheRemoveFromDirtyList(p);
- pcacheAddToDirtyList(p);
+ pcacheManageDirtyList(p, PCACHE_DIRTYLIST_FRONT);
}
}
@@ -38403,9 +39373,8 @@ SQLITE_PRIVATE void sqlite3PcacheTruncate(PCache *pCache, Pgno pgno){
** Close a cache.
*/
SQLITE_PRIVATE void sqlite3PcacheClose(PCache *pCache){
- if( pCache->pCache ){
- sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache);
- }
+ assert( pCache->pCache!=0 );
+ sqlite3GlobalConfig.pcache2.xDestroy(pCache->pCache);
}
/*
@@ -38514,11 +39483,8 @@ SQLITE_PRIVATE int sqlite3PcachePageRefcount(PgHdr *p){
** Return the total number of pages in the cache.
*/
SQLITE_PRIVATE int sqlite3PcachePagecount(PCache *pCache){
- int nPage = 0;
- if( pCache->pCache ){
- nPage = sqlite3GlobalConfig.pcache2.xPagecount(pCache->pCache);
- }
- return nPage;
+ assert( pCache->pCache!=0 );
+ return sqlite3GlobalConfig.pcache2.xPagecount(pCache->pCache);
}
#ifdef SQLITE_TEST
@@ -38534,22 +39500,27 @@ SQLITE_PRIVATE int sqlite3PcacheGetCachesize(PCache *pCache){
** Set the suggested cache-size value.
*/
SQLITE_PRIVATE void sqlite3PcacheSetCachesize(PCache *pCache, int mxPage){
+ assert( pCache->pCache!=0 );
pCache->szCache = mxPage;
- if( pCache->pCache ){
- sqlite3GlobalConfig.pcache2.xCachesize(pCache->pCache,
- numberOfCachePages(pCache));
- }
+ sqlite3GlobalConfig.pcache2.xCachesize(pCache->pCache,
+ numberOfCachePages(pCache));
}
/*
** Free up as much memory as possible from the page cache.
*/
SQLITE_PRIVATE void sqlite3PcacheShrink(PCache *pCache){
- if( pCache->pCache ){
- sqlite3GlobalConfig.pcache2.xShrink(pCache->pCache);
- }
+ assert( pCache->pCache!=0 );
+ sqlite3GlobalConfig.pcache2.xShrink(pCache->pCache);
}
+/*
+** Return the size of the header added by this middleware layer
+** in the page-cache hierarchy.
+*/
+SQLITE_PRIVATE int sqlite3HeaderSizePcache(void){ return ROUND8(sizeof(PgHdr)); }
+
+
#if defined(SQLITE_CHECK_PAGES) || defined(SQLITE_DEBUG)
/*
** For all dirty pages currently in the cache, invoke the specified
@@ -38581,7 +39552,7 @@ SQLITE_PRIVATE void sqlite3PcacheIterateDirty(PCache *pCache, void (*xIter)(PgHd
** This file implements the default page cache implementation (the
** sqlite3_pcache interface). It also contains part of the implementation
** of the SQLITE_CONFIG_PAGECACHE and sqlite3_release_memory() features.
-** If the default page cache implementation is overriden, then neither of
+** If the default page cache implementation is overridden, then neither of
** these two features are available.
*/
@@ -38592,7 +39563,7 @@ typedef struct PgFreeslot PgFreeslot;
typedef struct PGroup PGroup;
/* Each page cache (or PCache) belongs to a PGroup. A PGroup is a set
-** of one or more PCaches that are able to recycle each others unpinned
+** of one or more PCaches that are able to recycle each other's unpinned
** pages when they are under memory pressure. A PGroup is an instance of
** the following object.
**
@@ -38863,7 +39834,7 @@ static PgHdr1 *pcache1AllocPage(PCache1 *pCache){
pPg = 0;
}
#else
- pPg = pcache1Alloc(sizeof(PgHdr1) + pCache->szPage + pCache->szExtra);
+ pPg = pcache1Alloc(ROUND8(sizeof(PgHdr1)) + pCache->szPage + pCache->szExtra);
p = (PgHdr1 *)&((u8 *)pPg)[pCache->szPage];
#endif
pcache1EnterMutex(pCache->pGroup);
@@ -38950,7 +39921,7 @@ static int pcache1UnderMemoryPressure(PCache1 *pCache){
**
** The PCache mutex must be held when this function is called.
*/
-static int pcache1ResizeHash(PCache1 *p){
+static void pcache1ResizeHash(PCache1 *p){
PgHdr1 **apNew;
unsigned int nNew;
unsigned int i;
@@ -38982,8 +39953,6 @@ static int pcache1ResizeHash(PCache1 *p){
p->apHash = apNew;
p->nHash = nNew;
}
-
- return (p->apHash ? SQLITE_OK : SQLITE_NOMEM);
}
/*
@@ -39118,6 +40087,9 @@ static void pcache1Shutdown(void *NotUsed){
memset(&pcache1, 0, sizeof(pcache1));
}
+/* forward declaration */
+static void pcache1Destroy(sqlite3_pcache *p);
+
/*
** Implementation of the sqlite3_pcache.xCreate method.
**
@@ -39162,12 +40134,17 @@ static sqlite3_pcache *pcache1Create(int szPage, int szExtra, int bPurgeable){
pCache->szPage = szPage;
pCache->szExtra = szExtra;
pCache->bPurgeable = (bPurgeable ? 1 : 0);
+ pcache1EnterMutex(pGroup);
+ pcache1ResizeHash(pCache);
if( bPurgeable ){
pCache->nMin = 10;
- pcache1EnterMutex(pGroup);
pGroup->nMinPage += pCache->nMin;
pGroup->mxPinned = pGroup->nMaxPage + 10 - pGroup->nMinPage;
- pcache1LeaveMutex(pGroup);
+ }
+ pcache1LeaveMutex(pGroup);
+ if( pCache->nHash==0 ){
+ pcache1Destroy((sqlite3_pcache*)pCache);
+ pCache = 0;
}
}
return (sqlite3_pcache *)pCache;
@@ -39223,6 +40200,95 @@ static int pcache1Pagecount(sqlite3_pcache *p){
return n;
}
+
+/*
+** Implement steps 3, 4, and 5 of the pcache1Fetch() algorithm described
+** in the header of the pcache1Fetch() procedure.
+**
+** This steps are broken out into a separate procedure because they are
+** usually not needed, and by avoiding the stack initialization required
+** for these steps, the main pcache1Fetch() procedure can run faster.
+*/
+static SQLITE_NOINLINE PgHdr1 *pcache1FetchStage2(
+ PCache1 *pCache,
+ unsigned int iKey,
+ int createFlag
+){
+ unsigned int nPinned;
+ PGroup *pGroup = pCache->pGroup;
+ PgHdr1 *pPage = 0;
+
+ /* Step 3: Abort if createFlag is 1 but the cache is nearly full */
+ assert( pCache->nPage >= pCache->nRecyclable );
+ nPinned = pCache->nPage - pCache->nRecyclable;
+ assert( pGroup->mxPinned == pGroup->nMaxPage + 10 - pGroup->nMinPage );
+ assert( pCache->n90pct == pCache->nMax*9/10 );
+ if( createFlag==1 && (
+ nPinned>=pGroup->mxPinned
+ || nPinned>=pCache->n90pct
+ || (pcache1UnderMemoryPressure(pCache) && pCache->nRecyclable<nPinned)
+ )){
+ return 0;
+ }
+
+ if( pCache->nPage>=pCache->nHash ) pcache1ResizeHash(pCache);
+ assert( pCache->nHash>0 && pCache->apHash );
+
+ /* Step 4. Try to recycle a page. */
+ if( pCache->bPurgeable && pGroup->pLruTail && (
+ (pCache->nPage+1>=pCache->nMax)
+ || pGroup->nCurrentPage>=pGroup->nMaxPage
+ || pcache1UnderMemoryPressure(pCache)
+ )){
+ PCache1 *pOther;
+ pPage = pGroup->pLruTail;
+ assert( pPage->isPinned==0 );
+ pcache1RemoveFromHash(pPage);
+ pcache1PinPage(pPage);
+ pOther = pPage->pCache;
+
+ /* We want to verify that szPage and szExtra are the same for pOther
+ ** and pCache. Assert that we can verify this by comparing sums. */
+ assert( (pCache->szPage & (pCache->szPage-1))==0 && pCache->szPage>=512 );
+ assert( pCache->szExtra<512 );
+ assert( (pOther->szPage & (pOther->szPage-1))==0 && pOther->szPage>=512 );
+ assert( pOther->szExtra<512 );
+
+ if( pOther->szPage+pOther->szExtra != pCache->szPage+pCache->szExtra ){
+ pcache1FreePage(pPage);
+ pPage = 0;
+ }else{
+ pGroup->nCurrentPage -= (pOther->bPurgeable - pCache->bPurgeable);
+ }
+ }
+
+ /* Step 5. If a usable page buffer has still not been found,
+ ** attempt to allocate a new one.
+ */
+ if( !pPage ){
+ if( createFlag==1 ) sqlite3BeginBenignMalloc();
+ pPage = pcache1AllocPage(pCache);
+ if( createFlag==1 ) sqlite3EndBenignMalloc();
+ }
+
+ if( pPage ){
+ unsigned int h = iKey % pCache->nHash;
+ pCache->nPage++;
+ pPage->iKey = iKey;
+ pPage->pNext = pCache->apHash[h];
+ pPage->pCache = pCache;
+ pPage->pLruPrev = 0;
+ pPage->pLruNext = 0;
+ pPage->isPinned = 1;
+ *(void **)pPage->page.pExtra = 0;
+ pCache->apHash[h] = pPage;
+ if( iKey>pCache->iMaxKey ){
+ pCache->iMaxKey = iKey;
+ }
+ }
+ return pPage;
+}
+
/*
** Implementation of the sqlite3_pcache.xFetch method.
**
@@ -39282,9 +40348,7 @@ static sqlite3_pcache_page *pcache1Fetch(
unsigned int iKey,
int createFlag
){
- unsigned int nPinned;
PCache1 *pCache = (PCache1 *)p;
- PGroup *pGroup;
PgHdr1 *pPage = 0;
assert( offsetof(PgHdr1,page)==0 );
@@ -39292,107 +40356,22 @@ static sqlite3_pcache_page *pcache1Fetch(
assert( pCache->bPurgeable || pCache->nMin==0 );
assert( pCache->bPurgeable==0 || pCache->nMin==10 );
assert( pCache->nMin==0 || pCache->bPurgeable );
- pcache1EnterMutex(pGroup = pCache->pGroup);
+ assert( pCache->nHash>0 );
+ pcache1EnterMutex(pCache->pGroup);
/* Step 1: Search the hash table for an existing entry. */
- if( pCache->nHash>0 ){
- unsigned int h = iKey % pCache->nHash;
- for(pPage=pCache->apHash[h]; pPage&&pPage->iKey!=iKey; pPage=pPage->pNext);
- }
+ pPage = pCache->apHash[iKey % pCache->nHash];
+ while( pPage && pPage->iKey!=iKey ){ pPage = pPage->pNext; }
/* Step 2: Abort if no existing page is found and createFlag is 0 */
if( pPage ){
if( !pPage->isPinned ) pcache1PinPage(pPage);
- goto fetch_out;
- }
- if( createFlag==0 ){
- goto fetch_out;
- }
-
- /* The pGroup local variable will normally be initialized by the
- ** pcache1EnterMutex() macro above. But if SQLITE_MUTEX_OMIT is defined,
- ** then pcache1EnterMutex() is a no-op, so we have to initialize the
- ** local variable here. Delaying the initialization of pGroup is an
- ** optimization: The common case is to exit the module before reaching
- ** this point.
- */
-#ifdef SQLITE_MUTEX_OMIT
- pGroup = pCache->pGroup;
-#endif
-
- /* Step 3: Abort if createFlag is 1 but the cache is nearly full */
- assert( pCache->nPage >= pCache->nRecyclable );
- nPinned = pCache->nPage - pCache->nRecyclable;
- assert( pGroup->mxPinned == pGroup->nMaxPage + 10 - pGroup->nMinPage );
- assert( pCache->n90pct == pCache->nMax*9/10 );
- if( createFlag==1 && (
- nPinned>=pGroup->mxPinned
- || nPinned>=pCache->n90pct
- || pcache1UnderMemoryPressure(pCache)
- )){
- goto fetch_out;
- }
-
- if( pCache->nPage>=pCache->nHash && pcache1ResizeHash(pCache) ){
- goto fetch_out;
- }
- assert( pCache->nHash>0 && pCache->apHash );
-
- /* Step 4. Try to recycle a page. */
- if( pCache->bPurgeable && pGroup->pLruTail && (
- (pCache->nPage+1>=pCache->nMax)
- || pGroup->nCurrentPage>=pGroup->nMaxPage
- || pcache1UnderMemoryPressure(pCache)
- )){
- PCache1 *pOther;
- pPage = pGroup->pLruTail;
- assert( pPage->isPinned==0 );
- pcache1RemoveFromHash(pPage);
- pcache1PinPage(pPage);
- pOther = pPage->pCache;
-
- /* We want to verify that szPage and szExtra are the same for pOther
- ** and pCache. Assert that we can verify this by comparing sums. */
- assert( (pCache->szPage & (pCache->szPage-1))==0 && pCache->szPage>=512 );
- assert( pCache->szExtra<512 );
- assert( (pOther->szPage & (pOther->szPage-1))==0 && pOther->szPage>=512 );
- assert( pOther->szExtra<512 );
-
- if( pOther->szPage+pOther->szExtra != pCache->szPage+pCache->szExtra ){
- pcache1FreePage(pPage);
- pPage = 0;
- }else{
- pGroup->nCurrentPage -= (pOther->bPurgeable - pCache->bPurgeable);
- }
- }
-
- /* Step 5. If a usable page buffer has still not been found,
- ** attempt to allocate a new one.
- */
- if( !pPage ){
- if( createFlag==1 ) sqlite3BeginBenignMalloc();
- pPage = pcache1AllocPage(pCache);
- if( createFlag==1 ) sqlite3EndBenignMalloc();
- }
-
- if( pPage ){
- unsigned int h = iKey % pCache->nHash;
- pCache->nPage++;
- pPage->iKey = iKey;
- pPage->pNext = pCache->apHash[h];
- pPage->pCache = pCache;
- pPage->pLruPrev = 0;
- pPage->pLruNext = 0;
- pPage->isPinned = 1;
- *(void **)pPage->page.pExtra = 0;
- pCache->apHash[h] = pPage;
+ }else if( createFlag ){
+ /* Steps 3, 4, and 5 implemented by this subroutine */
+ pPage = pcache1FetchStage2(pCache, iKey, createFlag);
}
-
-fetch_out:
- if( pPage && iKey>pCache->iMaxKey ){
- pCache->iMaxKey = iKey;
- }
- pcache1LeaveMutex(pGroup);
+ assert( pPage==0 || pCache->iMaxKey>=iKey );
+ pcache1LeaveMutex(pCache->pGroup);
return (sqlite3_pcache_page*)pPage;
}
@@ -39540,6 +40519,11 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void){
sqlite3_config(SQLITE_CONFIG_PCACHE2, &defaultMethods);
}
+/*
+** Return the size of the header on each page of this PCACHE implementation.
+*/
+SQLITE_PRIVATE int sqlite3HeaderSizePcache1(void){ return ROUND8(sizeof(PgHdr1)); }
+
#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
/*
** This function is called to free superfluous dynamically allocated memory
@@ -39651,7 +40635,7 @@ SQLITE_PRIVATE void sqlite3PcacheStats(
** No INSERTs may occurs after a SMALLEST. An assertion will fail if
** that is attempted.
**
-** The cost of an INSERT is roughly constant. (Sometime new memory
+** The cost of an INSERT is roughly constant. (Sometimes new memory
** has to be allocated on an INSERT.) The cost of a TEST with a new
** batch number is O(NlogN) where N is the number of elements in the RowSet.
** The cost of a TEST using the same batch number is O(logN). The cost
@@ -40043,8 +41027,8 @@ SQLITE_PRIVATE int sqlite3RowSetNext(RowSet *p, i64 *pRowid){
** Check to see if element iRowid was inserted into the rowset as
** part of any insert batch prior to iBatch. Return 1 or 0.
**
-** If this is the first test of a new batch and if there exist entires
-** on pRowSet->pEntry, then sort those entires into the forest at
+** If this is the first test of a new batch and if there exist entries
+** on pRowSet->pEntry, then sort those entries into the forest at
** pRowSet->pForest so that they can be tested.
*/
SQLITE_PRIVATE int sqlite3RowSetTest(RowSet *pRowSet, int iBatch, sqlite3_int64 iRowid){
@@ -40326,12 +41310,12 @@ SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal);
** Definition: Two databases (or the same database at two points it time)
** are said to be "logically equivalent" if they give the same answer to
** all queries. Note in particular the content of freelist leaf
-** pages can be changed arbitarily without effecting the logical equivalence
+** pages can be changed arbitrarily without affecting the logical equivalence
** of the database.
**
** (7) At any time, if any subset, including the empty set and the total set,
** of the unsynced changes to a rollback journal are removed and the
-** journal is rolled back, the resulting database file will be logical
+** journal is rolled back, the resulting database file will be logically
** equivalent to the database file at the beginning of the transaction.
**
** (8) When a transaction is rolled back, the xTruncate method of the VFS
@@ -40628,7 +41612,7 @@ int sqlite3PagerTrace=1; /* True to enable tracing */
**
** The exception is when the database file is unlocked as the pager moves
** from ERROR to OPEN state. At this point there may be a hot-journal file
-** in the file-system that needs to be rolled back (as part of a OPEN->SHARED
+** in the file-system that needs to be rolled back (as part of an OPEN->SHARED
** transition, by the same pager or any other). If the call to xUnlock()
** fails at this point and the pager is left holding an EXCLUSIVE lock, this
** can confuse the call to xCheckReservedLock() call made later as part
@@ -40711,7 +41695,7 @@ struct PagerSavepoint {
#define SPILLFLAG_NOSYNC 0x04 /* Spill is ok, but do not sync */
/*
-** A open page cache is an instance of struct Pager. A description of
+** An open page cache is an instance of struct Pager. A description of
** some of the more important member variables follows:
**
** eState
@@ -40883,7 +41867,7 @@ struct Pager {
/**************************************************************************
** The following block contains those class members that change during
- ** routine opertion. Class members not in this block are either fixed
+ ** routine operation. Class members not in this block are either fixed
** when the pager is first created or else only change when there is a
** significant mode change (such as changing the page_size, locking_mode,
** or the journal_mode). From another view, these class members describe
@@ -40896,6 +41880,8 @@ struct Pager {
u8 setMaster; /* True if a m-j name has been written to jrnl */
u8 doNotSpill; /* Do not spill the cache when non-zero */
u8 subjInMemory; /* True to use in-memory sub-journals */
+ u8 bUseFetch; /* True to use xFetch() */
+ u8 hasBeenUsed; /* True if any content previously read from this pager*/
Pgno dbSize; /* Number of pages in the database */
Pgno dbOrigSize; /* dbSize before the current transaction */
Pgno dbFileSize; /* Number of pages in the database file */
@@ -40913,9 +41899,9 @@ struct Pager {
sqlite3_backup *pBackup; /* Pointer to list of ongoing backup processes */
PagerSavepoint *aSavepoint; /* Array of active savepoints */
int nSavepoint; /* Number of elements in aSavepoint[] */
+ u32 iDataVersion; /* Changes whenever database content changes */
char dbFileVers[16]; /* Changes whenever database file changes */
- u8 bUseFetch; /* True to use xFetch() */
int nMmapOut; /* Number of mmap pages currently outstanding */
sqlite3_int64 szMmap; /* Desired maximum mmap size */
PgHdr *pMmapFreelist; /* List of free mmap page headers (pDirty) */
@@ -41928,29 +42914,23 @@ static int writeMasterJournal(Pager *pPager, const char *zMaster){
}
/*
-** Find a page in the hash table given its page number. Return
-** a pointer to the page or NULL if the requested page is not
-** already in memory.
-*/
-static PgHdr *pager_lookup(Pager *pPager, Pgno pgno){
- PgHdr *p = 0; /* Return value */
-
- /* It is not possible for a call to PcacheFetch() with createFlag==0 to
- ** fail, since no attempt to allocate dynamic memory will be made.
- */
- (void)sqlite3PcacheFetch(pPager->pPCache, pgno, 0, &p);
- return p;
-}
-
-/*
** Discard the entire contents of the in-memory page-cache.
*/
static void pager_reset(Pager *pPager){
+ pPager->iDataVersion++;
sqlite3BackupRestart(pPager->pBackup);
sqlite3PcacheClear(pPager->pPCache);
}
/*
+** Return the pPager->iDataVersion value
+*/
+SQLITE_PRIVATE u32 sqlite3PagerDataVersion(Pager *pPager){
+ assert( pPager->eState>PAGER_OPEN );
+ return pPager->iDataVersion;
+}
+
+/*
** Free all structures in the Pager.aSavepoint[] array and set both
** Pager.aSavepoint and Pager.nSavepoint to zero. Close the sub-journal
** if it is open and the pager is not in exclusive mode.
@@ -42206,6 +43186,14 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
rc = SQLITE_OK;
}else{
rc = sqlite3OsTruncate(pPager->jfd, 0);
+ if( rc==SQLITE_OK && pPager->fullSync ){
+ /* Make sure the new file size is written into the inode right away.
+ ** Otherwise the journal might resurrect following a power loss and
+ ** cause the last transaction to roll back. See
+ ** https://bugzilla.mozilla.org/show_bug.cgi?id=1072773
+ */
+ rc = sqlite3OsSync(pPager->jfd, pPager->syncFlags);
+ }
}
pPager->journalOff = 0;
}else if( pPager->journalMode==PAGER_JOURNALMODE_PERSIST
@@ -42234,7 +43222,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster, int bCommit){
#ifdef SQLITE_CHECK_PAGES
sqlite3PcacheIterateDirty(pPager->pPCache, pager_set_pagehash);
if( pPager->dbSize==0 && sqlite3PcacheRefCount(pPager->pPCache)>0 ){
- PgHdr *p = pager_lookup(pPager, 1);
+ PgHdr *p = sqlite3PagerLookup(pPager, 1);
if( p ){
p->pageHash = 0;
sqlite3PagerUnrefNotNull(p);
@@ -42513,7 +43501,7 @@ static int pager_playback_one_page(
if( pagerUseWal(pPager) ){
pPg = 0;
}else{
- pPg = pager_lookup(pPager, pgno);
+ pPg = sqlite3PagerLookup(pPager, pgno);
}
assert( pPg || !MEMDB );
assert( pPager->eState!=PAGER_OPEN || pPg==0 );
@@ -42693,7 +43681,7 @@ static int pager_delmaster(Pager *pPager, const char *zMaster){
rc = sqlite3OsFileSize(pMaster, &nMasterJournal);
if( rc!=SQLITE_OK ) goto delmaster_out;
nMasterPtr = pVfs->mxPathname+1;
- zMasterJournal = sqlite3Malloc((int)nMasterJournal + nMasterPtr + 1);
+ zMasterJournal = sqlite3Malloc(nMasterJournal + nMasterPtr + 1);
if( !zMasterJournal ){
rc = SQLITE_NOMEM;
goto delmaster_out;
@@ -42762,7 +43750,7 @@ delmaster_out:
** If the file on disk is currently larger than nPage pages, then use the VFS
** xTruncate() method to truncate it.
**
-** Or, it might might be the case that the file on disk is smaller than
+** Or, it might be the case that the file on disk is smaller than
** nPage pages. Some operating system implementations can get confused if
** you try to truncate a file to some size that is larger than it
** currently is, so detect this case and write a single zero byte to
@@ -42821,7 +43809,7 @@ SQLITE_PRIVATE int sqlite3SectorSize(sqlite3_file *pFile){
/*
** Set the value of the Pager.sectorSize variable for the given
** pager based on the value returned by the xSectorSize method
-** of the open database file. The sector size will be used used
+** of the open database file. The sector size will be used
** to determine the size and alignment of journal header and
** master journal pointers within created journal files.
**
@@ -43156,7 +44144,7 @@ static int readDbPage(PgHdr *pPg, u32 iFrame){
**
** For an encrypted database, the situation is more complex: bytes
** 24..39 of the database are white noise. But the probability of
- ** white noising equaling 16 bytes of 0xff is vanishingly small so
+ ** white noise equaling 16 bytes of 0xff is vanishingly small so
** we should still be ok.
*/
memset(pPager->dbFileVers, 0xff, sizeof(pPager->dbFileVers));
@@ -43883,11 +44871,15 @@ SQLITE_PRIVATE int sqlite3PagerSetPagesize(Pager *pPager, u32 *pPageSize, int nR
if( rc==SQLITE_OK ){
pager_reset(pPager);
- pPager->dbSize = (Pgno)((nByte+pageSize-1)/pageSize);
- pPager->pageSize = pageSize;
+ rc = sqlite3PcacheSetPageSize(pPager->pPCache, pageSize);
+ }
+ if( rc==SQLITE_OK ){
sqlite3PageFree(pPager->pTmpSpace);
pPager->pTmpSpace = pNew;
- sqlite3PcacheSetPageSize(pPager->pPCache, pageSize);
+ pPager->dbSize = (Pgno)((nByte+pageSize-1)/pageSize);
+ pPager->pageSize = pageSize;
+ }else{
+ sqlite3PageFree(pNew);
}
}
@@ -44021,7 +45013,7 @@ static int pager_wait_on_lock(Pager *pPager, int locktype){
int rc; /* Return code */
/* Check that this is either a no-op (because the requested lock is
- ** already held, or one of the transistions that the busy-handler
+ ** already held), or one of the transitions that the busy-handler
** may be invoked during, according to the comment above
** sqlite3PagerSetBusyhandler().
*/
@@ -44140,7 +45132,7 @@ static int pagerAcquireMapPage(
PgHdr **ppPage /* OUT: Acquired page object */
){
PgHdr *p; /* Memory mapped page to return */
-
+
if( pPager->pMmapFreelist ){
*ppPage = p = pPager->pMmapFreelist;
pPager->pMmapFreelist = p->pDirty;
@@ -44649,8 +45641,8 @@ static int pagerStress(void *p, PgHdr *pPg){
** a rollback or by user request, respectively.
**
** Spilling is also prohibited when in an error state since that could
- ** lead to database corruption. In the current implementaton it
- ** is impossible for sqlite3PcacheFetch() to be called with createFlag==1
+ ** lead to database corruption. In the current implementation it
+ ** is impossible for sqlite3PcacheFetch() to be called with createFlag==3
** while in the error state, hence it is impossible for this routine to
** be called in the error state. Nevertheless, we include a NEVER()
** test for the error state as a safeguard against future changes.
@@ -44986,22 +45978,23 @@ act_like_temp_file:
testcase( rc!=SQLITE_OK );
}
- /* If an error occurred in either of the blocks above, free the
- ** Pager structure and close the file.
+ /* Initialize the PCache object. */
+ if( rc==SQLITE_OK ){
+ assert( nExtra<1000 );
+ nExtra = ROUND8(nExtra);
+ rc = sqlite3PcacheOpen(szPageDflt, nExtra, !memDb,
+ !memDb?pagerStress:0, (void *)pPager, pPager->pPCache);
+ }
+
+ /* If an error occurred above, free the Pager structure and close the file.
*/
if( rc!=SQLITE_OK ){
- assert( !pPager->pTmpSpace );
sqlite3OsClose(pPager->fd);
+ sqlite3PageFree(pPager->pTmpSpace);
sqlite3_free(pPager);
return rc;
}
- /* Initialize the PCache object. */
- assert( nExtra<1000 );
- nExtra = ROUND8(nExtra);
- sqlite3PcacheOpen(szPageDflt, nExtra, !memDb,
- !memDb?pagerStress:0, (void *)pPager, pPager->pPCache);
-
PAGERTRACE(("OPEN %d %s\n", FILEHANDLEID(pPager->fd), pPager->zFilename));
IOTRACE(("OPEN %p %s\n", pPager, pPager->zFilename))
@@ -45188,7 +46181,7 @@ static int hasHotJournal(Pager *pPager, int *pExists){
*pExists = (first!=0);
}else if( rc==SQLITE_CANTOPEN ){
/* If we cannot open the rollback journal file in order to see if
- ** its has a zero header, that might be due to an I/O error, or
+ ** it has a zero header, that might be due to an I/O error, or
** it might be due to the race condition described above and in
** ticket #3883. Either way, assume that the journal is hot.
** This might be a false positive. But if it is, then the
@@ -45370,16 +46363,12 @@ SQLITE_PRIVATE int sqlite3PagerSharedLock(Pager *pPager){
);
}
- if( !pPager->tempFile && (
- pPager->pBackup
- || sqlite3PcachePagecount(pPager->pPCache)>0
- || USEFETCH(pPager)
- )){
- /* The shared-lock has just been acquired on the database file
- ** and there are already pages in the cache (from a previous
- ** read or write transaction). Check to see if the database
- ** has been modified. If the database has changed, flush the
- ** cache.
+ if( !pPager->tempFile && pPager->hasBeenUsed ){
+ /* The shared-lock has just been acquired then check to
+ ** see if the database has been modified. If the database has changed,
+ ** flush the cache. The pPager->hasBeenUsed flag prevents this from
+ ** occurring on the very first access to a file, in order to save a
+ ** single unnecessary sqlite3OsRead() call at the start-up.
**
** Database changes is detected by looking at 15 bytes beginning
** at offset 24 into the file. The first 4 of these 16 bytes are
@@ -45544,13 +46533,13 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
if( pgno==0 ){
return SQLITE_CORRUPT_BKPT;
}
+ pPager->hasBeenUsed = 1;
/* If the pager is in the error state, return an error immediately.
** Otherwise, request the page from the PCache layer. */
if( pPager->errCode!=SQLITE_OK ){
rc = pPager->errCode;
}else{
-
if( bMmapOk && pagerUseWal(pPager) ){
rc = sqlite3WalFindFrame(pPager->pWal, pgno, &iFrame);
if( rc!=SQLITE_OK ) goto pager_acquire_err;
@@ -45565,7 +46554,7 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
if( rc==SQLITE_OK && pData ){
if( pPager->eState>PAGER_READER ){
- (void)sqlite3PcacheFetch(pPager->pPCache, pgno, 0, &pPg);
+ pPg = sqlite3PagerLookup(pPager, pgno);
}
if( pPg==0 ){
rc = pagerAcquireMapPage(pPager, pgno, pData, &pPg);
@@ -45583,7 +46572,16 @@ SQLITE_PRIVATE int sqlite3PagerAcquire(
}
}
- rc = sqlite3PcacheFetch(pPager->pPCache, pgno, 1, ppPage);
+ {
+ sqlite3_pcache_page *pBase;
+ pBase = sqlite3PcacheFetch(pPager->pPCache, pgno, 3);
+ if( pBase==0 ){
+ rc = sqlite3PcacheFetchStress(pPager->pPCache, pgno, &pBase);
+ if( rc!=SQLITE_OK ) goto pager_acquire_err;
+ }
+ pPg = *ppPage = sqlite3PcacheFetchFinish(pPager->pPCache, pgno, pBase);
+ if( pPg==0 ) rc = SQLITE_NOMEM;
+ }
}
if( rc!=SQLITE_OK ){
@@ -45680,13 +46678,13 @@ pager_acquire_err:
** has ever happened.
*/
SQLITE_PRIVATE DbPage *sqlite3PagerLookup(Pager *pPager, Pgno pgno){
- PgHdr *pPg = 0;
+ sqlite3_pcache_page *pPage;
assert( pPager!=0 );
assert( pgno!=0 );
assert( pPager->pPCache!=0 );
- assert( pPager->eState>=PAGER_READER && pPager->eState!=PAGER_ERROR );
- sqlite3PcacheFetch(pPager->pPCache, pgno, 0, &pPg);
- return pPg;
+ pPage = sqlite3PcacheFetch(pPager->pPCache, pgno, 0);
+ assert( pPage==0 || pPager->hasBeenUsed );
+ return sqlite3PcacheFetchFinish(pPager->pPCache, pgno, pPage);
}
/*
@@ -46023,109 +47021,120 @@ static int pager_write(PgHdr *pPg){
}
/*
-** Mark a data page as writeable. This routine must be called before
-** making changes to a page. The caller must check the return value
-** of this function and be careful not to change any page data unless
-** this routine returns SQLITE_OK.
-**
-** The difference between this function and pager_write() is that this
-** function also deals with the special case where 2 or more pages
-** fit on a single disk sector. In this case all co-resident pages
-** must have been written to the journal file before returning.
+** This is a variant of sqlite3PagerWrite() that runs when the sector size
+** is larger than the page size. SQLite makes the (reasonable) assumption that
+** all bytes of a sector are written together by hardware. Hence, all bytes of
+** a sector need to be journalled in case of a power loss in the middle of
+** a write.
**
-** If an error occurs, SQLITE_NOMEM or an IO error code is returned
-** as appropriate. Otherwise, SQLITE_OK.
+** Usually, the sector size is less than or equal to the page size, in which
+** case pages can be individually written. This routine only runs in the exceptional
+** case where the page size is smaller than the sector size.
*/
-SQLITE_PRIVATE int sqlite3PagerWrite(DbPage *pDbPage){
- int rc = SQLITE_OK;
-
- PgHdr *pPg = pDbPage;
- Pager *pPager = pPg->pPager;
+static SQLITE_NOINLINE int pagerWriteLargeSector(PgHdr *pPg){
+ int rc = SQLITE_OK; /* Return code */
+ Pgno nPageCount; /* Total number of pages in database file */
+ Pgno pg1; /* First page of the sector pPg is located on. */
+ int nPage = 0; /* Number of pages starting at pg1 to journal */
+ int ii; /* Loop counter */
+ int needSync = 0; /* True if any page has PGHDR_NEED_SYNC */
+ Pager *pPager = pPg->pPager; /* The pager that owns pPg */
+ Pgno nPagePerSector = (pPager->sectorSize/pPager->pageSize);
- assert( (pPg->flags & PGHDR_MMAP)==0 );
- assert( pPager->eState>=PAGER_WRITER_LOCKED );
- assert( pPager->eState!=PAGER_ERROR );
- assert( assert_pager_state(pPager) );
+ /* Set the doNotSpill NOSYNC bit to 1. This is because we cannot allow
+ ** a journal header to be written between the pages journaled by
+ ** this function.
+ */
+ assert( !MEMDB );
+ assert( (pPager->doNotSpill & SPILLFLAG_NOSYNC)==0 );
+ pPager->doNotSpill |= SPILLFLAG_NOSYNC;
- if( pPager->sectorSize > (u32)pPager->pageSize ){
- Pgno nPageCount; /* Total number of pages in database file */
- Pgno pg1; /* First page of the sector pPg is located on. */
- int nPage = 0; /* Number of pages starting at pg1 to journal */
- int ii; /* Loop counter */
- int needSync = 0; /* True if any page has PGHDR_NEED_SYNC */
- Pgno nPagePerSector = (pPager->sectorSize/pPager->pageSize);
-
- /* Set the doNotSpill NOSYNC bit to 1. This is because we cannot allow
- ** a journal header to be written between the pages journaled by
- ** this function.
- */
- assert( !MEMDB );
- assert( (pPager->doNotSpill & SPILLFLAG_NOSYNC)==0 );
- pPager->doNotSpill |= SPILLFLAG_NOSYNC;
+ /* This trick assumes that both the page-size and sector-size are
+ ** an integer power of 2. It sets variable pg1 to the identifier
+ ** of the first page of the sector pPg is located on.
+ */
+ pg1 = ((pPg->pgno-1) & ~(nPagePerSector-1)) + 1;
- /* This trick assumes that both the page-size and sector-size are
- ** an integer power of 2. It sets variable pg1 to the identifier
- ** of the first page of the sector pPg is located on.
- */
- pg1 = ((pPg->pgno-1) & ~(nPagePerSector-1)) + 1;
+ nPageCount = pPager->dbSize;
+ if( pPg->pgno>nPageCount ){
+ nPage = (pPg->pgno - pg1)+1;
+ }else if( (pg1+nPagePerSector-1)>nPageCount ){
+ nPage = nPageCount+1-pg1;
+ }else{
+ nPage = nPagePerSector;
+ }
+ assert(nPage>0);
+ assert(pg1<=pPg->pgno);
+ assert((pg1+nPage)>pPg->pgno);
- nPageCount = pPager->dbSize;
- if( pPg->pgno>nPageCount ){
- nPage = (pPg->pgno - pg1)+1;
- }else if( (pg1+nPagePerSector-1)>nPageCount ){
- nPage = nPageCount+1-pg1;
- }else{
- nPage = nPagePerSector;
- }
- assert(nPage>0);
- assert(pg1<=pPg->pgno);
- assert((pg1+nPage)>pPg->pgno);
-
- for(ii=0; ii<nPage && rc==SQLITE_OK; ii++){
- Pgno pg = pg1+ii;
- PgHdr *pPage;
- if( pg==pPg->pgno || !sqlite3BitvecTest(pPager->pInJournal, pg) ){
- if( pg!=PAGER_MJ_PGNO(pPager) ){
- rc = sqlite3PagerGet(pPager, pg, &pPage);
- if( rc==SQLITE_OK ){
- rc = pager_write(pPage);
- if( pPage->flags&PGHDR_NEED_SYNC ){
- needSync = 1;
- }
- sqlite3PagerUnrefNotNull(pPage);
+ for(ii=0; ii<nPage && rc==SQLITE_OK; ii++){
+ Pgno pg = pg1+ii;
+ PgHdr *pPage;
+ if( pg==pPg->pgno || !sqlite3BitvecTest(pPager->pInJournal, pg) ){
+ if( pg!=PAGER_MJ_PGNO(pPager) ){
+ rc = sqlite3PagerGet(pPager, pg, &pPage);
+ if( rc==SQLITE_OK ){
+ rc = pager_write(pPage);
+ if( pPage->flags&PGHDR_NEED_SYNC ){
+ needSync = 1;
}
+ sqlite3PagerUnrefNotNull(pPage);
}
- }else if( (pPage = pager_lookup(pPager, pg))!=0 ){
- if( pPage->flags&PGHDR_NEED_SYNC ){
- needSync = 1;
- }
- sqlite3PagerUnrefNotNull(pPage);
}
+ }else if( (pPage = sqlite3PagerLookup(pPager, pg))!=0 ){
+ if( pPage->flags&PGHDR_NEED_SYNC ){
+ needSync = 1;
+ }
+ sqlite3PagerUnrefNotNull(pPage);
}
+ }
- /* If the PGHDR_NEED_SYNC flag is set for any of the nPage pages
- ** starting at pg1, then it needs to be set for all of them. Because
- ** writing to any of these nPage pages may damage the others, the
- ** journal file must contain sync()ed copies of all of them
- ** before any of them can be written out to the database file.
- */
- if( rc==SQLITE_OK && needSync ){
- assert( !MEMDB );
- for(ii=0; ii<nPage; ii++){
- PgHdr *pPage = pager_lookup(pPager, pg1+ii);
- if( pPage ){
- pPage->flags |= PGHDR_NEED_SYNC;
- sqlite3PagerUnrefNotNull(pPage);
- }
+ /* If the PGHDR_NEED_SYNC flag is set for any of the nPage pages
+ ** starting at pg1, then it needs to be set for all of them. Because
+ ** writing to any of these nPage pages may damage the others, the
+ ** journal file must contain sync()ed copies of all of them
+ ** before any of them can be written out to the database file.
+ */
+ if( rc==SQLITE_OK && needSync ){
+ assert( !MEMDB );
+ for(ii=0; ii<nPage; ii++){
+ PgHdr *pPage = sqlite3PagerLookup(pPager, pg1+ii);
+ if( pPage ){
+ pPage->flags |= PGHDR_NEED_SYNC;
+ sqlite3PagerUnrefNotNull(pPage);
}
}
+ }
- assert( (pPager->doNotSpill & SPILLFLAG_NOSYNC)!=0 );
- pPager->doNotSpill &= ~SPILLFLAG_NOSYNC;
+ assert( (pPager->doNotSpill & SPILLFLAG_NOSYNC)!=0 );
+ pPager->doNotSpill &= ~SPILLFLAG_NOSYNC;
+ return rc;
+}
+
+/*
+** Mark a data page as writeable. This routine must be called before
+** making changes to a page. The caller must check the return value
+** of this function and be careful not to change any page data unless
+** this routine returns SQLITE_OK.
+**
+** The difference between this function and pager_write() is that this
+** function also deals with the special case where 2 or more pages
+** fit on a single disk sector. In this case all co-resident pages
+** must have been written to the journal file before returning.
+**
+** If an error occurs, SQLITE_NOMEM or an IO error code is returned
+** as appropriate. Otherwise, SQLITE_OK.
+*/
+SQLITE_PRIVATE int sqlite3PagerWrite(PgHdr *pPg){
+ assert( (pPg->flags & PGHDR_MMAP)==0 );
+ assert( pPg->pPager->eState>=PAGER_WRITER_LOCKED );
+ assert( pPg->pPager->eState!=PAGER_ERROR );
+ assert( assert_pager_state(pPg->pPager) );
+ if( pPg->pPager->sectorSize > (u32)pPg->pPager->pageSize ){
+ return pagerWriteLargeSector(pPg);
}else{
- rc = pager_write(pDbPage);
+ return pager_write(pPg);
}
- return rc;
}
/*
@@ -46541,6 +47550,7 @@ SQLITE_PRIVATE int sqlite3PagerCommitPhaseTwo(Pager *pPager){
}
PAGERTRACE(("COMMIT %d\n", PAGERID(pPager)));
+ pPager->iDataVersion++;
rc = pager_end_transaction(pPager, pPager->setMaster, 1);
return pager_error(pPager, rc);
}
@@ -47021,7 +48031,7 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
** for the page moved there.
*/
pPg->flags &= ~PGHDR_NEED_SYNC;
- pPgOld = pager_lookup(pPager, pgno);
+ pPgOld = sqlite3PagerLookup(pPager, pgno);
assert( !pPgOld || pPgOld->nRef==1 );
if( pPgOld ){
pPg->flags |= (pPgOld->flags&PGHDR_NEED_SYNC);
@@ -47082,6 +48092,18 @@ SQLITE_PRIVATE int sqlite3PagerMovepage(Pager *pPager, DbPage *pPg, Pgno pgno, i
#endif
/*
+** The page handle passed as the first argument refers to a dirty page
+** with a page number other than iNew. This function changes the page's
+** page number to iNew and sets the value of the PgHdr.flags field to
+** the value passed as the third parameter.
+*/
+SQLITE_PRIVATE void sqlite3PagerRekey(DbPage *pPg, Pgno iNew, u16 flags){
+ assert( pPg->pgno!=iNew );
+ pPg->flags = flags;
+ sqlite3PcacheMove(pPg, iNew);
+}
+
+/*
** Return a pointer to the data for the specified page.
*/
SQLITE_PRIVATE void *sqlite3PagerGetData(DbPage *pPg){
@@ -47297,7 +48319,8 @@ SQLITE_PRIVATE int sqlite3PagerCheckpoint(Pager *pPager, int eMode, int *pnLog,
int rc = SQLITE_OK;
if( pPager->pWal ){
rc = sqlite3WalCheckpoint(pPager->pWal, eMode,
- pPager->xBusyHandler, pPager->pBusyHandlerArg,
+ (eMode==SQLITE_CHECKPOINT_PASSIVE ? 0 : pPager->xBusyHandler),
+ pPager->pBusyHandlerArg,
pPager->ckptSyncFlags, pPager->pageSize, (u8 *)pPager->pTmpSpace,
pnLog, pnCkpt
);
@@ -47474,11 +48497,12 @@ SQLITE_PRIVATE int sqlite3PagerCloseWal(Pager *pPager){
** is empty, return 0.
*/
SQLITE_PRIVATE int sqlite3PagerWalFramesize(Pager *pPager){
- assert( pPager->eState==PAGER_READER );
+ assert( pPager->eState>=PAGER_READER );
return sqlite3WalFramesize(pPager->pWal);
}
#endif
+
#endif /* SQLITE_OMIT_DISKIO */
/************** End of pager.c ***********************************************/
@@ -48058,7 +49082,7 @@ static volatile WalIndexHdr *walIndexHdr(Wal *pWal){
** The argument to this macro must be of type u32. On a little-endian
** architecture, it returns the u32 value that results from interpreting
** the 4 bytes as a big-endian value. On a big-endian architecture, it
-** returns the value that would be produced by intepreting the 4 bytes
+** returns the value that would be produced by interpreting the 4 bytes
** of the input value as a little-endian integer.
*/
#define BYTESWAP32(x) ( \
@@ -48472,7 +49496,7 @@ static int walIndexAppend(Wal *pWal, u32 iFrame, u32 iPage){
assert( idx <= HASHTABLE_NSLOT/2 + 1 );
/* If this is the first entry to be added to this hash-table, zero the
- ** entire hash table and aPgno[] array before proceding.
+ ** entire hash table and aPgno[] array before proceeding.
*/
if( idx==1 ){
int nByte = (int)((u8 *)&aHash[HASHTABLE_NSLOT] - (u8 *)&aPgno[1]);
@@ -48988,7 +50012,7 @@ static void walMergesort(
** Free an iterator allocated by walIteratorInit().
*/
static void walIteratorFree(WalIterator *p){
- sqlite3ScratchFree(p);
+ sqlite3_free(p);
}
/*
@@ -49023,7 +50047,7 @@ static int walIteratorInit(Wal *pWal, WalIterator **pp){
nByte = sizeof(WalIterator)
+ (nSegment-1)*sizeof(struct WalSegment)
+ iLast*sizeof(ht_slot);
- p = (WalIterator *)sqlite3ScratchMalloc(nByte);
+ p = (WalIterator *)sqlite3_malloc(nByte);
if( !p ){
return SQLITE_NOMEM;
}
@@ -49033,7 +50057,7 @@ static int walIteratorInit(Wal *pWal, WalIterator **pp){
/* Allocate temporary space used by the merge-sort routine. This block
** of memory will be freed before this function returns.
*/
- aTmp = (ht_slot *)sqlite3ScratchMalloc(
+ aTmp = (ht_slot *)sqlite3_malloc(
sizeof(ht_slot) * (iLast>HASHTABLE_NPAGE?HASHTABLE_NPAGE:iLast)
);
if( !aTmp ){
@@ -49070,7 +50094,7 @@ static int walIteratorInit(Wal *pWal, WalIterator **pp){
p->aSegment[i].aPgno = (u32 *)aPgno;
}
}
- sqlite3ScratchFree(aTmp);
+ sqlite3_free(aTmp);
if( rc!=SQLITE_OK ){
walIteratorFree(p);
@@ -49108,6 +50132,38 @@ static int walPagesize(Wal *pWal){
}
/*
+** The following is guaranteed when this function is called:
+**
+** a) the WRITER lock is held,
+** b) the entire log file has been checkpointed, and
+** c) any existing readers are reading exclusively from the database
+** file - there are no readers that may attempt to read a frame from
+** the log file.
+**
+** This function updates the shared-memory structures so that the next
+** client to write to the database (which may be this one) does so by
+** writing frames into the start of the log file.
+**
+** The value of parameter salt1 is used as the aSalt[1] value in the
+** new wal-index header. It should be passed a pseudo-random value (i.e.
+** one obtained from sqlite3_randomness()).
+*/
+static void walRestartHdr(Wal *pWal, u32 salt1){
+ volatile WalCkptInfo *pInfo = walCkptInfo(pWal);
+ int i; /* Loop counter */
+ u32 *aSalt = pWal->hdr.aSalt; /* Big-endian salt values */
+ pWal->nCkpt++;
+ pWal->hdr.mxFrame = 0;
+ sqlite3Put4byte((u8*)&aSalt[0], 1 + sqlite3Get4byte((u8*)&aSalt[0]));
+ memcpy(&pWal->hdr.aSalt[1], &salt1, 4);
+ walIndexWriteHdr(pWal);
+ pInfo->nBackfill = 0;
+ pInfo->aReadMark[1] = 0;
+ for(i=2; i<WAL_NREADER; i++) pInfo->aReadMark[i] = READMARK_NOT_USED;
+ assert( pInfo->aReadMark[0]==0 );
+}
+
+/*
** Copy as much content as we can from the WAL back into the database file
** in response to an sqlite3_wal_checkpoint() request or the equivalent.
**
@@ -49130,7 +50186,7 @@ static int walPagesize(Wal *pWal){
** database file.
**
** This routine uses and updates the nBackfill field of the wal-index header.
-** This is the only routine tha will increase the value of nBackfill.
+** This is the only routine that will increase the value of nBackfill.
** (A WAL reset or recovery will revert nBackfill to zero, but not increase
** its value.)
**
@@ -49141,12 +50197,12 @@ static int walPagesize(Wal *pWal){
static int walCheckpoint(
Wal *pWal, /* Wal connection */
int eMode, /* One of PASSIVE, FULL or RESTART */
- int (*xBusyCall)(void*), /* Function to call when busy */
+ int (*xBusy)(void*), /* Function to call when busy */
void *pBusyArg, /* Context argument for xBusyHandler */
int sync_flags, /* Flags for OsSync() (or 0) */
u8 *zBuf /* Temporary buffer to use */
){
- int rc; /* Return code */
+ int rc = SQLITE_OK; /* Return code */
int szPage; /* Database page-size */
WalIterator *pIter = 0; /* Wal iterator context */
u32 iDbpage = 0; /* Next database page to write */
@@ -49155,123 +50211,146 @@ static int walCheckpoint(
u32 mxPage; /* Max database page to write */
int i; /* Loop counter */
volatile WalCkptInfo *pInfo; /* The checkpoint status information */
- int (*xBusy)(void*) = 0; /* Function to call when waiting for locks */
szPage = walPagesize(pWal);
testcase( szPage<=32768 );
testcase( szPage>=65536 );
pInfo = walCkptInfo(pWal);
- if( pInfo->nBackfill>=pWal->hdr.mxFrame ) return SQLITE_OK;
+ if( pInfo->nBackfill<pWal->hdr.mxFrame ){
- /* Allocate the iterator */
- rc = walIteratorInit(pWal, &pIter);
- if( rc!=SQLITE_OK ){
- return rc;
- }
- assert( pIter );
+ /* Allocate the iterator */
+ rc = walIteratorInit(pWal, &pIter);
+ if( rc!=SQLITE_OK ){
+ return rc;
+ }
+ assert( pIter );
- if( eMode!=SQLITE_CHECKPOINT_PASSIVE ) xBusy = xBusyCall;
+ /* EVIDENCE-OF: R-62920-47450 The busy-handler callback is never invoked
+ ** in the SQLITE_CHECKPOINT_PASSIVE mode. */
+ assert( eMode!=SQLITE_CHECKPOINT_PASSIVE || xBusy==0 );
- /* Compute in mxSafeFrame the index of the last frame of the WAL that is
- ** safe to write into the database. Frames beyond mxSafeFrame might
- ** overwrite database pages that are in use by active readers and thus
- ** cannot be backfilled from the WAL.
- */
- mxSafeFrame = pWal->hdr.mxFrame;
- mxPage = pWal->hdr.nPage;
- for(i=1; i<WAL_NREADER; i++){
- u32 y = pInfo->aReadMark[i];
- if( mxSafeFrame>y ){
- assert( y<=pWal->hdr.mxFrame );
- rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
- if( rc==SQLITE_OK ){
- pInfo->aReadMark[i] = (i==1 ? mxSafeFrame : READMARK_NOT_USED);
- walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
- }else if( rc==SQLITE_BUSY ){
- mxSafeFrame = y;
- xBusy = 0;
- }else{
- goto walcheckpoint_out;
+ /* Compute in mxSafeFrame the index of the last frame of the WAL that is
+ ** safe to write into the database. Frames beyond mxSafeFrame might
+ ** overwrite database pages that are in use by active readers and thus
+ ** cannot be backfilled from the WAL.
+ */
+ mxSafeFrame = pWal->hdr.mxFrame;
+ mxPage = pWal->hdr.nPage;
+ for(i=1; i<WAL_NREADER; i++){
+ u32 y = pInfo->aReadMark[i];
+ if( mxSafeFrame>y ){
+ assert( y<=pWal->hdr.mxFrame );
+ rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(i), 1);
+ if( rc==SQLITE_OK ){
+ pInfo->aReadMark[i] = (i==1 ? mxSafeFrame : READMARK_NOT_USED);
+ walUnlockExclusive(pWal, WAL_READ_LOCK(i), 1);
+ }else if( rc==SQLITE_BUSY ){
+ mxSafeFrame = y;
+ xBusy = 0;
+ }else{
+ goto walcheckpoint_out;
+ }
}
}
- }
-
- if( pInfo->nBackfill<mxSafeFrame
- && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0), 1))==SQLITE_OK
- ){
- i64 nSize; /* Current size of database file */
- u32 nBackfill = pInfo->nBackfill;
- /* Sync the WAL to disk */
- if( sync_flags ){
- rc = sqlite3OsSync(pWal->pWalFd, sync_flags);
- }
+ if( pInfo->nBackfill<mxSafeFrame
+ && (rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(0),1))==SQLITE_OK
+ ){
+ i64 nSize; /* Current size of database file */
+ u32 nBackfill = pInfo->nBackfill;
- /* If the database may grow as a result of this checkpoint, hint
- ** about the eventual size of the db file to the VFS layer.
- */
- if( rc==SQLITE_OK ){
- i64 nReq = ((i64)mxPage * szPage);
- rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
- if( rc==SQLITE_OK && nSize<nReq ){
- sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
+ /* Sync the WAL to disk */
+ if( sync_flags ){
+ rc = sqlite3OsSync(pWal->pWalFd, sync_flags);
}
- }
+ /* If the database may grow as a result of this checkpoint, hint
+ ** about the eventual size of the db file to the VFS layer.
+ */
+ if( rc==SQLITE_OK ){
+ i64 nReq = ((i64)mxPage * szPage);
+ rc = sqlite3OsFileSize(pWal->pDbFd, &nSize);
+ if( rc==SQLITE_OK && nSize<nReq ){
+ sqlite3OsFileControlHint(pWal->pDbFd, SQLITE_FCNTL_SIZE_HINT, &nReq);
+ }
+ }
- /* Iterate through the contents of the WAL, copying data to the db file. */
- while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
- i64 iOffset;
- assert( walFramePgno(pWal, iFrame)==iDbpage );
- if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ) continue;
- iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
- /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
- rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
- if( rc!=SQLITE_OK ) break;
- iOffset = (iDbpage-1)*(i64)szPage;
- testcase( IS_BIG_INT(iOffset) );
- rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
- if( rc!=SQLITE_OK ) break;
- }
- /* If work was actually accomplished... */
- if( rc==SQLITE_OK ){
- if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
- i64 szDb = pWal->hdr.nPage*(i64)szPage;
- testcase( IS_BIG_INT(szDb) );
- rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
- if( rc==SQLITE_OK && sync_flags ){
- rc = sqlite3OsSync(pWal->pDbFd, sync_flags);
+ /* Iterate through the contents of the WAL, copying data to the db file */
+ while( rc==SQLITE_OK && 0==walIteratorNext(pIter, &iDbpage, &iFrame) ){
+ i64 iOffset;
+ assert( walFramePgno(pWal, iFrame)==iDbpage );
+ if( iFrame<=nBackfill || iFrame>mxSafeFrame || iDbpage>mxPage ){
+ continue;
}
+ iOffset = walFrameOffset(iFrame, szPage) + WAL_FRAME_HDRSIZE;
+ /* testcase( IS_BIG_INT(iOffset) ); // requires a 4GiB WAL file */
+ rc = sqlite3OsRead(pWal->pWalFd, zBuf, szPage, iOffset);
+ if( rc!=SQLITE_OK ) break;
+ iOffset = (iDbpage-1)*(i64)szPage;
+ testcase( IS_BIG_INT(iOffset) );
+ rc = sqlite3OsWrite(pWal->pDbFd, zBuf, szPage, iOffset);
+ if( rc!=SQLITE_OK ) break;
}
+
+ /* If work was actually accomplished... */
if( rc==SQLITE_OK ){
- pInfo->nBackfill = mxSafeFrame;
+ if( mxSafeFrame==walIndexHdr(pWal)->mxFrame ){
+ i64 szDb = pWal->hdr.nPage*(i64)szPage;
+ testcase( IS_BIG_INT(szDb) );
+ rc = sqlite3OsTruncate(pWal->pDbFd, szDb);
+ if( rc==SQLITE_OK && sync_flags ){
+ rc = sqlite3OsSync(pWal->pDbFd, sync_flags);
+ }
+ }
+ if( rc==SQLITE_OK ){
+ pInfo->nBackfill = mxSafeFrame;
+ }
}
- }
- /* Release the reader lock held while backfilling */
- walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
- }
+ /* Release the reader lock held while backfilling */
+ walUnlockExclusive(pWal, WAL_READ_LOCK(0), 1);
+ }
- if( rc==SQLITE_BUSY ){
- /* Reset the return code so as not to report a checkpoint failure
- ** just because there are active readers. */
- rc = SQLITE_OK;
+ if( rc==SQLITE_BUSY ){
+ /* Reset the return code so as not to report a checkpoint failure
+ ** just because there are active readers. */
+ rc = SQLITE_OK;
+ }
}
- /* If this is an SQLITE_CHECKPOINT_RESTART operation, and the entire wal
- ** file has been copied into the database file, then block until all
- ** readers have finished using the wal file. This ensures that the next
- ** process to write to the database restarts the wal file.
+ /* If this is an SQLITE_CHECKPOINT_RESTART or TRUNCATE operation, and the
+ ** entire wal file has been copied into the database file, then block
+ ** until all readers have finished using the wal file. This ensures that
+ ** the next process to write to the database restarts the wal file.
*/
if( rc==SQLITE_OK && eMode!=SQLITE_CHECKPOINT_PASSIVE ){
assert( pWal->writeLock );
if( pInfo->nBackfill<pWal->hdr.mxFrame ){
rc = SQLITE_BUSY;
- }else if( eMode==SQLITE_CHECKPOINT_RESTART ){
- assert( mxSafeFrame==pWal->hdr.mxFrame );
+ }else if( eMode>=SQLITE_CHECKPOINT_RESTART ){
+ u32 salt1;
+ sqlite3_randomness(4, &salt1);
+ assert( pInfo->nBackfill==pWal->hdr.mxFrame );
rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_READ_LOCK(1), WAL_NREADER-1);
if( rc==SQLITE_OK ){
+ if( eMode==SQLITE_CHECKPOINT_TRUNCATE ){
+ /* IMPLEMENTATION-OF: R-44699-57140 This mode works the same way as
+ ** SQLITE_CHECKPOINT_RESTART with the addition that it also
+ ** truncates the log file to zero bytes just prior to a
+ ** successful return.
+ **
+ ** In theory, it might be safe to do this without updating the
+ ** wal-index header in shared memory, as all subsequent reader or
+ ** writer clients should see that the entire log file has been
+ ** checkpointed and behave accordingly. This seems unsafe though,
+ ** as it would leave the system in a state where the contents of
+ ** the wal-index header do not match the contents of the
+ ** file-system. To avoid this, update the wal-index header to
+ ** indicate that the log file contains zero valid frames. */
+ walRestartHdr(pWal, salt1);
+ rc = sqlite3OsTruncate(pWal->pWalFd, 0);
+ }
walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
}
}
@@ -49434,7 +50513,7 @@ static int walIndexTryHdr(Wal *pWal, int *pChanged){
** wal-index from the WAL before returning.
**
** Set *pChanged to 1 if the wal-index header value in pWal->hdr is
-** changed by this opertion. If pWal->hdr is unchanged, set *pChanged
+** changed by this operation. If pWal->hdr is unchanged, set *pChanged
** to 0.
**
** If the wal-index header is successfully read, return SQLITE_OK.
@@ -49638,7 +50717,7 @@ static int walTryBeginRead(Wal *pWal, int *pChanged, int useWal, int cnt){
** may have been appended to the log before READ_LOCK(0) was obtained.
** When holding READ_LOCK(0), the reader ignores the entire log file,
** which implies that the database file contains a trustworthy
- ** snapshoT. Since holding READ_LOCK(0) prevents a checkpoint from
+ ** snapshot. Since holding READ_LOCK(0) prevents a checkpoint from
** happening, this is usually correct.
**
** However, if frames have been appended to the log (or if the log
@@ -49844,7 +50923,7 @@ SQLITE_PRIVATE int sqlite3WalFindFrame(
for(iKey=walHash(pgno); aHash[iKey]; iKey=walNextHash(iKey)){
u32 iFrame = aHash[iKey] + iZero;
if( iFrame<=iLast && aPgno[aHash[iKey]]==pgno ){
- /* assert( iFrame>iRead ); -- not true if there is corruption */
+ assert( iFrame>iRead || CORRUPT_DB );
iRead = iFrame;
}
if( (nCollide--)==0 ){
@@ -50009,7 +51088,6 @@ SQLITE_PRIVATE int sqlite3WalUndo(Wal *pWal, int (*xUndo)(void *, Pgno), void *p
}
if( iMax!=pWal->hdr.mxFrame ) walCleanupHash(pWal);
}
- assert( rc==SQLITE_OK );
return rc;
}
@@ -50058,7 +51136,6 @@ SQLITE_PRIVATE int sqlite3WalSavepointUndo(Wal *pWal, u32 *aWalData){
return rc;
}
-
/*
** This function is called just before writing a set of frames to the log
** file (see sqlite3WalFrames()). It checks to see if, instead of appending
@@ -50091,20 +51168,8 @@ static int walRestartLog(Wal *pWal){
** In theory it would be Ok to update the cache of the header only
** at this point. But updating the actual wal-index header is also
** safe and means there is no special case for sqlite3WalUndo()
- ** to handle if this transaction is rolled back.
- */
- int i; /* Loop counter */
- u32 *aSalt = pWal->hdr.aSalt; /* Big-endian salt values */
-
- pWal->nCkpt++;
- pWal->hdr.mxFrame = 0;
- sqlite3Put4byte((u8*)&aSalt[0], 1 + sqlite3Get4byte((u8*)&aSalt[0]));
- aSalt[1] = salt1;
- walIndexWriteHdr(pWal);
- pInfo->nBackfill = 0;
- pInfo->aReadMark[1] = 0;
- for(i=2; i<WAL_NREADER; i++) pInfo->aReadMark[i] = READMARK_NOT_USED;
- assert( pInfo->aReadMark[0]==0 );
+ ** to handle if this transaction is rolled back. */
+ walRestartHdr(pWal, salt1);
walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
}else if( rc!=SQLITE_BUSY ){
return rc;
@@ -50306,7 +51371,7 @@ SQLITE_PRIVATE int sqlite3WalFrames(
**
** Padding and syncing only occur if this set of frames complete a
** transaction and if PRAGMA synchronous=FULL. If synchronous==NORMAL
- ** or synchonous==OFF, then no padding or syncing are needed.
+ ** or synchronous==OFF, then no padding or syncing are needed.
**
** If SQLITE_IOCAP_POWERSAFE_OVERWRITE is defined, then padding is not
** needed and only the sync is done. If padding is needed, then the
@@ -50392,7 +51457,7 @@ SQLITE_PRIVATE int sqlite3WalFrames(
*/
SQLITE_PRIVATE int sqlite3WalCheckpoint(
Wal *pWal, /* Wal connection */
- int eMode, /* PASSIVE, FULL or RESTART */
+ int eMode, /* PASSIVE, FULL, RESTART, or TRUNCATE */
int (*xBusy)(void*), /* Function to call when busy */
void *pBusyArg, /* Context argument for xBusyHandler */
int sync_flags, /* Flags to sync db file with (or 0) */
@@ -50404,29 +51469,42 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
int rc; /* Return code */
int isChanged = 0; /* True if a new wal-index header is loaded */
int eMode2 = eMode; /* Mode to pass to walCheckpoint() */
+ int (*xBusy2)(void*) = xBusy; /* Busy handler for eMode2 */
assert( pWal->ckptLock==0 );
assert( pWal->writeLock==0 );
+ /* EVIDENCE-OF: R-62920-47450 The busy-handler callback is never invoked
+ ** in the SQLITE_CHECKPOINT_PASSIVE mode. */
+ assert( eMode!=SQLITE_CHECKPOINT_PASSIVE || xBusy==0 );
+
if( pWal->readOnly ) return SQLITE_READONLY;
WALTRACE(("WAL%p: checkpoint begins\n", pWal));
+
+ /* IMPLEMENTATION-OF: R-62028-47212 All calls obtain an exclusive
+ ** "checkpoint" lock on the database file. */
rc = walLockExclusive(pWal, WAL_CKPT_LOCK, 1);
if( rc ){
- /* Usually this is SQLITE_BUSY meaning that another thread or process
- ** is already running a checkpoint, or maybe a recovery. But it might
- ** also be SQLITE_IOERR. */
+ /* EVIDENCE-OF: R-10421-19736 If any other process is running a
+ ** checkpoint operation at the same time, the lock cannot be obtained and
+ ** SQLITE_BUSY is returned.
+ ** EVIDENCE-OF: R-53820-33897 Even if there is a busy-handler configured,
+ ** it will not be invoked in this case.
+ */
+ testcase( rc==SQLITE_BUSY );
+ testcase( xBusy!=0 );
return rc;
}
pWal->ckptLock = 1;
- /* If this is a blocking-checkpoint, then obtain the write-lock as well
- ** to prevent any writers from running while the checkpoint is underway.
- ** This has to be done before the call to walIndexReadHdr() below.
+ /* IMPLEMENTATION-OF: R-59782-36818 The SQLITE_CHECKPOINT_FULL, RESTART and
+ ** TRUNCATE modes also obtain the exclusive "writer" lock on the database
+ ** file.
**
- ** If the writer lock cannot be obtained, then a passive checkpoint is
- ** run instead. Since the checkpointer is not holding the writer lock,
- ** there is no point in blocking waiting for any readers. Assuming no
- ** other error occurs, this function will return SQLITE_BUSY to the caller.
+ ** EVIDENCE-OF: R-60642-04082 If the writer lock cannot be obtained
+ ** immediately, and a busy-handler is configured, it is invoked and the
+ ** writer lock retried until either the busy-handler returns 0 or the
+ ** lock is successfully obtained.
*/
if( eMode!=SQLITE_CHECKPOINT_PASSIVE ){
rc = walBusyLock(pWal, xBusy, pBusyArg, WAL_WRITE_LOCK, 1);
@@ -50434,6 +51512,7 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
pWal->writeLock = 1;
}else if( rc==SQLITE_BUSY ){
eMode2 = SQLITE_CHECKPOINT_PASSIVE;
+ xBusy2 = 0;
rc = SQLITE_OK;
}
}
@@ -50451,7 +51530,7 @@ SQLITE_PRIVATE int sqlite3WalCheckpoint(
if( pWal->hdr.mxFrame && walPagesize(pWal)!=nBuf ){
rc = SQLITE_CORRUPT_BKPT;
}else{
- rc = walCheckpoint(pWal, eMode2, xBusy, pBusyArg, sync_flags, zBuf);
+ rc = walCheckpoint(pWal, eMode2, xBusy2, pBusyArg, sync_flags, zBuf);
}
/* If no error occurred, set the output variables. */
@@ -50609,7 +51688,7 @@ SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal){
** May you share freely, never taking more than you give.
**
*************************************************************************
-** This file implements a external (disk-based) database using BTrees.
+** This file implements an external (disk-based) database using BTrees.
** For a detailed discussion of BTrees, refer to
**
** Donald E. Knuth, THE ART OF COMPUTER PROGRAMMING, Volume 3:
@@ -50735,7 +51814,7 @@ SQLITE_PRIVATE int sqlite3WalFramesize(Wal *pWal){
**
** The flags define the format of this btree page. The leaf flag means that
** this page has no children. The zerodata flag means that this page carries
-** only keys and no data. The intkey flag means that the key is a integer
+** only keys and no data. The intkey flag means that the key is an integer
** which is stored in the key size entry of the cell header rather than in
** the payload area.
**
@@ -50872,9 +51951,10 @@ typedef struct BtLock BtLock;
struct MemPage {
u8 isInit; /* True if previously initialized. MUST BE FIRST! */
u8 nOverflow; /* Number of overflow cell bodies in aCell[] */
- u8 intKey; /* True if intkey flag is set */
- u8 leaf; /* True if leaf flag is set */
- u8 hasData; /* True if this page stores data */
+ u8 intKey; /* True if table b-trees. False for index b-trees */
+ u8 intKeyLeaf; /* True if the leaf of an intKey table */
+ u8 noPayload; /* True if internal intKey page (thus w/o data) */
+ u8 leaf; /* True if a leaf page */
u8 hdrOffset; /* 100 for page 1. 0 otherwise */
u8 childPtrSize; /* 0 if leaf==1. 4 if leaf==0 */
u8 max1bytePayload; /* min(maxLocal,127) */
@@ -50949,6 +52029,7 @@ struct Btree {
u8 locked; /* True if db currently has pBt locked */
int wantToLock; /* Number of nested calls to sqlite3BtreeEnter() */
int nBackup; /* Number of backup operations reading this btree */
+ u32 iDataVersion; /* Combines with pBt->pPager->iDataVersion */
Btree *pNext; /* List of other sharable Btrees from the same db */
Btree *pPrev; /* Back pointer of the same list */
#ifndef SQLITE_OMIT_SHARED_CACHE
@@ -51034,7 +52115,7 @@ struct BtShared {
BtLock *pLock; /* List of locks held on this shared-btree struct */
Btree *pWriter; /* Btree with currently open write transaction */
#endif
- u8 *pTmpSpace; /* BtShared.pageSize bytes of space for tmp use */
+ u8 *pTmpSpace; /* Temp space sufficient to hold a single cell */
};
/*
@@ -51055,12 +52136,10 @@ struct BtShared {
*/
typedef struct CellInfo CellInfo;
struct CellInfo {
- i64 nKey; /* The key for INTKEY tables, or number of bytes in key */
- u8 *pCell; /* Pointer to the start of cell content */
- u32 nData; /* Number of bytes of data */
- u32 nPayload; /* Total amount of payload */
- u16 nHeader; /* Size of the cell content header in bytes */
- u16 nLocal; /* Amount of payload held locally */
+ i64 nKey; /* The key for INTKEY tables, or nPayload otherwise */
+ u8 *pPayload; /* Pointer to the start of payload */
+ u32 nPayload; /* Bytes of payload */
+ u16 nLocal; /* Amount of payload held locally, not on overflow */
u16 iOverflow; /* Offset to overflow page number. Zero if no overflow */
u16 nSize; /* Size of the cell content on the main b-tree page */
};
@@ -51089,6 +52168,11 @@ struct CellInfo {
**
** Fields in this structure are accessed under the BtShared.mutex
** found at self->pBt->mutex.
+**
+** skipNext meaning:
+** eState==SKIPNEXT && skipNext>0: Next sqlite3BtreeNext() is no-op.
+** eState==SKIPNEXT && skipNext<0: Next sqlite3BtreePrevious() is no-op.
+** eState==FAULT: Cursor fault with skipNext as error code.
*/
struct BtCursor {
Btree *pBtree; /* The Btree to which this cursor belongs */
@@ -51101,7 +52185,8 @@ struct BtCursor {
void *pKey; /* Saved key that was cursor last known position */
Pgno pgnoRoot; /* The root page of this tree */
int nOvflAlloc; /* Allocated size of aOverflow[] array */
- int skipNext; /* Prev() is noop if negative. Next() is noop if positive */
+ int skipNext; /* Prev() is noop if negative. Next() is noop if positive.
+ ** Error code if eState==CURSOR_FAULT */
u8 curFlags; /* zero or more BTCF_* flags defined below */
u8 eState; /* One of the CURSOR_XXX constants (see below) */
u8 hints; /* As configured by CursorSetHints() */
@@ -51143,11 +52228,11 @@ struct BtCursor {
** seek the cursor to the saved position.
**
** CURSOR_FAULT:
-** A unrecoverable error (an I/O error or a malloc failure) has occurred
+** An unrecoverable error (an I/O error or a malloc failure) has occurred
** on a different connection that shares the BtShared cache with this
** cursor. The error has left the cache in an inconsistent state.
** Do nothing else with this cursor. Any attempt to use the cursor
-** should return the error code stored in BtCursor.skip
+** should return the error code stored in BtCursor.skipNext
*/
#define CURSOR_INVALID 0
#define CURSOR_VALID 1
@@ -51257,6 +52342,8 @@ struct IntegrityCk {
int mxErr; /* Stop accumulating errors when this reaches zero */
int nErr; /* Number of messages written to zErrMsg so far */
int mallocFailed; /* A memory allocation error has occurred */
+ const char *zPfx; /* Error message prefix */
+ int v1, v2; /* Values for up to two %d fields in zPfx */
StrAccum errMsg; /* Accumulate the error message text here */
};
@@ -51292,7 +52379,7 @@ static void lockBtreeMutex(Btree *p){
** Release the BtShared mutex associated with B-Tree handle p and
** clear the p->locked boolean.
*/
-static void unlockBtreeMutex(Btree *p){
+static void SQLITE_NOINLINE unlockBtreeMutex(Btree *p){
BtShared *pBt = p->pBt;
assert( p->locked==1 );
assert( sqlite3_mutex_held(pBt->mutex) );
@@ -51303,6 +52390,9 @@ static void unlockBtreeMutex(Btree *p){
p->locked = 0;
}
+/* Forward reference */
+static void SQLITE_NOINLINE btreeLockCarefully(Btree *p);
+
/*
** Enter a mutex on the given BTree object.
**
@@ -51320,8 +52410,6 @@ static void unlockBtreeMutex(Btree *p){
** subsequent Btrees that desire a lock.
*/
SQLITE_PRIVATE void sqlite3BtreeEnter(Btree *p){
- Btree *pLater;
-
/* Some basic sanity checking on the Btree. The list of Btrees
** connected by pNext and pPrev should be in sorted order by
** Btree.pBt value. All elements of the list should belong to
@@ -51346,9 +52434,20 @@ SQLITE_PRIVATE void sqlite3BtreeEnter(Btree *p){
if( !p->sharable ) return;
p->wantToLock++;
if( p->locked ) return;
+ btreeLockCarefully(p);
+}
+
+/* This is a helper function for sqlite3BtreeLock(). By moving
+** complex, but seldom used logic, out of sqlite3BtreeLock() and
+** into this routine, we avoid unnecessary stack pointer changes
+** and thus help the sqlite3BtreeLock() routine to run much faster
+** in the common case.
+*/
+static void SQLITE_NOINLINE btreeLockCarefully(Btree *p){
+ Btree *pLater;
/* In most cases, we should be able to acquire the lock we
- ** want without having to go throught the ascending lock
+ ** want without having to go through the ascending lock
** procedure that follows. Just be sure not to block.
*/
if( sqlite3_mutex_try(p->pBt->mutex)==SQLITE_OK ){
@@ -51378,6 +52477,7 @@ SQLITE_PRIVATE void sqlite3BtreeEnter(Btree *p){
}
}
+
/*
** Exit the recursive mutex on a Btree.
*/
@@ -51553,7 +52653,7 @@ SQLITE_PRIVATE void sqlite3BtreeEnterAll(sqlite3 *db){
** May you share freely, never taking more than you give.
**
*************************************************************************
-** This file implements a external (disk-based) database using BTrees.
+** This file implements an external (disk-based) database using BTrees.
** See the header comment on "btreeInt.h" for additional information.
** Including a description of file format and an overview of operation.
*/
@@ -52030,7 +53130,9 @@ static void invalidateIncrblobCursors(
BtShared *pBt = pBtree->pBt;
assert( sqlite3BtreeHoldsMutex(pBtree) );
for(p=pBt->pCursor; p; p=p->pNext){
- if( (p->curFlags & BTCF_Incrblob)!=0 && (isClearTable || p->info.nKey==iRow) ){
+ if( (p->curFlags & BTCF_Incrblob)!=0
+ && (isClearTable || p->info.nKey==iRow)
+ ){
p->eState = CURSOR_INVALID;
}
}
@@ -52149,7 +53251,7 @@ static int saveCursorPosition(BtCursor *pCur){
** data.
*/
if( 0==pCur->apPage[0]->intKey ){
- void *pKey = sqlite3Malloc( (int)pCur->nKey );
+ void *pKey = sqlite3Malloc( pCur->nKey );
if( pKey ){
rc = sqlite3BtreeKey(pCur, 0, (int)pCur->nKey, pKey);
if( rc==SQLITE_OK ){
@@ -52172,16 +53274,42 @@ static int saveCursorPosition(BtCursor *pCur){
return rc;
}
+/* Forward reference */
+static int SQLITE_NOINLINE saveCursorsOnList(BtCursor*,Pgno,BtCursor*);
+
/*
** Save the positions of all cursors (except pExcept) that are open on
-** the table with root-page iRoot. Usually, this is called just before cursor
-** pExcept is used to modify the table (BtreeDelete() or BtreeInsert()).
+** the table with root-page iRoot. "Saving the cursor position" means that
+** the location in the btree is remembered in such a way that it can be
+** moved back to the same spot after the btree has been modified. This
+** routine is called just before cursor pExcept is used to modify the
+** table, for example in BtreeDelete() or BtreeInsert().
+**
+** Implementation note: This routine merely checks to see if any cursors
+** need to be saved. It calls out to saveCursorsOnList() in the (unusual)
+** event that cursors are in need to being saved.
*/
static int saveAllCursors(BtShared *pBt, Pgno iRoot, BtCursor *pExcept){
BtCursor *p;
assert( sqlite3_mutex_held(pBt->mutex) );
assert( pExcept==0 || pExcept->pBt==pBt );
for(p=pBt->pCursor; p; p=p->pNext){
+ if( p!=pExcept && (0==iRoot || p->pgnoRoot==iRoot) ) break;
+ }
+ return p ? saveCursorsOnList(p, iRoot, pExcept) : SQLITE_OK;
+}
+
+/* This helper routine to saveAllCursors does the actual work of saving
+** the cursors if and when a cursor is found that actually requires saving.
+** The common case is that no cursors need to be saved, so this routine is
+** broken out from its caller to avoid unnecessary stack pointer movement.
+*/
+static int SQLITE_NOINLINE saveCursorsOnList(
+ BtCursor *p, /* The first cursor that needs saving */
+ Pgno iRoot, /* Only save cursor with this iRoot. Save all if zero */
+ BtCursor *pExcept /* Do not save this cursor */
+){
+ do{
if( p!=pExcept && (0==iRoot || p->pgnoRoot==iRoot) ){
if( p->eState==CURSOR_VALID ){
int rc = saveCursorPosition(p);
@@ -52193,7 +53321,8 @@ static int saveAllCursors(BtShared *pBt, Pgno iRoot, BtCursor *pExcept){
btreeReleaseAllCursorPages(p);
}
}
- }
+ p = p->pNext;
+ }while( p );
return SQLITE_OK;
}
@@ -52278,37 +53407,48 @@ static int btreeRestoreCursorPosition(BtCursor *pCur){
SQLITE_OK)
/*
-** Determine whether or not a cursor has moved from the position it
-** was last placed at. Cursors can move when the row they are pointing
-** at is deleted out from under them.
+** Determine whether or not a cursor has moved from the position where
+** it was last placed, or has been invalidated for any other reason.
+** Cursors can move when the row they are pointing at is deleted out
+** from under them, for example. Cursor might also move if a btree
+** is rebalanced.
+**
+** Calling this routine with a NULL cursor pointer returns false.
+**
+** Use the separate sqlite3BtreeCursorRestore() routine to restore a cursor
+** back to where it ought to be if this routine returns true.
+*/
+SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor *pCur){
+ return pCur->eState!=CURSOR_VALID;
+}
+
+/*
+** This routine restores a cursor back to its original position after it
+** has been moved by some outside activity (such as a btree rebalance or
+** a row having been deleted out from under the cursor).
**
-** This routine returns an error code if something goes wrong. The
-** integer *pHasMoved is set as follows:
+** On success, the *pDifferentRow parameter is false if the cursor is left
+** pointing at exactly the same row. *pDifferntRow is the row the cursor
+** was pointing to has been deleted, forcing the cursor to point to some
+** nearby row.
**
-** 0: The cursor is unchanged
-** 1: The cursor is still pointing at the same row, but the pointers
-** returned by sqlite3BtreeKeyFetch() or sqlite3BtreeDataFetch()
-** might now be invalid because of a balance() or other change to the
-** b-tree.
-** 2: The cursor is no longer pointing to the row. The row might have
-** been deleted out from under the cursor.
+** This routine should only be called for a cursor that just returned
+** TRUE from sqlite3BtreeCursorHasMoved().
*/
-SQLITE_PRIVATE int sqlite3BtreeCursorHasMoved(BtCursor *pCur, int *pHasMoved){
+SQLITE_PRIVATE int sqlite3BtreeCursorRestore(BtCursor *pCur, int *pDifferentRow){
int rc;
- if( pCur->eState==CURSOR_VALID ){
- *pHasMoved = 0;
- return SQLITE_OK;
- }
+ assert( pCur!=0 );
+ assert( pCur->eState!=CURSOR_VALID );
rc = restoreCursorPosition(pCur);
if( rc ){
- *pHasMoved = 2;
+ *pDifferentRow = 1;
return rc;
}
if( pCur->eState!=CURSOR_VALID || NEVER(pCur->skipNext!=0) ){
- *pHasMoved = 2;
+ *pDifferentRow = 1;
}else{
- *pHasMoved = 1;
+ *pDifferentRow = 0;
}
return SQLITE_OK;
}
@@ -52473,47 +53613,44 @@ static u8 *findOverflowCell(MemPage *pPage, int iCell){
** are two versions of this function. btreeParseCell() takes a
** cell index as the second argument and btreeParseCellPtr()
** takes a pointer to the body of the cell as its second argument.
-**
-** Within this file, the parseCell() macro can be called instead of
-** btreeParseCellPtr(). Using some compilers, this will be faster.
*/
static void btreeParseCellPtr(
MemPage *pPage, /* Page containing the cell */
u8 *pCell, /* Pointer to the cell text. */
CellInfo *pInfo /* Fill in this structure */
){
- u16 n; /* Number bytes in cell content header */
+ u8 *pIter; /* For scanning through pCell */
u32 nPayload; /* Number of bytes of cell payload */
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
-
- pInfo->pCell = pCell;
assert( pPage->leaf==0 || pPage->leaf==1 );
- n = pPage->childPtrSize;
- assert( n==4-4*pPage->leaf );
- if( pPage->intKey ){
- if( pPage->hasData ){
- assert( n==0 );
- n = getVarint32(pCell, nPayload);
- }else{
- nPayload = 0;
- }
- n += getVarint(&pCell[n], (u64*)&pInfo->nKey);
- pInfo->nData = nPayload;
+ if( pPage->intKeyLeaf ){
+ assert( pPage->childPtrSize==0 );
+ pIter = pCell + getVarint32(pCell, nPayload);
+ pIter += getVarint(pIter, (u64*)&pInfo->nKey);
+ }else if( pPage->noPayload ){
+ assert( pPage->childPtrSize==4 );
+ pInfo->nSize = 4 + getVarint(&pCell[4], (u64*)&pInfo->nKey);
+ pInfo->nPayload = 0;
+ pInfo->nLocal = 0;
+ pInfo->iOverflow = 0;
+ pInfo->pPayload = 0;
+ return;
}else{
- pInfo->nData = 0;
- n += getVarint32(&pCell[n], nPayload);
+ pIter = pCell + pPage->childPtrSize;
+ pIter += getVarint32(pIter, nPayload);
pInfo->nKey = nPayload;
}
pInfo->nPayload = nPayload;
- pInfo->nHeader = n;
+ pInfo->pPayload = pIter;
testcase( nPayload==pPage->maxLocal );
testcase( nPayload==pPage->maxLocal+1 );
- if( likely(nPayload<=pPage->maxLocal) ){
+ if( nPayload<=pPage->maxLocal ){
/* This is the (easy) common case where the entire payload fits
** on the local page. No overflow is required.
*/
- if( (pInfo->nSize = (u16)(n+nPayload))<4 ) pInfo->nSize = 4;
+ pInfo->nSize = nPayload + (u16)(pIter - pCell);
+ if( pInfo->nSize<4 ) pInfo->nSize = 4;
pInfo->nLocal = (u16)nPayload;
pInfo->iOverflow = 0;
}else{
@@ -52540,18 +53677,16 @@ static void btreeParseCellPtr(
}else{
pInfo->nLocal = (u16)minLocal;
}
- pInfo->iOverflow = (u16)(pInfo->nLocal + n);
+ pInfo->iOverflow = (u16)(&pInfo->pPayload[pInfo->nLocal] - pCell);
pInfo->nSize = pInfo->iOverflow + 4;
}
}
-#define parseCell(pPage, iCell, pInfo) \
- btreeParseCellPtr((pPage), findCell((pPage), (iCell)), (pInfo))
static void btreeParseCell(
MemPage *pPage, /* Page containing the cell */
int iCell, /* The cell index. First cell is 0 */
CellInfo *pInfo /* Fill in this structure */
){
- parseCell(pPage, iCell, pInfo);
+ btreeParseCellPtr(pPage, findCell(pPage, iCell), pInfo);
}
/*
@@ -52561,8 +53696,9 @@ static void btreeParseCell(
** the space used by the cell pointer.
*/
static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
- u8 *pIter = &pCell[pPage->childPtrSize];
- u32 nSize;
+ u8 *pIter = pCell + pPage->childPtrSize; /* For looping over bytes of pCell */
+ u8 *pEnd; /* End mark for a varint */
+ u32 nSize; /* Size value to return */
#ifdef SQLITE_DEBUG
/* The value returned by this function should always be the same as
@@ -52573,26 +53709,34 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
btreeParseCellPtr(pPage, pCell, &debuginfo);
#endif
+ if( pPage->noPayload ){
+ pEnd = &pIter[9];
+ while( (*pIter++)&0x80 && pIter<pEnd );
+ assert( pPage->childPtrSize==4 );
+ return (u16)(pIter - pCell);
+ }
+ nSize = *pIter;
+ if( nSize>=0x80 ){
+ pEnd = &pIter[9];
+ nSize &= 0x7f;
+ do{
+ nSize = (nSize<<7) | (*++pIter & 0x7f);
+ }while( *(pIter)>=0x80 && pIter<pEnd );
+ }
+ pIter++;
if( pPage->intKey ){
- u8 *pEnd;
- if( pPage->hasData ){
- pIter += getVarint32(pIter, nSize);
- }else{
- nSize = 0;
- }
-
/* pIter now points at the 64-bit integer key value, a variable length
** integer. The following block moves pIter to point at the first byte
** past the end of the key value. */
pEnd = &pIter[9];
while( (*pIter++)&0x80 && pIter<pEnd );
- }else{
- pIter += getVarint32(pIter, nSize);
}
-
testcase( nSize==pPage->maxLocal );
testcase( nSize==pPage->maxLocal+1 );
- if( nSize>pPage->maxLocal ){
+ if( nSize<=pPage->maxLocal ){
+ nSize += (u32)(pIter - pCell);
+ if( nSize<4 ) nSize = 4;
+ }else{
int minLocal = pPage->minLocal;
nSize = minLocal + (nSize - minLocal) % (pPage->pBt->usableSize - 4);
testcase( nSize==pPage->maxLocal );
@@ -52600,16 +53744,9 @@ static u16 cellSizePtr(MemPage *pPage, u8 *pCell){
if( nSize>pPage->maxLocal ){
nSize = minLocal;
}
- nSize += 4;
+ nSize += 4 + (u16)(pIter - pCell);
}
- nSize += (u32)(pIter - pCell);
-
- /* The minimum size of any cell is 4 bytes. */
- if( nSize<4 ){
- nSize = 4;
- }
-
- assert( nSize==debuginfo.nSize );
+ assert( nSize==debuginfo.nSize || CORRUPT_DB );
return (u16)nSize;
}
@@ -52632,7 +53769,6 @@ static void ptrmapPutOvflPtr(MemPage *pPage, u8 *pCell, int *pRC){
if( *pRC ) return;
assert( pCell!=0 );
btreeParseCellPtr(pPage, pCell, &info);
- assert( (info.nData+(pPage->intKey?0:info.nKey))==info.nPayload );
if( info.iOverflow ){
Pgno ovfl = get4byte(&pCell[info.iOverflow]);
ptrmapPut(pPage->pBt, ovfl, PTRMAP_OVERFLOW1, pPage->pgno, pRC);
@@ -52646,10 +53782,15 @@ static void ptrmapPutOvflPtr(MemPage *pPage, u8 *pCell, int *pRC){
** end of the page and all free space is collected into one
** big FreeBlk that occurs in between the header and cell
** pointer array and the cell content area.
+**
+** EVIDENCE-OF: R-44582-60138 SQLite may from time to time reorganize a
+** b-tree page so that there are no freeblocks or fragment bytes, all
+** unused bytes are contained in the unallocated space region, and all
+** cells are packed tightly at the end of the page.
*/
static int defragmentPage(MemPage *pPage){
int i; /* Loop counter */
- int pc; /* Address of a i-th cell */
+ int pc; /* Address of the i-th cell */
int hdr; /* Offset to the page header */
int size; /* Size of a cell */
int usableSize; /* Number of usable bytes on a page */
@@ -52658,6 +53799,7 @@ static int defragmentPage(MemPage *pPage){
int nCell; /* Number of cells on the page */
unsigned char *data; /* The page data */
unsigned char *temp; /* Temp area for cell content */
+ unsigned char *src; /* Source of content */
int iCellFirst; /* First allowable cell index */
int iCellLast; /* Last possible cell index */
@@ -52667,15 +53809,13 @@ static int defragmentPage(MemPage *pPage){
assert( pPage->pBt->usableSize <= SQLITE_MAX_PAGE_SIZE );
assert( pPage->nOverflow==0 );
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
- temp = sqlite3PagerTempSpace(pPage->pBt->pPager);
- data = pPage->aData;
+ temp = 0;
+ src = data = pPage->aData;
hdr = pPage->hdrOffset;
cellOffset = pPage->cellOffset;
nCell = pPage->nCell;
assert( nCell==get2byte(&data[hdr+3]) );
usableSize = pPage->pBt->usableSize;
- cbrk = get2byte(&data[hdr+5]);
- memcpy(&temp[cbrk], &data[cbrk], usableSize - cbrk);
cbrk = usableSize;
iCellFirst = cellOffset + 2*nCell;
iCellLast = usableSize - 4;
@@ -52694,7 +53834,7 @@ static int defragmentPage(MemPage *pPage){
}
#endif
assert( pc>=iCellFirst && pc<=iCellLast );
- size = cellSizePtr(pPage, &temp[pc]);
+ size = cellSizePtr(pPage, &src[pc]);
cbrk -= size;
#if defined(SQLITE_ENABLE_OVERSIZE_CELL_CHECK)
if( cbrk<iCellFirst ){
@@ -52708,8 +53848,16 @@ static int defragmentPage(MemPage *pPage){
assert( cbrk+size<=usableSize && cbrk>=iCellFirst );
testcase( cbrk+size==usableSize );
testcase( pc+size==usableSize );
- memcpy(&data[cbrk], &temp[pc], size);
put2byte(pAddr, cbrk);
+ if( temp==0 ){
+ int x;
+ if( cbrk==pc ) continue;
+ temp = sqlite3PagerTempSpace(pPage->pBt->pPager);
+ x = get2byte(&data[hdr+5]);
+ memcpy(&temp[x], &data[x], (cbrk+size) - x);
+ src = temp;
+ }
+ memcpy(&data[cbrk], &src[pc], size);
}
assert( cbrk>=iCellFirst );
put2byte(&data[hdr+5], cbrk);
@@ -52725,6 +53873,69 @@ static int defragmentPage(MemPage *pPage){
}
/*
+** Search the free-list on page pPg for space to store a cell nByte bytes in
+** size. If one can be found, return a pointer to the space and remove it
+** from the free-list.
+**
+** If no suitable space can be found on the free-list, return NULL.
+**
+** This function may detect corruption within pPg. If corruption is
+** detected then *pRc is set to SQLITE_CORRUPT and NULL is returned.
+**
+** If a slot of at least nByte bytes is found but cannot be used because
+** there are already at least 60 fragmented bytes on the page, return NULL.
+** In this case, if pbDefrag parameter is not NULL, set *pbDefrag to true.
+*/
+static u8 *pageFindSlot(MemPage *pPg, int nByte, int *pRc, int *pbDefrag){
+ const int hdr = pPg->hdrOffset;
+ u8 * const aData = pPg->aData;
+ int iAddr;
+ int pc;
+ int usableSize = pPg->pBt->usableSize;
+
+ for(iAddr=hdr+1; (pc = get2byte(&aData[iAddr]))>0; iAddr=pc){
+ int size; /* Size of the free slot */
+ /* EVIDENCE-OF: R-06866-39125 Freeblocks are always connected in order of
+ ** increasing offset. */
+ if( pc>usableSize-4 || pc<iAddr+4 ){
+ *pRc = SQLITE_CORRUPT_BKPT;
+ return 0;
+ }
+ /* EVIDENCE-OF: R-22710-53328 The third and fourth bytes of each
+ ** freeblock form a big-endian integer which is the size of the freeblock
+ ** in bytes, including the 4-byte header. */
+ size = get2byte(&aData[pc+2]);
+ if( size>=nByte ){
+ int x = size - nByte;
+ testcase( x==4 );
+ testcase( x==3 );
+ if( x<4 ){
+ /* EVIDENCE-OF: R-11498-58022 In a well-formed b-tree page, the total
+ ** number of bytes in fragments may not exceed 60. */
+ if( aData[hdr+7]>=60 ){
+ if( pbDefrag ) *pbDefrag = 1;
+ return 0;
+ }
+ /* Remove the slot from the free-list. Update the number of
+ ** fragmented bytes within the page. */
+ memcpy(&aData[iAddr], &aData[pc], 2);
+ aData[hdr+7] += (u8)x;
+ }else if( size+pc > usableSize ){
+ *pRc = SQLITE_CORRUPT_BKPT;
+ return 0;
+ }else{
+ /* The slot remains on the free-list. Reduce its size to account
+ ** for the portion used by the new allocation. */
+ put2byte(&aData[pc+2], x);
+ }
+ return &aData[pc + x];
+ }
+ }
+
+ return 0;
+}
+
+/*
** Allocate nByte bytes of space from within the B-Tree page passed
** as the first argument. Write into *pIdx the index into pPage->aData[]
** of the first byte of allocated space. Return either SQLITE_OK or
@@ -52740,11 +53951,9 @@ static int defragmentPage(MemPage *pPage){
static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
const int hdr = pPage->hdrOffset; /* Local cache of pPage->hdrOffset */
u8 * const data = pPage->aData; /* Local cache of pPage->aData */
- int nFrag; /* Number of fragmented bytes on pPage */
int top; /* First byte of cell content area */
+ int rc = SQLITE_OK; /* Integer return code */
int gap; /* First byte of gap between cell pointers and cell content */
- int rc; /* Integer return code */
- int usableSize; /* Usable size of the page */
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
assert( pPage->pBt );
@@ -52752,62 +53961,45 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
assert( nByte>=0 ); /* Minimum cell size is 4 */
assert( pPage->nFree>=nByte );
assert( pPage->nOverflow==0 );
- usableSize = pPage->pBt->usableSize;
- assert( nByte < usableSize-8 );
+ assert( nByte < (int)(pPage->pBt->usableSize-8) );
- nFrag = data[hdr+7];
assert( pPage->cellOffset == hdr + 12 - 4*pPage->leaf );
gap = pPage->cellOffset + 2*pPage->nCell;
+ assert( gap<=65536 );
+ /* EVIDENCE-OF: R-29356-02391 If the database uses a 65536-byte page size
+ ** and the reserved space is zero (the usual value for reserved space)
+ ** then the cell content offset of an empty page wants to be 65536.
+ ** However, that integer is too large to be stored in a 2-byte unsigned
+ ** integer, so a value of 0 is used in its place. */
top = get2byteNotZero(&data[hdr+5]);
if( gap>top ) return SQLITE_CORRUPT_BKPT;
+
+ /* If there is enough space between gap and top for one more cell pointer
+ ** array entry offset, and if the freelist is not empty, then search the
+ ** freelist looking for a free slot big enough to satisfy the request.
+ */
testcase( gap+2==top );
testcase( gap+1==top );
testcase( gap==top );
-
- if( nFrag>=60 ){
- /* Always defragment highly fragmented pages */
- rc = defragmentPage(pPage);
+ if( gap+2<=top && (data[hdr+1] || data[hdr+2]) ){
+ int bDefrag = 0;
+ u8 *pSpace = pageFindSlot(pPage, nByte, &rc, &bDefrag);
if( rc ) return rc;
- top = get2byteNotZero(&data[hdr+5]);
- }else if( gap+2<=top ){
- /* Search the freelist looking for a free slot big enough to satisfy
- ** the request. The allocation is made from the first free slot in
- ** the list that is large enough to accommodate it.
- */
- int pc, addr;
- for(addr=hdr+1; (pc = get2byte(&data[addr]))>0; addr=pc){
- int size; /* Size of the free slot */
- if( pc>usableSize-4 || pc<addr+4 ){
- return SQLITE_CORRUPT_BKPT;
- }
- size = get2byte(&data[pc+2]);
- if( size>=nByte ){
- int x = size - nByte;
- testcase( x==4 );
- testcase( x==3 );
- if( x<4 ){
- /* Remove the slot from the free-list. Update the number of
- ** fragmented bytes within the page. */
- memcpy(&data[addr], &data[pc], 2);
- data[hdr+7] = (u8)(nFrag + x);
- }else if( size+pc > usableSize ){
- return SQLITE_CORRUPT_BKPT;
- }else{
- /* The slot remains on the free-list. Reduce its size to account
- ** for the portion used by the new allocation. */
- put2byte(&data[pc+2], x);
- }
- *pIdx = pc + x;
- return SQLITE_OK;
- }
+ if( bDefrag ) goto defragment_page;
+ if( pSpace ){
+ assert( pSpace>=data && (pSpace - data)<65536 );
+ *pIdx = (int)(pSpace - data);
+ return SQLITE_OK;
}
}
- /* Check to make sure there is enough space in the gap to satisfy
- ** the allocation. If not, defragment.
+ /* The request could not be fulfilled using a freelist slot. Check
+ ** to see if defragmentation is necessary.
*/
testcase( gap+2+nByte==top );
if( gap+2+nByte>top ){
+ defragment_page:
+ assert( pPage->nCell>0 || CORRUPT_DB );
rc = defragmentPage(pPage);
if( rc ) return rc;
top = get2byteNotZero(&data[hdr+5]);
@@ -52830,90 +54022,100 @@ static int allocateSpace(MemPage *pPage, int nByte, int *pIdx){
/*
** Return a section of the pPage->aData to the freelist.
-** The first byte of the new free block is pPage->aDisk[start]
-** and the size of the block is "size" bytes.
-**
-** Most of the effort here is involved in coalesing adjacent
-** free blocks into a single big free block.
-*/
-static int freeSpace(MemPage *pPage, int start, int size){
- int addr, pbegin, hdr;
- int iLast; /* Largest possible freeblock offset */
- unsigned char *data = pPage->aData;
+** The first byte of the new free block is pPage->aData[iStart]
+** and the size of the block is iSize bytes.
+**
+** Adjacent freeblocks are coalesced.
+**
+** Note that even though the freeblock list was checked by btreeInitPage(),
+** that routine will not detect overlap between cells or freeblocks. Nor
+** does it detect cells or freeblocks that encrouch into the reserved bytes
+** at the end of the page. So do additional corruption checks inside this
+** routine and return SQLITE_CORRUPT if any problems are found.
+*/
+static int freeSpace(MemPage *pPage, u16 iStart, u16 iSize){
+ u16 iPtr; /* Address of ptr to next freeblock */
+ u16 iFreeBlk; /* Address of the next freeblock */
+ u8 hdr; /* Page header size. 0 or 100 */
+ u8 nFrag = 0; /* Reduction in fragmentation */
+ u16 iOrigSize = iSize; /* Original value of iSize */
+ u32 iLast = pPage->pBt->usableSize-4; /* Largest possible freeblock offset */
+ u32 iEnd = iStart + iSize; /* First byte past the iStart buffer */
+ unsigned char *data = pPage->aData; /* Page content */
assert( pPage->pBt!=0 );
assert( sqlite3PagerIswriteable(pPage->pDbPage) );
- assert( start>=pPage->hdrOffset+6+pPage->childPtrSize );
- assert( (start + size) <= (int)pPage->pBt->usableSize );
+ assert( iStart>=pPage->hdrOffset+6+pPage->childPtrSize );
+ assert( CORRUPT_DB || iEnd <= pPage->pBt->usableSize );
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
- assert( size>=0 ); /* Minimum cell size is 4 */
+ assert( iSize>=4 ); /* Minimum cell size is 4 */
+ assert( iStart<=iLast );
+ /* Overwrite deleted information with zeros when the secure_delete
+ ** option is enabled */
if( pPage->pBt->btsFlags & BTS_SECURE_DELETE ){
- /* Overwrite deleted information with zeros when the secure_delete
- ** option is enabled */
- memset(&data[start], 0, size);
+ memset(&data[iStart], 0, iSize);
}
- /* Add the space back into the linked list of freeblocks. Note that
- ** even though the freeblock list was checked by btreeInitPage(),
- ** btreeInitPage() did not detect overlapping cells or
- ** freeblocks that overlapped cells. Nor does it detect when the
- ** cell content area exceeds the value in the page header. If these
- ** situations arise, then subsequent insert operations might corrupt
- ** the freelist. So we do need to check for corruption while scanning
- ** the freelist.
+ /* The list of freeblocks must be in ascending order. Find the
+ ** spot on the list where iStart should be inserted.
*/
hdr = pPage->hdrOffset;
- addr = hdr + 1;
- iLast = pPage->pBt->usableSize - 4;
- assert( start<=iLast );
- while( (pbegin = get2byte(&data[addr]))<start && pbegin>0 ){
- if( pbegin<addr+4 ){
- return SQLITE_CORRUPT_BKPT;
+ iPtr = hdr + 1;
+ if( data[iPtr+1]==0 && data[iPtr]==0 ){
+ iFreeBlk = 0; /* Shortcut for the case when the freelist is empty */
+ }else{
+ while( (iFreeBlk = get2byte(&data[iPtr]))>0 && iFreeBlk<iStart ){
+ if( iFreeBlk<iPtr+4 ) return SQLITE_CORRUPT_BKPT;
+ iPtr = iFreeBlk;
}
- addr = pbegin;
- }
- if( pbegin>iLast ){
- return SQLITE_CORRUPT_BKPT;
- }
- assert( pbegin>addr || pbegin==0 );
- put2byte(&data[addr], start);
- put2byte(&data[start], pbegin);
- put2byte(&data[start+2], size);
- pPage->nFree = pPage->nFree + (u16)size;
-
- /* Coalesce adjacent free blocks */
- addr = hdr + 1;
- while( (pbegin = get2byte(&data[addr]))>0 ){
- int pnext, psize, x;
- assert( pbegin>addr );
- assert( pbegin <= (int)pPage->pBt->usableSize-4 );
- pnext = get2byte(&data[pbegin]);
- psize = get2byte(&data[pbegin+2]);
- if( pbegin + psize + 3 >= pnext && pnext>0 ){
- int frag = pnext - (pbegin+psize);
- if( (frag<0) || (frag>(int)data[hdr+7]) ){
- return SQLITE_CORRUPT_BKPT;
- }
- data[hdr+7] -= (u8)frag;
- x = get2byte(&data[pnext]);
- put2byte(&data[pbegin], x);
- x = pnext + get2byte(&data[pnext+2]) - pbegin;
- put2byte(&data[pbegin+2], x);
- }else{
- addr = pbegin;
+ if( iFreeBlk>iLast ) return SQLITE_CORRUPT_BKPT;
+ assert( iFreeBlk>iPtr || iFreeBlk==0 );
+
+ /* At this point:
+ ** iFreeBlk: First freeblock after iStart, or zero if none
+ ** iPtr: The address of a pointer iFreeBlk
+ **
+ ** Check to see if iFreeBlk should be coalesced onto the end of iStart.
+ */
+ if( iFreeBlk && iEnd+3>=iFreeBlk ){
+ nFrag = iFreeBlk - iEnd;
+ if( iEnd>iFreeBlk ) return SQLITE_CORRUPT_BKPT;
+ iEnd = iFreeBlk + get2byte(&data[iFreeBlk+2]);
+ iSize = iEnd - iStart;
+ iFreeBlk = get2byte(&data[iFreeBlk]);
}
- }
-
- /* If the cell content area begins with a freeblock, remove it. */
- if( data[hdr+1]==data[hdr+5] && data[hdr+2]==data[hdr+6] ){
- int top;
- pbegin = get2byte(&data[hdr+1]);
- memcpy(&data[hdr+1], &data[pbegin], 2);
- top = get2byte(&data[hdr+5]) + get2byte(&data[pbegin+2]);
- put2byte(&data[hdr+5], top);
- }
- assert( sqlite3PagerIswriteable(pPage->pDbPage) );
+
+ /* If iPtr is another freeblock (that is, if iPtr is not the freelist
+ ** pointer in the page header) then check to see if iStart should be
+ ** coalesced onto the end of iPtr.
+ */
+ if( iPtr>hdr+1 ){
+ int iPtrEnd = iPtr + get2byte(&data[iPtr+2]);
+ if( iPtrEnd+3>=iStart ){
+ if( iPtrEnd>iStart ) return SQLITE_CORRUPT_BKPT;
+ nFrag += iStart - iPtrEnd;
+ iSize = iEnd - iPtr;
+ iStart = iPtr;
+ }
+ }
+ if( nFrag>data[hdr+7] ) return SQLITE_CORRUPT_BKPT;
+ data[hdr+7] -= nFrag;
+ }
+ if( iStart==get2byte(&data[hdr+5]) ){
+ /* The new freeblock is at the beginning of the cell content area,
+ ** so just extend the cell content area rather than create another
+ ** freelist entry */
+ if( iPtr!=hdr+1 ) return SQLITE_CORRUPT_BKPT;
+ put2byte(&data[hdr+1], iFreeBlk);
+ put2byte(&data[hdr+5], iEnd);
+ }else{
+ /* Insert the new freeblock into the freelist */
+ put2byte(&data[iPtr], iStart);
+ put2byte(&data[iStart], iFreeBlk);
+ put2byte(&data[iStart+2], iSize);
+ }
+ pPage->nFree += iOrigSize;
return SQLITE_OK;
}
@@ -52939,16 +54141,32 @@ static int decodeFlags(MemPage *pPage, int flagByte){
pPage->childPtrSize = 4-4*pPage->leaf;
pBt = pPage->pBt;
if( flagByte==(PTF_LEAFDATA | PTF_INTKEY) ){
+ /* EVIDENCE-OF: R-03640-13415 A value of 5 means the page is an interior
+ ** table b-tree page. */
+ assert( (PTF_LEAFDATA|PTF_INTKEY)==5 );
+ /* EVIDENCE-OF: R-20501-61796 A value of 13 means the page is a leaf
+ ** table b-tree page. */
+ assert( (PTF_LEAFDATA|PTF_INTKEY|PTF_LEAF)==13 );
pPage->intKey = 1;
- pPage->hasData = pPage->leaf;
+ pPage->intKeyLeaf = pPage->leaf;
+ pPage->noPayload = !pPage->leaf;
pPage->maxLocal = pBt->maxLeaf;
pPage->minLocal = pBt->minLeaf;
}else if( flagByte==PTF_ZERODATA ){
+ /* EVIDENCE-OF: R-27225-53936 A value of 2 means the page is an interior
+ ** index b-tree page. */
+ assert( (PTF_ZERODATA)==2 );
+ /* EVIDENCE-OF: R-16571-11615 A value of 10 means the page is a leaf
+ ** index b-tree page. */
+ assert( (PTF_ZERODATA|PTF_LEAF)==10 );
pPage->intKey = 0;
- pPage->hasData = 0;
+ pPage->intKeyLeaf = 0;
+ pPage->noPayload = 0;
pPage->maxLocal = pBt->maxLocal;
pPage->minLocal = pBt->minLocal;
}else{
+ /* EVIDENCE-OF: R-47608-56469 Any other value for the b-tree page type is
+ ** an error. */
return SQLITE_CORRUPT_BKPT;
}
pPage->max1bytePayload = pBt->max1bytePayload;
@@ -52988,21 +54206,33 @@ static int btreeInitPage(MemPage *pPage){
hdr = pPage->hdrOffset;
data = pPage->aData;
+ /* EVIDENCE-OF: R-28594-02890 The one-byte flag at offset 0 indicating
+ ** the b-tree page type. */
if( decodeFlags(pPage, data[hdr]) ) return SQLITE_CORRUPT_BKPT;
assert( pBt->pageSize>=512 && pBt->pageSize<=65536 );
pPage->maskPage = (u16)(pBt->pageSize - 1);
pPage->nOverflow = 0;
usableSize = pBt->usableSize;
- pPage->cellOffset = cellOffset = hdr + 12 - 4*pPage->leaf;
+ pPage->cellOffset = cellOffset = hdr + 8 + pPage->childPtrSize;
pPage->aDataEnd = &data[usableSize];
pPage->aCellIdx = &data[cellOffset];
+ /* EVIDENCE-OF: R-58015-48175 The two-byte integer at offset 5 designates
+ ** the start of the cell content area. A zero value for this integer is
+ ** interpreted as 65536. */
top = get2byteNotZero(&data[hdr+5]);
+ /* EVIDENCE-OF: R-37002-32774 The two-byte integer at offset 3 gives the
+ ** number of cells on the page. */
pPage->nCell = get2byte(&data[hdr+3]);
if( pPage->nCell>MX_CELL(pBt) ){
/* To many cells for a single page. The page must be corrupt */
return SQLITE_CORRUPT_BKPT;
}
testcase( pPage->nCell==MX_CELL(pBt) );
+ /* EVIDENCE-OF: R-24089-57979 If a page contains no cells (which is only
+ ** possible for a root page of a table that contains no rows) then the
+ ** offset to the cell content area will equal the page size minus the
+ ** bytes of reserved space. */
+ assert( pPage->nCell>0 || top==usableSize || CORRUPT_DB );
/* A malformed database page might cause us to read past the end
** of page when parsing a cell.
@@ -53036,13 +54266,20 @@ static int btreeInitPage(MemPage *pPage){
}
#endif
- /* Compute the total free space on the page */
+ /* Compute the total free space on the page
+ ** EVIDENCE-OF: R-23588-34450 The two-byte integer at offset 1 gives the
+ ** start of the first freeblock on the page, or is zero if there are no
+ ** freeblocks. */
pc = get2byte(&data[hdr+1]);
- nFree = data[hdr+7] + top;
+ nFree = data[hdr+7] + top; /* Init nFree to non-freeblock free space */
while( pc>0 ){
u16 next, size;
if( pc<iCellFirst || pc>iCellLast ){
- /* Start of free block is off the page */
+ /* EVIDENCE-OF: R-55530-52930 In a well-formed b-tree page, there will
+ ** always be at least one cell before the first freeblock.
+ **
+ ** Or, the freeblock is off the end of the page
+ */
return SQLITE_CORRUPT_BKPT;
}
next = get2byte(&data[pc]);
@@ -53448,6 +54685,9 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
#ifdef SQLITE_SECURE_DELETE
pBt->btsFlags |= BTS_SECURE_DELETE;
#endif
+ /* EVIDENCE-OF: R-51873-39618 The page size for a database file is
+ ** determined by the 2-byte integer located at an offset of 16 bytes from
+ ** the beginning of the database file. */
pBt->pageSize = (zDbHeader[16]<<8) | (zDbHeader[17]<<16);
if( pBt->pageSize<512 || pBt->pageSize>SQLITE_MAX_PAGE_SIZE
|| ((pBt->pageSize-1)&pBt->pageSize)!=0 ){
@@ -53466,6 +54706,9 @@ SQLITE_PRIVATE int sqlite3BtreeOpen(
#endif
nReserve = 0;
}else{
+ /* EVIDENCE-OF: R-37497-42412 The size of the reserved region is
+ ** determined by the one-byte unsigned integer found at an offset of 20
+ ** into the database file header. */
nReserve = zDbHeader[20];
pBt->btsFlags |= BTS_PAGESIZE_FIXED;
#ifndef SQLITE_OMIT_AUTOVACUUM
@@ -53600,7 +54843,8 @@ static int removeFromSharingList(BtShared *pBt){
/*
** Make sure pBt->pTmpSpace points to an allocation of
-** MX_CELL_SIZE(pBt) bytes.
+** MX_CELL_SIZE(pBt) bytes with a 4-byte prefix for a left-child
+** pointer.
*/
static void allocateTempSpace(BtShared *pBt){
if( !pBt->pTmpSpace ){
@@ -53615,8 +54859,16 @@ static void allocateTempSpace(BtShared *pBt){
** it into a database page. This is not actually a problem, but it
** does cause a valgrind error when the 1 or 2 bytes of unitialized
** data is passed to system call write(). So to avoid this error,
- ** zero the first 4 bytes of temp space here. */
- if( pBt->pTmpSpace ) memset(pBt->pTmpSpace, 0, 4);
+ ** zero the first 4 bytes of temp space here.
+ **
+ ** Also: Provide four bytes of initialized space before the
+ ** beginning of pTmpSpace as an area available to prepend the
+ ** left-child pointer to the beginning of a cell.
+ */
+ if( pBt->pTmpSpace ){
+ memset(pBt->pTmpSpace, 0, 8);
+ pBt->pTmpSpace += 4;
+ }
}
}
@@ -53624,8 +54876,11 @@ static void allocateTempSpace(BtShared *pBt){
** Free the pBt->pTmpSpace allocation
*/
static void freeTempSpace(BtShared *pBt){
- sqlite3PageFree( pBt->pTmpSpace);
- pBt->pTmpSpace = 0;
+ if( pBt->pTmpSpace ){
+ pBt->pTmpSpace -= 4;
+ sqlite3PageFree(pBt->pTmpSpace);
+ pBt->pTmpSpace = 0;
+ }
}
/*
@@ -53651,7 +54906,7 @@ SQLITE_PRIVATE int sqlite3BtreeClose(Btree *p){
** The call to sqlite3BtreeRollback() drops any table-locks held by
** this handle.
*/
- sqlite3BtreeRollback(p, SQLITE_OK);
+ sqlite3BtreeRollback(p, SQLITE_OK, 0);
sqlite3BtreeLeave(p);
/* If there are still other outstanding references to the shared-btree
@@ -53963,6 +55218,9 @@ static int lockBtree(BtShared *pBt){
u32 usableSize;
u8 *page1 = pPage1->aData;
rc = SQLITE_NOTADB;
+ /* EVIDENCE-OF: R-43737-39999 Every valid SQLite database file begins
+ ** with the following 16 bytes (in hex): 53 51 4c 69 74 65 20 66 6f 72 6d
+ ** 61 74 20 33 00. */
if( memcmp(page1, zMagicHeader, 16)!=0 ){
goto page1_init_failed;
}
@@ -54003,15 +55261,21 @@ static int lockBtree(BtShared *pBt){
}
#endif
- /* The maximum embedded fraction must be exactly 25%. And the minimum
- ** embedded fraction must be 12.5% for both leaf-data and non-leaf-data.
+ /* EVIDENCE-OF: R-15465-20813 The maximum and minimum embedded payload
+ ** fractions and the leaf payload fraction values must be 64, 32, and 32.
+ **
** The original design allowed these amounts to vary, but as of
** version 3.6.0, we require them to be fixed.
*/
if( memcmp(&page1[21], "\100\040\040",3)!=0 ){
goto page1_init_failed;
}
+ /* EVIDENCE-OF: R-51873-39618 The page size for a database file is
+ ** determined by the 2-byte integer located at an offset of 16 bytes from
+ ** the beginning of the database file. */
pageSize = (page1[16]<<8) | (page1[17]<<16);
+ /* EVIDENCE-OF: R-25008-21688 The size of a page is a power of two
+ ** between 512 and 65536 inclusive. */
if( ((pageSize-1)&pageSize)!=0
|| pageSize>SQLITE_MAX_PAGE_SIZE
|| pageSize<=256
@@ -54019,6 +55283,13 @@ static int lockBtree(BtShared *pBt){
goto page1_init_failed;
}
assert( (pageSize & 7)==0 );
+ /* EVIDENCE-OF: R-59310-51205 The "reserved space" size in the 1-byte
+ ** integer at offset 20 is the number of bytes of space at the end of
+ ** each page to reserve for extensions.
+ **
+ ** EVIDENCE-OF: R-37497-42412 The size of the reserved region is
+ ** determined by the one-byte unsigned integer found at an offset of 20
+ ** into the database file header. */
usableSize = pageSize - page1[20];
if( (u32)pageSize!=pBt->pageSize ){
/* After reading the first page of the database assuming a page size
@@ -54039,6 +55310,9 @@ static int lockBtree(BtShared *pBt){
rc = SQLITE_CORRUPT_BKPT;
goto page1_init_failed;
}
+ /* EVIDENCE-OF: R-28312-64704 However, the usable size is not allowed to
+ ** be less than 480. In other words, if the page size is 512, then the
+ ** reserved space size cannot exceed 32. */
if( usableSize<480 ){
goto page1_init_failed;
}
@@ -54093,7 +55367,7 @@ page1_init_failed:
** false then all cursors are counted.
**
** For the purposes of this routine, a cursor is any cursor that
-** is capable of reading or writing to the databse. Cursors that
+** is capable of reading or writing to the database. Cursors that
** have been tripped into the CURSOR_FAULT state are not counted.
*/
static int countValidCursors(BtShared *pBt, int wrOnly){
@@ -54119,11 +55393,11 @@ static void unlockBtreeIfUnused(BtShared *pBt){
assert( sqlite3_mutex_held(pBt->mutex) );
assert( countValidCursors(pBt,0)==0 || pBt->inTransaction>TRANS_NONE );
if( pBt->inTransaction==TRANS_NONE && pBt->pPage1!=0 ){
- assert( pBt->pPage1->aData );
+ MemPage *pPage1 = pBt->pPage1;
+ assert( pPage1->aData );
assert( sqlite3PagerRefcount(pBt->pPager)==1 );
- assert( pBt->pPage1->aData );
- releasePage(pBt->pPage1);
pBt->pPage1 = 0;
+ releasePage(pPage1);
}
}
@@ -54557,7 +55831,7 @@ static int allocateBtreePage(BtShared *, MemPage **, Pgno *, Pgno, u8);
** calling this function again), return SQLITE_DONE. Or, if an error
** occurs, return some other error code.
**
-** More specificly, this function attempts to re-organize the database so
+** More specifically, this function attempts to re-organize the database so
** that the last page of the file currently in use is no longer in use.
**
** Parameter nFin is the number of pages that this database would contain
@@ -54565,7 +55839,7 @@ static int allocateBtreePage(BtShared *, MemPage **, Pgno *, Pgno, u8);
**
** If the bCommit parameter is non-zero, this function assumes that the
** caller will keep calling incrVacuumStep() until it returns SQLITE_DONE
-** or an error. bCommit is passed true for an auto-vacuum-on-commmit
+** or an error. bCommit is passed true for an auto-vacuum-on-commit
** operation, or false for an incremental vacuum.
*/
static int incrVacuumStep(BtShared *pBt, Pgno nFin, Pgno iLastPg, int bCommit){
@@ -54919,6 +56193,7 @@ SQLITE_PRIVATE int sqlite3BtreeCommitPhaseTwo(Btree *p, int bCleanup){
sqlite3BtreeLeave(p);
return rc;
}
+ p->iDataVersion--; /* Compensate for pPager->iDataVersion++; */
pBt->inTransaction = TRANS_READ;
btreeClearHasContent(pBt);
}
@@ -54944,60 +56219,91 @@ SQLITE_PRIVATE int sqlite3BtreeCommit(Btree *p){
/*
** This routine sets the state to CURSOR_FAULT and the error
-** code to errCode for every cursor on BtShared that pBtree
-** references.
-**
-** Every cursor is tripped, including cursors that belong
-** to other database connections that happen to be sharing
-** the cache with pBtree.
-**
-** This routine gets called when a rollback occurs.
-** All cursors using the same cache must be tripped
-** to prevent them from trying to use the btree after
-** the rollback. The rollback may have deleted tables
-** or moved root pages, so it is not sufficient to
-** save the state of the cursor. The cursor must be
-** invalidated.
-*/
-SQLITE_PRIVATE void sqlite3BtreeTripAllCursors(Btree *pBtree, int errCode){
+** code to errCode for every cursor on any BtShared that pBtree
+** references. Or if the writeOnly flag is set to 1, then only
+** trip write cursors and leave read cursors unchanged.
+**
+** Every cursor is a candidate to be tripped, including cursors
+** that belong to other database connections that happen to be
+** sharing the cache with pBtree.
+**
+** This routine gets called when a rollback occurs. If the writeOnly
+** flag is true, then only write-cursors need be tripped - read-only
+** cursors save their current positions so that they may continue
+** following the rollback. Or, if writeOnly is false, all cursors are
+** tripped. In general, writeOnly is false if the transaction being
+** rolled back modified the database schema. In this case b-tree root
+** pages may be moved or deleted from the database altogether, making
+** it unsafe for read cursors to continue.
+**
+** If the writeOnly flag is true and an error is encountered while
+** saving the current position of a read-only cursor, all cursors,
+** including all read-cursors are tripped.
+**
+** SQLITE_OK is returned if successful, or if an error occurs while
+** saving a cursor position, an SQLite error code.
+*/
+SQLITE_PRIVATE int sqlite3BtreeTripAllCursors(Btree *pBtree, int errCode, int writeOnly){
BtCursor *p;
- if( pBtree==0 ) return;
- sqlite3BtreeEnter(pBtree);
- for(p=pBtree->pBt->pCursor; p; p=p->pNext){
- int i;
- sqlite3BtreeClearCursor(p);
- p->eState = CURSOR_FAULT;
- p->skipNext = errCode;
- for(i=0; i<=p->iPage; i++){
- releasePage(p->apPage[i]);
- p->apPage[i] = 0;
+ int rc = SQLITE_OK;
+
+ assert( (writeOnly==0 || writeOnly==1) && BTCF_WriteFlag==1 );
+ if( pBtree ){
+ sqlite3BtreeEnter(pBtree);
+ for(p=pBtree->pBt->pCursor; p; p=p->pNext){
+ int i;
+ if( writeOnly && (p->curFlags & BTCF_WriteFlag)==0 ){
+ if( p->eState==CURSOR_VALID ){
+ rc = saveCursorPosition(p);
+ if( rc!=SQLITE_OK ){
+ (void)sqlite3BtreeTripAllCursors(pBtree, rc, 0);
+ break;
+ }
+ }
+ }else{
+ sqlite3BtreeClearCursor(p);
+ p->eState = CURSOR_FAULT;
+ p->skipNext = errCode;
+ }
+ for(i=0; i<=p->iPage; i++){
+ releasePage(p->apPage[i]);
+ p->apPage[i] = 0;
+ }
}
+ sqlite3BtreeLeave(pBtree);
}
- sqlite3BtreeLeave(pBtree);
+ return rc;
}
/*
-** Rollback the transaction in progress. All cursors will be
-** invalided by this operation. Any attempt to use a cursor
-** that was open at the beginning of this operation will result
-** in an error.
+** Rollback the transaction in progress.
+**
+** If tripCode is not SQLITE_OK then cursors will be invalidated (tripped).
+** Only write cursors are tripped if writeOnly is true but all cursors are
+** tripped if writeOnly is false. Any attempt to use
+** a tripped cursor will result in an error.
**
** This will release the write lock on the database file. If there
** are no active cursors, it also releases the read lock.
*/
-SQLITE_PRIVATE int sqlite3BtreeRollback(Btree *p, int tripCode){
+SQLITE_PRIVATE int sqlite3BtreeRollback(Btree *p, int tripCode, int writeOnly){
int rc;
BtShared *pBt = p->pBt;
MemPage *pPage1;
+ assert( writeOnly==1 || writeOnly==0 );
+ assert( tripCode==SQLITE_ABORT_ROLLBACK || tripCode==SQLITE_OK );
sqlite3BtreeEnter(p);
if( tripCode==SQLITE_OK ){
rc = tripCode = saveAllCursors(pBt, 0, 0);
+ if( rc ) writeOnly = 0;
}else{
rc = SQLITE_OK;
}
if( tripCode ){
- sqlite3BtreeTripAllCursors(p, tripCode);
+ int rc2 = sqlite3BtreeTripAllCursors(p, tripCode, writeOnly);
+ assert( rc==SQLITE_OK || (writeOnly==0 && rc2==SQLITE_OK) );
+ if( rc2!=SQLITE_OK ) rc = rc2;
}
btreeIntegrity(p);
@@ -55032,7 +56338,7 @@ SQLITE_PRIVATE int sqlite3BtreeRollback(Btree *p, int tripCode){
}
/*
-** Start a statement subtransaction. The subtransaction can can be rolled
+** Start a statement subtransaction. The subtransaction can be rolled
** back independently of the main transaction. You must start a transaction
** before starting a subtransaction. The subtransaction is ended automatically
** if the main transaction commits or rolls back.
@@ -55164,6 +56470,10 @@ static int btreeCursor(
if( NEVER(wrFlag && (pBt->btsFlags & BTS_READ_ONLY)!=0) ){
return SQLITE_READONLY;
}
+ if( wrFlag ){
+ allocateTempSpace(pBt);
+ if( pBt->pTmpSpace==0 ) return SQLITE_NOMEM;
+ }
if( iTable==1 && btreePagecount(pBt)==0 ){
assert( wrFlag==0 );
iTable = 0;
@@ -55247,7 +56557,7 @@ SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){
releasePage(pCur->apPage[i]);
}
unlockBtreeIfUnused(pBt);
- sqlite3DbFree(pBtree->db, pCur->aOverflow);
+ sqlite3_free(pCur->aOverflow);
/* sqlite3_free(pCur); */
sqlite3BtreeLeave(pBtree);
}
@@ -55266,7 +56576,7 @@ SQLITE_PRIVATE int sqlite3BtreeCloseCursor(BtCursor *pCur){
** compiler to crash when getCellInfo() is implemented as a macro.
** But there is a measureable speed advantage to using the macro on gcc
** (when less compiler optimizations like -Os or -O0 are used and the
-** compiler is not doing agressive inlining.) So we use a real function
+** compiler is not doing aggressive inlining.) So we use a real function
** for MSVC and a macro for everything else. Ticket #2457.
*/
#ifndef NDEBUG
@@ -55328,13 +56638,9 @@ SQLITE_PRIVATE int sqlite3BtreeCursorIsValid(BtCursor *pCur){
*/
SQLITE_PRIVATE int sqlite3BtreeKeySize(BtCursor *pCur, i64 *pSize){
assert( cursorHoldsMutex(pCur) );
- assert( pCur->eState==CURSOR_INVALID || pCur->eState==CURSOR_VALID );
- if( pCur->eState!=CURSOR_VALID ){
- *pSize = 0;
- }else{
- getCellInfo(pCur);
- *pSize = pCur->info.nKey;
- }
+ assert( pCur->eState==CURSOR_VALID );
+ getCellInfo(pCur);
+ *pSize = pCur->info.nKey;
return SQLITE_OK;
}
@@ -55353,8 +56659,9 @@ SQLITE_PRIVATE int sqlite3BtreeKeySize(BtCursor *pCur, i64 *pSize){
SQLITE_PRIVATE int sqlite3BtreeDataSize(BtCursor *pCur, u32 *pSize){
assert( cursorHoldsMutex(pCur) );
assert( pCur->eState==CURSOR_VALID );
+ assert( pCur->apPage[pCur->iPage]->intKeyLeaf==1 );
getCellInfo(pCur);
- *pSize = pCur->info.nData;
+ *pSize = pCur->info.nPayload;
return SQLITE_OK;
}
@@ -55483,7 +56790,7 @@ static int copyPayload(
**
** If the current cursor entry uses one or more overflow pages and the
** eOp argument is not 2, this function may allocate space for and lazily
-** popluates the overflow page-list cache array (BtCursor.aOverflow).
+** populates the overflow page-list cache array (BtCursor.aOverflow).
** Subsequent calls use this cache to make seeking to the supplied offset
** more efficient.
**
@@ -55505,30 +56812,28 @@ static int accessPayload(
){
unsigned char *aPayload;
int rc = SQLITE_OK;
- u32 nKey;
int iIdx = 0;
MemPage *pPage = pCur->apPage[pCur->iPage]; /* Btree page of current entry */
BtShared *pBt = pCur->pBt; /* Btree this cursor belongs to */
#ifdef SQLITE_DIRECT_OVERFLOW_READ
- int bEnd; /* True if reading to end of data */
+ unsigned char * const pBufStart = pBuf;
+ int bEnd; /* True if reading to end of data */
#endif
assert( pPage );
assert( pCur->eState==CURSOR_VALID );
assert( pCur->aiIdx[pCur->iPage]<pPage->nCell );
assert( cursorHoldsMutex(pCur) );
- assert( eOp!=2 || offset==0 ); /* Always start from beginning for eOp==2 */
+ assert( eOp!=2 || offset==0 ); /* Always start from beginning for eOp==2 */
getCellInfo(pCur);
- aPayload = pCur->info.pCell + pCur->info.nHeader;
- nKey = (pPage->intKey ? 0 : (int)pCur->info.nKey);
+ aPayload = pCur->info.pPayload;
#ifdef SQLITE_DIRECT_OVERFLOW_READ
- bEnd = (offset+amt==nKey+pCur->info.nData);
+ bEnd = offset+amt==pCur->info.nPayload;
#endif
+ assert( offset+amt <= pCur->info.nPayload );
- if( NEVER(offset+amt > nKey+pCur->info.nData)
- || &aPayload[pCur->info.nLocal] > &pPage->aData[pBt->usableSize]
- ){
+ if( &aPayload[pCur->info.nLocal] > &pPage->aData[pBt->usableSize] ){
/* Trying to read or write past the end of the data is an error */
return SQLITE_CORRUPT_BKPT;
}
@@ -55547,6 +56852,7 @@ static int accessPayload(
offset -= pCur->info.nLocal;
}
+
if( rc==SQLITE_OK && amt>0 ){
const u32 ovflSize = pBt->usableSize - 4; /* Bytes content per ovfl page */
Pgno nextPage;
@@ -55564,8 +56870,8 @@ static int accessPayload(
if( eOp!=2 && (pCur->curFlags & BTCF_ValidOvfl)==0 ){
int nOvfl = (pCur->info.nPayload-pCur->info.nLocal+ovflSize-1)/ovflSize;
if( nOvfl>pCur->nOvflAlloc ){
- Pgno *aNew = (Pgno*)sqlite3DbRealloc(
- pCur->pBtree->db, pCur->aOverflow, nOvfl*2*sizeof(Pgno)
+ Pgno *aNew = (Pgno*)sqlite3Realloc(
+ pCur->aOverflow, nOvfl*2*sizeof(Pgno)
);
if( aNew==0 ){
rc = SQLITE_NOMEM;
@@ -55584,7 +56890,9 @@ static int accessPayload(
** entry for the first required overflow page is valid, skip
** directly to it.
*/
- if( (pCur->curFlags & BTCF_ValidOvfl)!=0 && pCur->aOverflow[offset/ovflSize] ){
+ if( (pCur->curFlags & BTCF_ValidOvfl)!=0
+ && pCur->aOverflow[offset/ovflSize]
+ ){
iIdx = (offset/ovflSize);
nextPage = pCur->aOverflow[iIdx];
offset = (offset%ovflSize);
@@ -55610,6 +56918,7 @@ static int accessPayload(
*/
assert( eOp!=2 );
assert( pCur->curFlags & BTCF_ValidOvfl );
+ assert( pCur->pBtree->db==pBt->db );
if( pCur->aOverflow[iIdx+1] ){
nextPage = pCur->aOverflow[iIdx+1];
}else{
@@ -55637,6 +56946,7 @@ static int accessPayload(
** 4) there is no open write-transaction, and
** 5) the database is not a WAL database,
** 6) all data from the page is being read.
+ ** 7) at least 4 bytes have already been read into the output buffer
**
** then data can be read directly from the database file into the
** output buffer, bypassing the page-cache altogether. This speeds
@@ -55648,9 +56958,11 @@ static int accessPayload(
&& pBt->inTransaction==TRANS_READ /* (4) */
&& (fd = sqlite3PagerFile(pBt->pPager))->pMethods /* (3) */
&& pBt->pPage1->aData[19]==0x01 /* (5) */
+ && &pBuf[-4]>=pBufStart /* (7) */
){
u8 aSave[4];
u8 *aWrite = &pBuf[-4];
+ assert( aWrite>=pBufStart ); /* hence (7) */
memcpy(aSave, aWrite, 4);
rc = sqlite3OsRead(fd, aWrite, a+4, (i64)pBt->pageSize*(nextPage-1));
nextPage = get4byte(aWrite);
@@ -55685,7 +56997,7 @@ static int accessPayload(
/*
** Read part of the key associated with cursor pCur. Exactly
-** "amt" bytes will be transfered into pBuf[]. The transfer
+** "amt" bytes will be transferred into pBuf[]. The transfer
** begins at "offset".
**
** The caller must ensure that pCur is pointing to a valid row
@@ -55762,7 +57074,7 @@ static const void *fetchPayload(
assert( pCur->aiIdx[pCur->iPage]<pCur->apPage[pCur->iPage]->nCell );
assert( pCur->info.nSize>0 );
*pAmt = pCur->info.nLocal;
- return (void*)(pCur->info.pCell + pCur->info.nHeader);
+ return (void*)pCur->info.pPayload;
}
@@ -56005,17 +57317,16 @@ static int moveToRightmost(BtCursor *pCur){
assert( cursorHoldsMutex(pCur) );
assert( pCur->eState==CURSOR_VALID );
- while( rc==SQLITE_OK && !(pPage = pCur->apPage[pCur->iPage])->leaf ){
+ while( !(pPage = pCur->apPage[pCur->iPage])->leaf ){
pgno = get4byte(&pPage->aData[pPage->hdrOffset+8]);
pCur->aiIdx[pCur->iPage] = pPage->nCell;
rc = moveToChild(pCur, pgno);
+ if( rc ) return rc;
}
- if( rc==SQLITE_OK ){
- pCur->aiIdx[pCur->iPage] = pPage->nCell-1;
- pCur->info.nSize = 0;
- pCur->curFlags &= ~BTCF_ValidNKey;
- }
- return rc;
+ pCur->aiIdx[pCur->iPage] = pPage->nCell-1;
+ assert( pCur->info.nSize==0 );
+ assert( (pCur->curFlags & BTCF_ValidNKey)==0 );
+ return SQLITE_OK;
}
/* Move the cursor to the first entry in the table. Return SQLITE_OK
@@ -56146,7 +57457,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
if( pIdxKey ){
xRecordCompare = sqlite3VdbeFindCompare(pIdxKey);
- pIdxKey->isCorrupt = 0;
+ pIdxKey->errCode = 0;
assert( pIdxKey->default_rc==1
|| pIdxKey->default_rc==0
|| pIdxKey->default_rc==-1
@@ -56191,7 +57502,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
for(;;){
i64 nCellKey;
pCell = findCell(pPage, idx) + pPage->childPtrSize;
- if( pPage->hasData ){
+ if( pPage->intKeyLeaf ){
while( 0x80 <= *(pCell++) ){
if( pCell>=pPage->aDataEnd ) return SQLITE_CORRUPT_BKPT;
}
@@ -56239,14 +57550,14 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
** single byte varint and the record fits entirely on the main
** b-tree page. */
testcase( pCell+nCell+1==pPage->aDataEnd );
- c = xRecordCompare(nCell, (void*)&pCell[1], pIdxKey, 0);
+ c = xRecordCompare(nCell, (void*)&pCell[1], pIdxKey);
}else if( !(pCell[1] & 0x80)
&& (nCell = ((nCell&0x7f)<<7) + pCell[1])<=pPage->maxLocal
){
/* The record-size field is a 2 byte varint and the record
** fits entirely on the main b-tree page. */
testcase( pCell+nCell+2==pPage->aDataEnd );
- c = xRecordCompare(nCell, (void*)&pCell[2], pIdxKey, 0);
+ c = xRecordCompare(nCell, (void*)&pCell[2], pIdxKey);
}else{
/* The record flows over onto one or more overflow pages. In
** this case the whole cell needs to be parsed, a buffer allocated
@@ -56267,10 +57578,13 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
sqlite3_free(pCellKey);
goto moveto_finish;
}
- c = xRecordCompare(nCell, pCellKey, pIdxKey, 0);
+ c = xRecordCompare(nCell, pCellKey, pIdxKey);
sqlite3_free(pCellKey);
}
- assert( pIdxKey->isCorrupt==0 || c==0 );
+ assert(
+ (pIdxKey->errCode!=SQLITE_CORRUPT || c==0)
+ && (pIdxKey->errCode!=SQLITE_NOMEM || pCur->pBtree->db->mallocFailed)
+ );
if( c<0 ){
lwr = idx+1;
}else if( c>0 ){
@@ -56280,7 +57594,7 @@ SQLITE_PRIVATE int sqlite3BtreeMovetoUnpacked(
*pRes = 0;
rc = SQLITE_OK;
pCur->aiIdx[pCur->iPage] = (u16)idx;
- if( pIdxKey->isCorrupt ) rc = SQLITE_CORRUPT;
+ if( pIdxKey->errCode ) rc = SQLITE_CORRUPT;
goto moveto_finish;
}
if( lwr>upr ) break;
@@ -56335,6 +57649,12 @@ SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor *pCur){
** was already pointing to the last entry in the database before
** this routine was called, then set *pRes=1.
**
+** The main entry point is sqlite3BtreeNext(). That routine is optimized
+** for the common case of merely incrementing the cell counter BtCursor.aiIdx
+** to the next cell on the current page. The (slower) btreeNext() helper
+** routine is called when it is necessary to move to a different page or
+** to restore the cursor.
+**
** The calling function will set *pRes to 0 or 1. The initial *pRes value
** will be 1 if the cursor being stepped corresponds to an SQL index and
** if this routine could have been skipped if that SQL index had been
@@ -56344,20 +57664,18 @@ SQLITE_PRIVATE int sqlite3BtreeEof(BtCursor *pCur){
** SQLite btree implementation does not. (Note that the comdb2 btree
** implementation does use this hint, however.)
*/
-SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
+static SQLITE_NOINLINE int btreeNext(BtCursor *pCur, int *pRes){
int rc;
int idx;
MemPage *pPage;
assert( cursorHoldsMutex(pCur) );
- assert( pRes!=0 );
- assert( *pRes==0 || *pRes==1 );
assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
+ assert( *pRes==0 );
if( pCur->eState!=CURSOR_VALID ){
- invalidateOverflowCache(pCur);
+ assert( (pCur->curFlags & BTCF_ValidOvfl)==0 );
rc = restoreCursorPosition(pCur);
if( rc!=SQLITE_OK ){
- *pRes = 0;
return rc;
}
if( CURSOR_INVALID==pCur->eState ){
@@ -56369,7 +57687,6 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
pCur->eState = CURSOR_VALID;
if( pCur->skipNext>0 ){
pCur->skipNext = 0;
- *pRes = 0;
return SQLITE_OK;
}
pCur->skipNext = 0;
@@ -56387,18 +57704,11 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
** page into more than one b-tree structure. */
testcase( idx>pPage->nCell );
- pCur->info.nSize = 0;
- pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl);
if( idx>=pPage->nCell ){
if( !pPage->leaf ){
rc = moveToChild(pCur, get4byte(&pPage->aData[pPage->hdrOffset+8]));
- if( rc ){
- *pRes = 0;
- return rc;
- }
- rc = moveToLeftmost(pCur);
- *pRes = 0;
- return rc;
+ if( rc ) return rc;
+ return moveToLeftmost(pCur);
}
do{
if( pCur->iPage==0 ){
@@ -56409,29 +57719,52 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
moveToParent(pCur);
pPage = pCur->apPage[pCur->iPage];
}while( pCur->aiIdx[pCur->iPage]>=pPage->nCell );
- *pRes = 0;
if( pPage->intKey ){
- rc = sqlite3BtreeNext(pCur, pRes);
+ return sqlite3BtreeNext(pCur, pRes);
}else{
- rc = SQLITE_OK;
+ return SQLITE_OK;
}
- return rc;
}
+ if( pPage->leaf ){
+ return SQLITE_OK;
+ }else{
+ return moveToLeftmost(pCur);
+ }
+}
+SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
+ MemPage *pPage;
+ assert( cursorHoldsMutex(pCur) );
+ assert( pRes!=0 );
+ assert( *pRes==0 || *pRes==1 );
+ assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
+ pCur->info.nSize = 0;
+ pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl);
*pRes = 0;
+ if( pCur->eState!=CURSOR_VALID ) return btreeNext(pCur, pRes);
+ pPage = pCur->apPage[pCur->iPage];
+ if( (++pCur->aiIdx[pCur->iPage])>=pPage->nCell ){
+ pCur->aiIdx[pCur->iPage]--;
+ return btreeNext(pCur, pRes);
+ }
if( pPage->leaf ){
return SQLITE_OK;
+ }else{
+ return moveToLeftmost(pCur);
}
- rc = moveToLeftmost(pCur);
- return rc;
}
-
/*
** Step the cursor to the back to the previous entry in the database. If
** successful then set *pRes=0. If the cursor
** was already pointing to the first entry in the database before
** this routine was called, then set *pRes=1.
**
+** The main entry point is sqlite3BtreePrevious(). That routine is optimized
+** for the common case of merely decrementing the cell counter BtCursor.aiIdx
+** to the previous cell on the current page. The (slower) btreePrevious()
+** helper routine is called when it is necessary to move to a different page
+** or to restore the cursor.
+**
** The calling function will set *pRes to 0 or 1. The initial *pRes value
** will be 1 if the cursor being stepped corresponds to an SQL index and
** if this routine could have been skipped if that SQL index had been
@@ -56441,22 +57774,20 @@ SQLITE_PRIVATE int sqlite3BtreeNext(BtCursor *pCur, int *pRes){
** SQLite btree implementation does not. (Note that the comdb2 btree
** implementation does use this hint, however.)
*/
-SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
+static SQLITE_NOINLINE int btreePrevious(BtCursor *pCur, int *pRes){
int rc;
MemPage *pPage;
assert( cursorHoldsMutex(pCur) );
assert( pRes!=0 );
- assert( *pRes==0 || *pRes==1 );
+ assert( *pRes==0 );
assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
- pCur->curFlags &= ~(BTCF_AtLast|BTCF_ValidOvfl);
+ assert( (pCur->curFlags & (BTCF_AtLast|BTCF_ValidOvfl|BTCF_ValidNKey))==0 );
+ assert( pCur->info.nSize==0 );
if( pCur->eState!=CURSOR_VALID ){
- if( ALWAYS(pCur->eState>=CURSOR_REQUIRESEEK) ){
- rc = btreeRestoreCursorPosition(pCur);
- if( rc!=SQLITE_OK ){
- *pRes = 0;
- return rc;
- }
+ rc = restoreCursorPosition(pCur);
+ if( rc!=SQLITE_OK ){
+ return rc;
}
if( CURSOR_INVALID==pCur->eState ){
*pRes = 1;
@@ -56467,7 +57798,6 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
pCur->eState = CURSOR_VALID;
if( pCur->skipNext<0 ){
pCur->skipNext = 0;
- *pRes = 0;
return SQLITE_OK;
}
pCur->skipNext = 0;
@@ -56479,10 +57809,7 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
if( !pPage->leaf ){
int idx = pCur->aiIdx[pCur->iPage];
rc = moveToChild(pCur, get4byte(findCell(pPage, idx)));
- if( rc ){
- *pRes = 0;
- return rc;
- }
+ if( rc ) return rc;
rc = moveToRightmost(pCur);
}else{
while( pCur->aiIdx[pCur->iPage]==0 ){
@@ -56493,8 +57820,8 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
}
moveToParent(pCur);
}
- pCur->info.nSize = 0;
- pCur->curFlags &= ~(BTCF_ValidNKey|BTCF_ValidOvfl);
+ assert( pCur->info.nSize==0 );
+ assert( (pCur->curFlags & (BTCF_ValidNKey|BTCF_ValidOvfl))==0 );
pCur->aiIdx[pCur->iPage]--;
pPage = pCur->apPage[pCur->iPage];
@@ -56504,9 +57831,25 @@ SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
rc = SQLITE_OK;
}
}
- *pRes = 0;
return rc;
}
+SQLITE_PRIVATE int sqlite3BtreePrevious(BtCursor *pCur, int *pRes){
+ assert( cursorHoldsMutex(pCur) );
+ assert( pRes!=0 );
+ assert( *pRes==0 || *pRes==1 );
+ assert( pCur->skipNext==0 || pCur->eState!=CURSOR_VALID );
+ *pRes = 0;
+ pCur->curFlags &= ~(BTCF_AtLast|BTCF_ValidOvfl|BTCF_ValidNKey);
+ pCur->info.nSize = 0;
+ if( pCur->eState!=CURSOR_VALID
+ || pCur->aiIdx[pCur->iPage]==0
+ || pCur->apPage[pCur->iPage]->leaf==0
+ ){
+ return btreePrevious(pCur, pRes);
+ }
+ pCur->aiIdx[pCur->iPage]--;
+ return SQLITE_OK;
+}
/*
** Allocate a new page from the database file.
@@ -56550,6 +57893,8 @@ static int allocateBtreePage(
assert( eMode==BTALLOC_ANY || (nearby>0 && IfNotOmitAV(pBt->autoVacuum)) );
pPage1 = pBt->pPage1;
mxPage = btreePagecount(pBt);
+ /* EVIDENCE-OF: R-05119-02637 The 4-byte big-endian integer at offset 36
+ ** stores stores the total number of pages on the freelist. */
n = get4byte(&pPage1->aData[36]);
testcase( n==mxPage-1 );
if( n>=mxPage ){
@@ -56596,8 +57941,14 @@ static int allocateBtreePage(
do {
pPrevTrunk = pTrunk;
if( pPrevTrunk ){
+ /* EVIDENCE-OF: R-01506-11053 The first integer on a freelist trunk page
+ ** is the page number of the next freelist trunk page in the list or
+ ** zero if this is the last freelist trunk page. */
iTrunk = get4byte(&pPrevTrunk->aData[0]);
}else{
+ /* EVIDENCE-OF: R-59841-13798 The 4-byte big-endian integer at offset 32
+ ** stores the page number of the first page of the freelist, or zero if
+ ** the freelist is empty. */
iTrunk = get4byte(&pPage1->aData[32]);
}
testcase( iTrunk==mxPage );
@@ -56612,8 +57963,9 @@ static int allocateBtreePage(
}
assert( pTrunk!=0 );
assert( pTrunk->aData!=0 );
-
- k = get4byte(&pTrunk->aData[4]); /* # of leaves on this trunk page */
+ /* EVIDENCE-OF: R-13523-04394 The second integer on a freelist trunk page
+ ** is the number of leaf page pointers to follow. */
+ k = get4byte(&pTrunk->aData[4]);
if( k==0 && !searchList ){
/* The trunk has no leaves and the list is not being searched.
** So extract the trunk page itself and use it as the newly
@@ -56747,7 +58099,7 @@ static int allocateBtreePage(
memcpy(&aData[8+closest*4], &aData[4+k*4], 4);
}
put4byte(&aData[4], k-1);
- noContent = !btreeGetHasContent(pBt, *pPgno) ? PAGER_GET_NOCONTENT : 0;
+ noContent = !btreeGetHasContent(pBt, *pPgno)? PAGER_GET_NOCONTENT : 0;
rc = btreeGetPage(pBt, *pPgno, ppPage, noContent);
if( rc==SQLITE_OK ){
rc = sqlite3PagerWrite((*ppPage)->pDbPage);
@@ -56780,7 +58132,7 @@ static int allocateBtreePage(
** here are confined to those pages that lie between the end of the
** database image and the end of the database file.
*/
- int bNoContent = (0==IfNotOmitAV(pBt->bDoTruncate)) ? PAGER_GET_NOCONTENT : 0;
+ int bNoContent = (0==IfNotOmitAV(pBt->bDoTruncate))? PAGER_GET_NOCONTENT:0;
rc = sqlite3PagerWrite(pBt->pPage1->pDbPage);
if( rc ) return rc;
@@ -56931,6 +58283,11 @@ static int freePage2(BtShared *pBt, MemPage *pMemPage, Pgno iPage){
** for now. At some point in the future (once everyone has upgraded
** to 3.6.0 or later) we should consider fixing the conditional above
** to read "usableSize/4-2" instead of "usableSize/4-8".
+ **
+ ** EVIDENCE-OF: R-19920-11576 However, newer versions of SQLite still
+ ** avoid using the last six entries in the freelist trunk page array in
+ ** order that database files created by newer versions of SQLite can be
+ ** read by older versions of SQLite.
*/
rc = sqlite3PagerWrite(pTrunk->pDbPage);
if( rc==SQLITE_OK ){
@@ -56979,9 +58336,15 @@ static void freePage(MemPage *pPage, int *pRC){
}
/*
-** Free any overflow pages associated with the given Cell.
+** Free any overflow pages associated with the given Cell. Write the
+** local Cell size (the number of bytes on the original page, omitting
+** overflow) into *pnSize.
*/
-static int clearCell(MemPage *pPage, unsigned char *pCell){
+static int clearCell(
+ MemPage *pPage, /* The page that contains the Cell */
+ unsigned char *pCell, /* First byte of the Cell */
+ u16 *pnSize /* Write the size of the Cell here */
+){
BtShared *pBt = pPage->pBt;
CellInfo info;
Pgno ovflPgno;
@@ -56991,6 +58354,7 @@ static int clearCell(MemPage *pPage, unsigned char *pCell){
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
btreeParseCellPtr(pPage, pCell, &info);
+ *pnSize = info.nSize;
if( info.iOverflow==0 ){
return SQLITE_OK; /* No overflow pages. Return without doing anything */
}
@@ -57074,7 +58438,6 @@ static int fillInCell(
BtShared *pBt = pPage->pBt;
Pgno pgnoOvfl = 0;
int nHeader;
- CellInfo info;
assert( sqlite3_mutex_held(pPage->pBt->mutex) );
@@ -57084,23 +58447,17 @@ static int fillInCell(
|| sqlite3PagerIswriteable(pPage->pDbPage) );
/* Fill in the header. */
- nHeader = 0;
- if( !pPage->leaf ){
- nHeader += 4;
- }
- if( pPage->hasData ){
- nHeader += putVarint32(&pCell[nHeader], nData+nZero);
+ nHeader = pPage->childPtrSize;
+ nPayload = nData + nZero;
+ if( pPage->intKeyLeaf ){
+ nHeader += putVarint32(&pCell[nHeader], nPayload);
}else{
- nData = nZero = 0;
+ assert( nData==0 );
+ assert( nZero==0 );
}
nHeader += putVarint(&pCell[nHeader], *(u64*)&nKey);
- btreeParseCellPtr(pPage, pCell, &info);
- assert( info.nHeader==nHeader );
- assert( info.nKey==nKey );
- assert( info.nData==(u32)(nData+nZero) );
- /* Fill in the payload */
- nPayload = nData + nZero;
+ /* Fill in the payload size */
if( pPage->intKey ){
pSrc = pData;
nSrc = nData;
@@ -57109,15 +58466,55 @@ static int fillInCell(
if( NEVER(nKey>0x7fffffff || pKey==0) ){
return SQLITE_CORRUPT_BKPT;
}
- nPayload += (int)nKey;
+ nPayload = (int)nKey;
pSrc = pKey;
nSrc = (int)nKey;
}
- *pnSize = info.nSize;
- spaceLeft = info.nLocal;
+ if( nPayload<=pPage->maxLocal ){
+ n = nHeader + nPayload;
+ testcase( n==3 );
+ testcase( n==4 );
+ if( n<4 ) n = 4;
+ *pnSize = n;
+ spaceLeft = nPayload;
+ pPrior = pCell;
+ }else{
+ int mn = pPage->minLocal;
+ n = mn + (nPayload - mn) % (pPage->pBt->usableSize - 4);
+ testcase( n==pPage->maxLocal );
+ testcase( n==pPage->maxLocal+1 );
+ if( n > pPage->maxLocal ) n = mn;
+ spaceLeft = n;
+ *pnSize = n + nHeader + 4;
+ pPrior = &pCell[nHeader+n];
+ }
pPayload = &pCell[nHeader];
- pPrior = &pCell[info.iOverflow];
+ /* At this point variables should be set as follows:
+ **
+ ** nPayload Total payload size in bytes
+ ** pPayload Begin writing payload here
+ ** spaceLeft Space available at pPayload. If nPayload>spaceLeft,
+ ** that means content must spill into overflow pages.
+ ** *pnSize Size of the local cell (not counting overflow pages)
+ ** pPrior Where to write the pgno of the first overflow page
+ **
+ ** Use a call to btreeParseCellPtr() to verify that the values above
+ ** were computed correctly.
+ */
+#if SQLITE_DEBUG
+ {
+ CellInfo info;
+ btreeParseCellPtr(pPage, pCell, &info);
+ assert( nHeader=(int)(info.pPayload - pCell) );
+ assert( info.nKey==nKey );
+ assert( *pnSize == info.nSize );
+ assert( spaceLeft == info.nLocal );
+ assert( pPrior == &pCell[info.iOverflow] );
+ }
+#endif
+
+ /* Write the payload into the local Cell and any extra into overflow pages */
while( nPayload>0 ){
if( spaceLeft==0 ){
#ifndef SQLITE_OMIT_AUTOVACUUM
@@ -57242,9 +58639,17 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
return;
}
pPage->nCell--;
- memmove(ptr, ptr+2, 2*(pPage->nCell - idx));
- put2byte(&data[hdr+3], pPage->nCell);
- pPage->nFree += 2;
+ if( pPage->nCell==0 ){
+ memset(&data[hdr+1], 0, 4);
+ data[hdr+7] = 0;
+ put2byte(&data[hdr+5], pPage->pBt->usableSize);
+ pPage->nFree = pPage->pBt->usableSize - pPage->hdrOffset
+ - pPage->childPtrSize - 8;
+ }else{
+ memmove(ptr, ptr+2, 2*(pPage->nCell - idx));
+ put2byte(&data[hdr+3], pPage->nCell);
+ pPage->nFree += 2;
+ }
}
/*
@@ -57258,11 +58663,6 @@ static void dropCell(MemPage *pPage, int idx, int sz, int *pRC){
** in pTemp or the original pCell) and also record its index.
** Allocating a new entry in pPage->aCell[] implies that
** pPage->nOverflow is incremented.
-**
-** If nSkip is non-zero, then do not copy the first nSkip bytes of the
-** cell. The caller will overwrite them after this function returns. If
-** nSkip is non-zero, then pCell may not point to an invalid memory location
-** (but pCell+nSkip is always valid).
*/
static void insertCell(
MemPage *pPage, /* Page into which we are copying */
@@ -57279,7 +58679,6 @@ static void insertCell(
int ins; /* Index in data[] where new cell pointer is inserted */
int cellOffset; /* Address of first cell pointer in data[] */
u8 *data; /* The content of the whole page */
- int nSkip = (iChild ? 4 : 0);
if( *pRC ) return;
@@ -57297,7 +58696,7 @@ static void insertCell(
assert( sz==cellSizePtr(pPage, pCell) || (sz==8 && iChild>0) );
if( pPage->nOverflow || sz+2>pPage->nFree ){
if( pTemp ){
- memcpy(pTemp+nSkip, pCell+nSkip, sz-nSkip);
+ memcpy(pTemp, pCell, sz);
pCell = pTemp;
}
if( iChild ){
@@ -57326,7 +58725,7 @@ static void insertCell(
assert( idx+sz <= (int)pPage->pBt->usableSize );
pPage->nCell++;
pPage->nFree -= (u16)(2 + sz);
- memcpy(&data[idx+nSkip], pCell+nSkip, sz-nSkip);
+ memcpy(&data[idx], pCell, sz);
if( iChild ){
put4byte(&data[idx], iChild);
}
@@ -57345,45 +58744,271 @@ static void insertCell(
}
/*
-** Add a list of cells to a page. The page should be initially empty.
-** The cells are guaranteed to fit on the page.
+** Array apCell[] contains pointers to nCell b-tree page cells. The
+** szCell[] array contains the size in bytes of each cell. This function
+** replaces the current contents of page pPg with the contents of the cell
+** array.
+**
+** Some of the cells in apCell[] may currently be stored in pPg. This
+** function works around problems caused by this by making a copy of any
+** such cells before overwriting the page data.
+**
+** The MemPage.nFree field is invalidated by this function. It is the
+** responsibility of the caller to set it correctly.
*/
-static void assemblePage(
- MemPage *pPage, /* The page to be assemblied */
- int nCell, /* The number of cells to add to this page */
- u8 **apCell, /* Pointers to cell bodies */
- u16 *aSize /* Sizes of the cells */
+static void rebuildPage(
+ MemPage *pPg, /* Edit this page */
+ int nCell, /* Final number of cells on page */
+ u8 **apCell, /* Array of cells */
+ u16 *szCell /* Array of cell sizes */
){
- int i; /* Loop counter */
- u8 *pCellptr; /* Address of next cell pointer */
- int cellbody; /* Address of next cell body */
- u8 * const data = pPage->aData; /* Pointer to data for pPage */
- const int hdr = pPage->hdrOffset; /* Offset of header on pPage */
- const int nUsable = pPage->pBt->usableSize; /* Usable size of page */
+ const int hdr = pPg->hdrOffset; /* Offset of header on pPg */
+ u8 * const aData = pPg->aData; /* Pointer to data for pPg */
+ const int usableSize = pPg->pBt->usableSize;
+ u8 * const pEnd = &aData[usableSize];
+ int i;
+ u8 *pCellptr = pPg->aCellIdx;
+ u8 *pTmp = sqlite3PagerTempSpace(pPg->pBt->pPager);
+ u8 *pData;
- assert( pPage->nOverflow==0 );
- assert( sqlite3_mutex_held(pPage->pBt->mutex) );
- assert( nCell>=0 && nCell<=(int)MX_CELL(pPage->pBt)
- && (int)MX_CELL(pPage->pBt)<=10921);
- assert( sqlite3PagerIswriteable(pPage->pDbPage) );
+ i = get2byte(&aData[hdr+5]);
+ memcpy(&pTmp[i], &aData[i], usableSize - i);
+
+ pData = pEnd;
+ for(i=0; i<nCell; i++){
+ u8 *pCell = apCell[i];
+ if( pCell>aData && pCell<pEnd ){
+ pCell = &pTmp[pCell - aData];
+ }
+ pData -= szCell[i];
+ memcpy(pData, pCell, szCell[i]);
+ put2byte(pCellptr, (pData - aData));
+ pCellptr += 2;
+ assert( szCell[i]==cellSizePtr(pPg, pCell) );
+ }
+
+ /* The pPg->nFree field is now set incorrectly. The caller will fix it. */
+ pPg->nCell = nCell;
+ pPg->nOverflow = 0;
+
+ put2byte(&aData[hdr+1], 0);
+ put2byte(&aData[hdr+3], pPg->nCell);
+ put2byte(&aData[hdr+5], pData - aData);
+ aData[hdr+7] = 0x00;
+}
+
+/*
+** Array apCell[] contains nCell pointers to b-tree cells. Array szCell
+** contains the size in bytes of each such cell. This function attempts to
+** add the cells stored in the array to page pPg. If it cannot (because
+** the page needs to be defragmented before the cells will fit), non-zero
+** is returned. Otherwise, if the cells are added successfully, zero is
+** returned.
+**
+** Argument pCellptr points to the first entry in the cell-pointer array
+** (part of page pPg) to populate. After cell apCell[0] is written to the
+** page body, a 16-bit offset is written to pCellptr. And so on, for each
+** cell in the array. It is the responsibility of the caller to ensure
+** that it is safe to overwrite this part of the cell-pointer array.
+**
+** When this function is called, *ppData points to the start of the
+** content area on page pPg. If the size of the content area is extended,
+** *ppData is updated to point to the new start of the content area
+** before returning.
+**
+** Finally, argument pBegin points to the byte immediately following the
+** end of the space required by this page for the cell-pointer area (for
+** all cells - not just those inserted by the current call). If the content
+** area must be extended to before this point in order to accomodate all
+** cells in apCell[], then the cells do not fit and non-zero is returned.
+*/
+static int pageInsertArray(
+ MemPage *pPg, /* Page to add cells to */
+ u8 *pBegin, /* End of cell-pointer array */
+ u8 **ppData, /* IN/OUT: Page content -area pointer */
+ u8 *pCellptr, /* Pointer to cell-pointer area */
+ int nCell, /* Number of cells to add to pPg */
+ u8 **apCell, /* Array of cells */
+ u16 *szCell /* Array of cell sizes */
+){
+ int i;
+ u8 *aData = pPg->aData;
+ u8 *pData = *ppData;
+ const int bFreelist = aData[1] || aData[2];
+ assert( CORRUPT_DB || pPg->hdrOffset==0 ); /* Never called on page 1 */
+ for(i=0; i<nCell; i++){
+ int sz = szCell[i];
+ int rc;
+ u8 *pSlot;
+ if( bFreelist==0 || (pSlot = pageFindSlot(pPg, sz, &rc, 0))==0 ){
+ pData -= sz;
+ if( pData<pBegin ) return 1;
+ pSlot = pData;
+ }
+ memcpy(pSlot, apCell[i], sz);
+ put2byte(pCellptr, (pSlot - aData));
+ pCellptr += 2;
+ }
+ *ppData = pData;
+ return 0;
+}
+
+/*
+** Array apCell[] contains nCell pointers to b-tree cells. Array szCell
+** contains the size in bytes of each such cell. This function adds the
+** space associated with each cell in the array that is currently stored
+** within the body of pPg to the pPg free-list. The cell-pointers and other
+** fields of the page are not updated.
+**
+** This function returns the total number of cells added to the free-list.
+*/
+static int pageFreeArray(
+ MemPage *pPg, /* Page to edit */
+ int nCell, /* Cells to delete */
+ u8 **apCell, /* Array of cells */
+ u16 *szCell /* Array of cell sizes */
+){
+ u8 * const aData = pPg->aData;
+ u8 * const pEnd = &aData[pPg->pBt->usableSize];
+ u8 * const pStart = &aData[pPg->hdrOffset + 8 + pPg->childPtrSize];
+ int nRet = 0;
+ int i;
+ u8 *pFree = 0;
+ int szFree = 0;
+
+ for(i=0; i<nCell; i++){
+ u8 *pCell = apCell[i];
+ if( pCell>=pStart && pCell<pEnd ){
+ int sz = szCell[i];
+ if( pFree!=(pCell + sz) ){
+ if( pFree ){
+ assert( pFree>aData && (pFree - aData)<65536 );
+ freeSpace(pPg, (u16)(pFree - aData), szFree);
+ }
+ pFree = pCell;
+ szFree = sz;
+ if( pFree+sz>pEnd ) return 0;
+ }else{
+ pFree = pCell;
+ szFree += sz;
+ }
+ nRet++;
+ }
+ }
+ if( pFree ){
+ assert( pFree>aData && (pFree - aData)<65536 );
+ freeSpace(pPg, (u16)(pFree - aData), szFree);
+ }
+ return nRet;
+}
- /* Check that the page has just been zeroed by zeroPage() */
- assert( pPage->nCell==0 );
- assert( get2byteNotZero(&data[hdr+5])==nUsable );
+/*
+** apCell[] and szCell[] contains pointers to and sizes of all cells in the
+** pages being balanced. The current page, pPg, has pPg->nCell cells starting
+** with apCell[iOld]. After balancing, this page should hold nNew cells
+** starting at apCell[iNew].
+**
+** This routine makes the necessary adjustments to pPg so that it contains
+** the correct cells after being balanced.
+**
+** The pPg->nFree field is invalid when this function returns. It is the
+** responsibility of the caller to set it correctly.
+*/
+static void editPage(
+ MemPage *pPg, /* Edit this page */
+ int iOld, /* Index of first cell currently on page */
+ int iNew, /* Index of new first cell on page */
+ int nNew, /* Final number of cells on page */
+ u8 **apCell, /* Array of cells */
+ u16 *szCell /* Array of cell sizes */
+){
+ u8 * const aData = pPg->aData;
+ const int hdr = pPg->hdrOffset;
+ u8 *pBegin = &pPg->aCellIdx[nNew * 2];
+ int nCell = pPg->nCell; /* Cells stored on pPg */
+ u8 *pData;
+ u8 *pCellptr;
+ int i;
+ int iOldEnd = iOld + pPg->nCell + pPg->nOverflow;
+ int iNewEnd = iNew + nNew;
+
+#ifdef SQLITE_DEBUG
+ u8 *pTmp = sqlite3PagerTempSpace(pPg->pBt->pPager);
+ memcpy(pTmp, aData, pPg->pBt->usableSize);
+#endif
+
+ /* Remove cells from the start and end of the page */
+ if( iOld<iNew ){
+ int nShift = pageFreeArray(
+ pPg, iNew-iOld, &apCell[iOld], &szCell[iOld]
+ );
+ memmove(pPg->aCellIdx, &pPg->aCellIdx[nShift*2], nCell*2);
+ nCell -= nShift;
+ }
+ if( iNewEnd < iOldEnd ){
+ nCell -= pageFreeArray(
+ pPg, iOldEnd-iNewEnd, &apCell[iNewEnd], &szCell[iNewEnd]
+ );
+ }
+
+ pData = &aData[get2byteNotZero(&aData[hdr+5])];
+ if( pData<pBegin ) goto editpage_fail;
+
+ /* Add cells to the start of the page */
+ if( iNew<iOld ){
+ int nAdd = MIN(nNew,iOld-iNew);
+ assert( (iOld-iNew)<nNew || nCell==0 || CORRUPT_DB );
+ pCellptr = pPg->aCellIdx;
+ memmove(&pCellptr[nAdd*2], pCellptr, nCell*2);
+ if( pageInsertArray(
+ pPg, pBegin, &pData, pCellptr,
+ nAdd, &apCell[iNew], &szCell[iNew]
+ ) ) goto editpage_fail;
+ nCell += nAdd;
+ }
+
+ /* Add any overflow cells */
+ for(i=0; i<pPg->nOverflow; i++){
+ int iCell = (iOld + pPg->aiOvfl[i]) - iNew;
+ if( iCell>=0 && iCell<nNew ){
+ pCellptr = &pPg->aCellIdx[iCell * 2];
+ memmove(&pCellptr[2], pCellptr, (nCell - iCell) * 2);
+ nCell++;
+ if( pageInsertArray(
+ pPg, pBegin, &pData, pCellptr,
+ 1, &apCell[iCell + iNew], &szCell[iCell + iNew]
+ ) ) goto editpage_fail;
+ }
+ }
+
+ /* Append cells to the end of the page */
+ pCellptr = &pPg->aCellIdx[nCell*2];
+ if( pageInsertArray(
+ pPg, pBegin, &pData, pCellptr,
+ nNew-nCell, &apCell[iNew+nCell], &szCell[iNew+nCell]
+ ) ) goto editpage_fail;
+
+ pPg->nCell = nNew;
+ pPg->nOverflow = 0;
- pCellptr = &pPage->aCellIdx[nCell*2];
- cellbody = nUsable;
- for(i=nCell-1; i>=0; i--){
- u16 sz = aSize[i];
- pCellptr -= 2;
- cellbody -= sz;
- put2byte(pCellptr, cellbody);
- memcpy(&data[cellbody], apCell[i], sz);
+ put2byte(&aData[hdr+3], pPg->nCell);
+ put2byte(&aData[hdr+5], pData - aData);
+
+#ifdef SQLITE_DEBUG
+ for(i=0; i<nNew && !CORRUPT_DB; i++){
+ u8 *pCell = apCell[i+iNew];
+ int iOff = get2byte(&pPg->aCellIdx[i*2]);
+ if( pCell>=aData && pCell<&aData[pPg->pBt->usableSize] ){
+ pCell = &pTmp[pCell - aData];
+ }
+ assert( 0==memcmp(pCell, &aData[iOff], szCell[i+iNew]) );
}
- put2byte(&data[hdr+3], nCell);
- put2byte(&data[hdr+5], cellbody);
- pPage->nFree -= (nCell*2 + nUsable - cellbody);
- pPage->nCell = (u16)nCell;
+#endif
+
+ return;
+ editpage_fail:
+ /* Unable to edit this page. Rebuild it from scratch instead. */
+ rebuildPage(pPg, nNew, &apCell[iNew], &szCell[iNew]);
}
/*
@@ -57437,7 +59062,7 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
assert( pPage->nOverflow==1 );
/* This error condition is now caught prior to reaching this function */
- if( pPage->nCell==0 ) return SQLITE_CORRUPT_BKPT;
+ if( NEVER(pPage->nCell==0) ) return SQLITE_CORRUPT_BKPT;
/* Allocate a new page. This page will become the right-sibling of
** pPage. Make the parent page writable, so that the new divider cell
@@ -57455,7 +59080,8 @@ static int balance_quick(MemPage *pParent, MemPage *pPage, u8 *pSpace){
assert( sqlite3PagerIswriteable(pNew->pDbPage) );
assert( pPage->aData[0]==(PTF_INTKEY|PTF_LEAFDATA|PTF_LEAF) );
zeroPage(pNew, PTF_INTKEY|PTF_LEAFDATA|PTF_LEAF);
- assemblePage(pNew, 1, &pCell, &szCell);
+ rebuildPage(pNew, 1, &pCell, &szCell);
+ pNew->nFree = pBt->usableSize - pNew->cellOffset - 2 - szCell;
/* If this is an auto-vacuum database, update the pointer map
** with entries for the new page, and any pointer from the
@@ -57674,17 +59300,22 @@ static int balance_nonroot(
int iOvflSpace = 0; /* First unused byte of aOvflSpace[] */
int szScratch; /* Size of scratch memory requested */
MemPage *apOld[NB]; /* pPage and up to two siblings */
- MemPage *apCopy[NB]; /* Private copies of apOld[] pages */
MemPage *apNew[NB+2]; /* pPage and up to NB siblings after balancing */
u8 *pRight; /* Location in parent of right-sibling pointer */
u8 *apDiv[NB-1]; /* Divider cells in pParent */
int cntNew[NB+2]; /* Index in aCell[] of cell after i-th page */
- int szNew[NB+2]; /* Combined size of cells place on i-th page */
+ int cntOld[NB+2]; /* Old index in aCell[] after i-th page */
+ int szNew[NB+2]; /* Combined size of cells placed on i-th page */
u8 **apCell = 0; /* All cells begin balanced */
u16 *szCell; /* Local size of all cells in apCell[] */
u8 *aSpace1; /* Space for copies of dividers cells */
Pgno pgno; /* Temp var to store a page number in */
+ u8 abDone[NB+2]; /* True after i'th new page is populated */
+ Pgno aPgno[NB+2]; /* Page numbers of new pages before shuffling */
+ Pgno aPgOrder[NB+2]; /* Copy of aPgno[] used for sorting pages */
+ u16 aPgFlags[NB+2]; /* flags field of new pages before shuffling */
+ memset(abDone, 0, sizeof(abDone));
pBt = pParent->pBt;
assert( sqlite3_mutex_held(pBt->mutex) );
assert( sqlite3PagerIswriteable(pParent->pDbPage) );
@@ -57793,12 +59424,14 @@ static int balance_nonroot(
/*
** Allocate space for memory structures
*/
- k = pBt->pageSize + ROUND8(sizeof(MemPage));
szScratch =
nMaxCells*sizeof(u8*) /* apCell */
+ nMaxCells*sizeof(u16) /* szCell */
- + pBt->pageSize /* aSpace1 */
- + k*nOld; /* Page copies (apCopy) */
+ + pBt->pageSize; /* aSpace1 */
+
+ /* EVIDENCE-OF: R-28375-38319 SQLite will never request a scratch buffer
+ ** that is more than 6 times the database page size. */
+ assert( szScratch<=6*(int)pBt->pageSize );
apCell = sqlite3ScratchMalloc( szScratch );
if( apCell==0 ){
rc = SQLITE_NOMEM;
@@ -57811,8 +59444,8 @@ static int balance_nonroot(
/*
** Load pointers to all cells on sibling pages and the divider cells
** into the local apCell[] array. Make copies of the divider cells
- ** into space obtained from aSpace1[] and remove the divider cells
- ** from pParent.
+ ** into space obtained from aSpace1[]. The divider cells have already
+ ** been removed from pParent.
**
** If the siblings are on leaf pages, then the child pointers of the
** divider cells are stripped from the cells before they are copied
@@ -57825,18 +59458,10 @@ static int balance_nonroot(
** leafData: 1 if pPage holds key+data and pParent holds only keys.
*/
leafCorrection = apOld[0]->leaf*4;
- leafData = apOld[0]->hasData;
+ leafData = apOld[0]->intKeyLeaf;
for(i=0; i<nOld; i++){
int limit;
-
- /* Before doing anything else, take a copy of the i'th original sibling
- ** The rest of this function will use data from the copies rather
- ** that the original pages since the original pages will be in the
- ** process of being overwritten. */
- MemPage *pOld = apCopy[i] = (MemPage*)&aSpace1[pBt->pageSize + k*i];
- memcpy(pOld, apOld[i], sizeof(MemPage));
- pOld->aData = (void*)&pOld[1];
- memcpy(pOld->aData, apOld[i]->aData, pBt->pageSize);
+ MemPage *pOld = apOld[i];
limit = pOld->nCell+pOld->nOverflow;
if( pOld->nOverflow>0 ){
@@ -57857,6 +59482,7 @@ static int balance_nonroot(
nCell++;
}
}
+ cntOld[i] = nCell;
if( i<nOld-1 && !leafData){
u16 sz = (u16)szNew[i];
u8 *pTemp;
@@ -57879,7 +59505,11 @@ static int balance_nonroot(
}else{
assert( leafCorrection==4 );
if( szCell[nCell]<4 ){
- /* Do not allow any cells smaller than 4 bytes. */
+ /* Do not allow any cells smaller than 4 bytes. If a smaller cell
+ ** does exist, pad it with 0x00 bytes. */
+ assert( szCell[nCell]==3 );
+ assert( apCell[nCell]==&aSpace1[iSpace1-3] );
+ aSpace1[iSpace1++] = 0x00;
szCell[nCell] = 4;
}
}
@@ -57908,7 +59538,7 @@ static int balance_nonroot(
assert( i<nMaxCells );
subtotal += szCell[i] + 2;
if( subtotal > usableSpace ){
- szNew[k] = subtotal - szCell[i];
+ szNew[k] = subtotal - szCell[i] - 2;
cntNew[k] = i;
if( leafData ){ i--; }
subtotal = 0;
@@ -57922,9 +59552,10 @@ static int balance_nonroot(
/*
** The packing computed by the previous block is biased toward the siblings
- ** on the left side. The left siblings are always nearly full, while the
- ** right-most sibling might be nearly empty. This block of code attempts
- ** to adjust the packing of siblings to get a better balance.
+ ** on the left side (siblings with smaller keys). The left siblings are
+ ** always nearly full, while the right-most sibling might be nearly empty.
+ ** The next block of code attempts to adjust the packing of siblings to
+ ** get a better balance.
**
** This adjustment is more than an optimization. The packing above might
** be so out of balance as to be illegal. For example, the right-most
@@ -57953,22 +59584,18 @@ static int balance_nonroot(
szNew[i-1] = szLeft;
}
- /* Either we found one or more cells (cntnew[0])>0) or pPage is
- ** a virtual root page. A virtual root page is when the real root
- ** page is page 1 and we are the only child of that page.
- **
- ** UPDATE: The assert() below is not necessarily true if the database
- ** file is corrupt. The corruption will be detected and reported later
- ** in this procedure so there is no need to act upon it now.
+ /* Sanity check: For a non-corrupt database file one of the follwing
+ ** must be true:
+ ** (1) We found one or more cells (cntNew[0])>0), or
+ ** (2) pPage is a virtual root page. A virtual root page is when
+ ** the real root page is page 1 and we are the only child of
+ ** that page.
*/
-#if 0
- assert( cntNew[0]>0 || (pParent->pgno==1 && pParent->nCell==0) );
-#endif
-
- TRACE(("BALANCE: old: %d %d %d ",
- apOld[0]->pgno,
- nOld>=2 ? apOld[1]->pgno : 0,
- nOld>=3 ? apOld[2]->pgno : 0
+ assert( cntNew[0]>0 || (pParent->pgno==1 && pParent->nCell==0) || CORRUPT_DB);
+ TRACE(("BALANCE: old: %d(nc=%d) %d(nc=%d) %d(nc=%d)\n",
+ apOld[0]->pgno, apOld[0]->nCell,
+ nOld>=2 ? apOld[1]->pgno : 0, nOld>=2 ? apOld[1]->nCell : 0,
+ nOld>=3 ? apOld[2]->pgno : 0, nOld>=3 ? apOld[2]->nCell : 0
));
/*
@@ -57991,8 +59618,10 @@ static int balance_nonroot(
assert( i>0 );
rc = allocateBtreePage(pBt, &pNew, &pgno, (bBulk ? 1 : pgno), 0);
if( rc ) goto balance_cleanup;
+ zeroPage(pNew, pageFlags);
apNew[i] = pNew;
nNew++;
+ cntOld[i] = nCell;
/* Set the pointer-map entry for the new sibling page. */
if( ISAUTOVACUUM ){
@@ -58004,135 +59633,247 @@ static int balance_nonroot(
}
}
- /* Free any old pages that were not reused as new pages.
- */
- while( i<nOld ){
- freePage(apOld[i], &rc);
- if( rc ) goto balance_cleanup;
- releasePage(apOld[i]);
- apOld[i] = 0;
- i++;
- }
-
/*
- ** Put the new pages in accending order. This helps to
- ** keep entries in the disk file in order so that a scan
- ** of the table is a linear scan through the file. That
- ** in turn helps the operating system to deliver pages
- ** from the disk more rapidly.
+ ** Reassign page numbers so that the new pages are in ascending order.
+ ** This helps to keep entries in the disk file in order so that a scan
+ ** of the table is closer to a linear scan through the file. That in turn
+ ** helps the operating system to deliver pages from the disk more rapidly.
**
- ** An O(n^2) insertion sort algorithm is used, but since
- ** n is never more than NB (a small constant), that should
- ** not be a problem.
+ ** An O(n^2) insertion sort algorithm is used, but since n is never more
+ ** than (NB+2) (a small constant), that should not be a problem.
**
- ** When NB==3, this one optimization makes the database
- ** about 25% faster for large insertions and deletions.
+ ** When NB==3, this one optimization makes the database about 25% faster
+ ** for large insertions and deletions.
*/
- for(i=0; i<k-1; i++){
- int minV = apNew[i]->pgno;
- int minI = i;
- for(j=i+1; j<k; j++){
- if( apNew[j]->pgno<(unsigned)minV ){
- minI = j;
- minV = apNew[j]->pgno;
+ for(i=0; i<nNew; i++){
+ aPgOrder[i] = aPgno[i] = apNew[i]->pgno;
+ aPgFlags[i] = apNew[i]->pDbPage->flags;
+ for(j=0; j<i; j++){
+ if( aPgno[j]==aPgno[i] ){
+ /* This branch is taken if the set of sibling pages somehow contains
+ ** duplicate entries. This can happen if the database is corrupt.
+ ** It would be simpler to detect this as part of the loop below, but
+ ** we do the detection here in order to avoid populating the pager
+ ** cache with two separate objects associated with the same
+ ** page number. */
+ assert( CORRUPT_DB );
+ rc = SQLITE_CORRUPT_BKPT;
+ goto balance_cleanup;
}
}
- if( minI>i ){
- MemPage *pT;
- pT = apNew[i];
- apNew[i] = apNew[minI];
- apNew[minI] = pT;
+ }
+ for(i=0; i<nNew; i++){
+ int iBest = 0; /* aPgno[] index of page number to use */
+ for(j=1; j<nNew; j++){
+ if( aPgOrder[j]<aPgOrder[iBest] ) iBest = j;
+ }
+ pgno = aPgOrder[iBest];
+ aPgOrder[iBest] = 0xffffffff;
+ if( iBest!=i ){
+ if( iBest>i ){
+ sqlite3PagerRekey(apNew[iBest]->pDbPage, pBt->nPage+iBest+1, 0);
+ }
+ sqlite3PagerRekey(apNew[i]->pDbPage, pgno, aPgFlags[iBest]);
+ apNew[i]->pgno = pgno;
}
}
- TRACE(("new: %d(%d) %d(%d) %d(%d) %d(%d) %d(%d)\n",
- apNew[0]->pgno, szNew[0],
+
+ TRACE(("BALANCE: new: %d(%d nc=%d) %d(%d nc=%d) %d(%d nc=%d) "
+ "%d(%d nc=%d) %d(%d nc=%d)\n",
+ apNew[0]->pgno, szNew[0], cntNew[0],
nNew>=2 ? apNew[1]->pgno : 0, nNew>=2 ? szNew[1] : 0,
+ nNew>=2 ? cntNew[1] - cntNew[0] - !leafData : 0,
nNew>=3 ? apNew[2]->pgno : 0, nNew>=3 ? szNew[2] : 0,
+ nNew>=3 ? cntNew[2] - cntNew[1] - !leafData : 0,
nNew>=4 ? apNew[3]->pgno : 0, nNew>=4 ? szNew[3] : 0,
- nNew>=5 ? apNew[4]->pgno : 0, nNew>=5 ? szNew[4] : 0));
+ nNew>=4 ? cntNew[3] - cntNew[2] - !leafData : 0,
+ nNew>=5 ? apNew[4]->pgno : 0, nNew>=5 ? szNew[4] : 0,
+ nNew>=5 ? cntNew[4] - cntNew[3] - !leafData : 0
+ ));
assert( sqlite3PagerIswriteable(pParent->pDbPage) );
put4byte(pRight, apNew[nNew-1]->pgno);
- /*
- ** Evenly distribute the data in apCell[] across the new pages.
- ** Insert divider cells into pParent as necessary.
+ /* If the sibling pages are not leaves, ensure that the right-child pointer
+ ** of the right-most new sibling page is set to the value that was
+ ** originally in the same field of the right-most old sibling page. */
+ if( (pageFlags & PTF_LEAF)==0 && nOld!=nNew ){
+ MemPage *pOld = (nNew>nOld ? apNew : apOld)[nOld-1];
+ memcpy(&apNew[nNew-1]->aData[8], &pOld->aData[8], 4);
+ }
+
+ /* Make any required updates to pointer map entries associated with
+ ** cells stored on sibling pages following the balance operation. Pointer
+ ** map entries associated with divider cells are set by the insertCell()
+ ** routine. The associated pointer map entries are:
+ **
+ ** a) if the cell contains a reference to an overflow chain, the
+ ** entry associated with the first page in the overflow chain, and
+ **
+ ** b) if the sibling pages are not leaves, the child page associated
+ ** with the cell.
+ **
+ ** If the sibling pages are not leaves, then the pointer map entry
+ ** associated with the right-child of each sibling may also need to be
+ ** updated. This happens below, after the sibling pages have been
+ ** populated, not here.
*/
- j = 0;
- for(i=0; i<nNew; i++){
- /* Assemble the new sibling page. */
+ if( ISAUTOVACUUM ){
+ MemPage *pNew = apNew[0];
+ u8 *aOld = pNew->aData;
+ int cntOldNext = pNew->nCell + pNew->nOverflow;
+ int usableSize = pBt->usableSize;
+ int iNew = 0;
+ int iOld = 0;
+
+ for(i=0; i<nCell; i++){
+ u8 *pCell = apCell[i];
+ if( i==cntOldNext ){
+ MemPage *pOld = (++iOld)<nNew ? apNew[iOld] : apOld[iOld];
+ cntOldNext += pOld->nCell + pOld->nOverflow + !leafData;
+ aOld = pOld->aData;
+ }
+ if( i==cntNew[iNew] ){
+ pNew = apNew[++iNew];
+ if( !leafData ) continue;
+ }
+
+ /* Cell pCell is destined for new sibling page pNew. Originally, it
+ ** was either part of sibling page iOld (possibly an overflow cell),
+ ** or else the divider cell to the left of sibling page iOld. So,
+ ** if sibling page iOld had the same page number as pNew, and if
+ ** pCell really was a part of sibling page iOld (not a divider or
+ ** overflow cell), we can skip updating the pointer map entries. */
+ if( iOld>=nNew
+ || pNew->pgno!=aPgno[iOld]
+ || pCell<aOld
+ || pCell>=&aOld[usableSize]
+ ){
+ if( !leafCorrection ){
+ ptrmapPut(pBt, get4byte(pCell), PTRMAP_BTREE, pNew->pgno, &rc);
+ }
+ if( szCell[i]>pNew->minLocal ){
+ ptrmapPutOvflPtr(pNew, pCell, &rc);
+ }
+ }
+ }
+ }
+
+ /* Insert new divider cells into pParent. */
+ for(i=0; i<nNew-1; i++){
+ u8 *pCell;
+ u8 *pTemp;
+ int sz;
MemPage *pNew = apNew[i];
+ j = cntNew[i];
+
assert( j<nMaxCells );
- zeroPage(pNew, pageFlags);
- assemblePage(pNew, cntNew[i]-j, &apCell[j], &szCell[j]);
- assert( pNew->nCell>0 || (nNew==1 && cntNew[0]==0) );
- assert( pNew->nOverflow==0 );
+ pCell = apCell[j];
+ sz = szCell[j] + leafCorrection;
+ pTemp = &aOvflSpace[iOvflSpace];
+ if( !pNew->leaf ){
+ memcpy(&pNew->aData[8], pCell, 4);
+ }else if( leafData ){
+ /* If the tree is a leaf-data tree, and the siblings are leaves,
+ ** then there is no divider cell in apCell[]. Instead, the divider
+ ** cell consists of the integer key for the right-most cell of
+ ** the sibling-page assembled above only.
+ */
+ CellInfo info;
+ j--;
+ btreeParseCellPtr(pNew, apCell[j], &info);
+ pCell = pTemp;
+ sz = 4 + putVarint(&pCell[4], info.nKey);
+ pTemp = 0;
+ }else{
+ pCell -= 4;
+ /* Obscure case for non-leaf-data trees: If the cell at pCell was
+ ** previously stored on a leaf node, and its reported size was 4
+ ** bytes, then it may actually be smaller than this
+ ** (see btreeParseCellPtr(), 4 bytes is the minimum size of
+ ** any cell). But it is important to pass the correct size to
+ ** insertCell(), so reparse the cell now.
+ **
+ ** Note that this can never happen in an SQLite data file, as all
+ ** cells are at least 4 bytes. It only happens in b-trees used
+ ** to evaluate "IN (SELECT ...)" and similar clauses.
+ */
+ if( szCell[j]==4 ){
+ assert(leafCorrection==4);
+ sz = cellSizePtr(pParent, pCell);
+ }
+ }
+ iOvflSpace += sz;
+ assert( sz<=pBt->maxLocal+23 );
+ assert( iOvflSpace <= (int)pBt->pageSize );
+ insertCell(pParent, nxDiv+i, pCell, sz, pTemp, pNew->pgno, &rc);
+ if( rc!=SQLITE_OK ) goto balance_cleanup;
+ assert( sqlite3PagerIswriteable(pParent->pDbPage) );
+ }
- j = cntNew[i];
+ /* Now update the actual sibling pages. The order in which they are updated
+ ** is important, as this code needs to avoid disrupting any page from which
+ ** cells may still to be read. In practice, this means:
+ **
+ ** (1) If cells are moving left (from apNew[iPg] to apNew[iPg-1])
+ ** then it is not safe to update page apNew[iPg] until after
+ ** the left-hand sibling apNew[iPg-1] has been updated.
+ **
+ ** (2) If cells are moving right (from apNew[iPg] to apNew[iPg+1])
+ ** then it is not safe to update page apNew[iPg] until after
+ ** the right-hand sibling apNew[iPg+1] has been updated.
+ **
+ ** If neither of the above apply, the page is safe to update.
+ **
+ ** The iPg value in the following loop starts at nNew-1 goes down
+ ** to 0, then back up to nNew-1 again, thus making two passes over
+ ** the pages. On the initial downward pass, only condition (1) above
+ ** needs to be tested because (2) will always be true from the previous
+ ** step. On the upward pass, both conditions are always true, so the
+ ** upwards pass simply processes pages that were missed on the downward
+ ** pass.
+ */
+ for(i=1-nNew; i<nNew; i++){
+ int iPg = i<0 ? -i : i;
+ assert( iPg>=0 && iPg<nNew );
+ if( abDone[iPg] ) continue; /* Skip pages already processed */
+ if( i>=0 /* On the upwards pass, or... */
+ || cntOld[iPg-1]>=cntNew[iPg-1] /* Condition (1) is true */
+ ){
+ int iNew;
+ int iOld;
+ int nNewCell;
- /* If the sibling page assembled above was not the right-most sibling,
- ** insert a divider cell into the parent page.
- */
- assert( i<nNew-1 || j==nCell );
- if( j<nCell ){
- u8 *pCell;
- u8 *pTemp;
- int sz;
+ /* Verify condition (1): If cells are moving left, update iPg
+ ** only after iPg-1 has already been updated. */
+ assert( iPg==0 || cntOld[iPg-1]>=cntNew[iPg-1] || abDone[iPg-1] );
- assert( j<nMaxCells );
- pCell = apCell[j];
- sz = szCell[j] + leafCorrection;
- pTemp = &aOvflSpace[iOvflSpace];
- if( !pNew->leaf ){
- memcpy(&pNew->aData[8], pCell, 4);
- }else if( leafData ){
- /* If the tree is a leaf-data tree, and the siblings are leaves,
- ** then there is no divider cell in apCell[]. Instead, the divider
- ** cell consists of the integer key for the right-most cell of
- ** the sibling-page assembled above only.
- */
- CellInfo info;
- j--;
- btreeParseCellPtr(pNew, apCell[j], &info);
- pCell = pTemp;
- sz = 4 + putVarint(&pCell[4], info.nKey);
- pTemp = 0;
+ /* Verify condition (2): If cells are moving right, update iPg
+ ** only after iPg+1 has already been updated. */
+ assert( cntNew[iPg]>=cntOld[iPg] || abDone[iPg+1] );
+
+ if( iPg==0 ){
+ iNew = iOld = 0;
+ nNewCell = cntNew[0];
}else{
- pCell -= 4;
- /* Obscure case for non-leaf-data trees: If the cell at pCell was
- ** previously stored on a leaf node, and its reported size was 4
- ** bytes, then it may actually be smaller than this
- ** (see btreeParseCellPtr(), 4 bytes is the minimum size of
- ** any cell). But it is important to pass the correct size to
- ** insertCell(), so reparse the cell now.
- **
- ** Note that this can never happen in an SQLite data file, as all
- ** cells are at least 4 bytes. It only happens in b-trees used
- ** to evaluate "IN (SELECT ...)" and similar clauses.
- */
- if( szCell[j]==4 ){
- assert(leafCorrection==4);
- sz = cellSizePtr(pParent, pCell);
- }
+ iOld = iPg<nOld ? (cntOld[iPg-1] + !leafData) : nCell;
+ iNew = cntNew[iPg-1] + !leafData;
+ nNewCell = cntNew[iPg] - iNew;
}
- iOvflSpace += sz;
- assert( sz<=pBt->maxLocal+23 );
- assert( iOvflSpace <= (int)pBt->pageSize );
- insertCell(pParent, nxDiv, pCell, sz, pTemp, pNew->pgno, &rc);
- if( rc!=SQLITE_OK ) goto balance_cleanup;
- assert( sqlite3PagerIswriteable(pParent->pDbPage) );
- j++;
- nxDiv++;
+ editPage(apNew[iPg], iOld, iNew, nNewCell, apCell, szCell);
+ abDone[iPg]++;
+ apNew[iPg]->nFree = usableSpace-szNew[iPg];
+ assert( apNew[iPg]->nOverflow==0 );
+ assert( apNew[iPg]->nCell==nNewCell );
}
}
- assert( j==nCell );
+
+ /* All pages have been processed exactly once */
+ assert( memcmp(abDone, "\01\01\01\01\01", nNew)==0 );
+
assert( nOld>0 );
assert( nNew>0 );
- if( (pageFlags & PTF_LEAF)==0 ){
- u8 *zChild = &apCopy[nOld-1]->aData[8];
- memcpy(&apNew[nNew-1]->aData[8], zChild, 4);
- }
if( isRoot && pParent->nCell==0 && pParent->hdrOffset<=apNew[0]->nFree ){
/* The root page of the b-tree now contains no cells. The only sibling
@@ -58145,126 +59886,50 @@ static int balance_nonroot(
** sets all pointer-map entries corresponding to database image pages
** for which the pointer is stored within the content being copied.
**
- ** The second assert below verifies that the child page is defragmented
- ** (it must be, as it was just reconstructed using assemblePage()). This
- ** is important if the parent page happens to be page 1 of the database
- ** image. */
+ ** It is critical that the child page be defragmented before being
+ ** copied into the parent, because if the parent is page 1 then it will
+ ** by smaller than the child due to the database header, and so all the
+ ** free space needs to be up front.
+ */
assert( nNew==1 );
+ rc = defragmentPage(apNew[0]);
+ testcase( rc!=SQLITE_OK );
assert( apNew[0]->nFree ==
- (get2byte(&apNew[0]->aData[5])-apNew[0]->cellOffset-apNew[0]->nCell*2)
+ (get2byte(&apNew[0]->aData[5])-apNew[0]->cellOffset-apNew[0]->nCell*2)
+ || rc!=SQLITE_OK
);
copyNodeContent(apNew[0], pParent, &rc);
freePage(apNew[0], &rc);
- }else if( ISAUTOVACUUM ){
- /* Fix the pointer-map entries for all the cells that were shifted around.
- ** There are several different types of pointer-map entries that need to
- ** be dealt with by this routine. Some of these have been set already, but
- ** many have not. The following is a summary:
- **
- ** 1) The entries associated with new sibling pages that were not
- ** siblings when this function was called. These have already
- ** been set. We don't need to worry about old siblings that were
- ** moved to the free-list - the freePage() code has taken care
- ** of those.
- **
- ** 2) The pointer-map entries associated with the first overflow
- ** page in any overflow chains used by new divider cells. These
- ** have also already been taken care of by the insertCell() code.
- **
- ** 3) If the sibling pages are not leaves, then the child pages of
- ** cells stored on the sibling pages may need to be updated.
- **
- ** 4) If the sibling pages are not internal intkey nodes, then any
- ** overflow pages used by these cells may need to be updated
- ** (internal intkey nodes never contain pointers to overflow pages).
- **
- ** 5) If the sibling pages are not leaves, then the pointer-map
- ** entries for the right-child pages of each sibling may need
- ** to be updated.
- **
- ** Cases 1 and 2 are dealt with above by other code. The next
- ** block deals with cases 3 and 4 and the one after that, case 5. Since
- ** setting a pointer map entry is a relatively expensive operation, this
- ** code only sets pointer map entries for child or overflow pages that have
- ** actually moved between pages. */
- MemPage *pNew = apNew[0];
- MemPage *pOld = apCopy[0];
- int nOverflow = pOld->nOverflow;
- int iNextOld = pOld->nCell + nOverflow;
- int iOverflow = (nOverflow ? pOld->aiOvfl[0] : -1);
- j = 0; /* Current 'old' sibling page */
- k = 0; /* Current 'new' sibling page */
- for(i=0; i<nCell; i++){
- int isDivider = 0;
- while( i==iNextOld ){
- /* Cell i is the cell immediately following the last cell on old
- ** sibling page j. If the siblings are not leaf pages of an
- ** intkey b-tree, then cell i was a divider cell. */
- assert( j+1 < ArraySize(apCopy) );
- assert( j+1 < nOld );
- pOld = apCopy[++j];
- iNextOld = i + !leafData + pOld->nCell + pOld->nOverflow;
- if( pOld->nOverflow ){
- nOverflow = pOld->nOverflow;
- iOverflow = i + !leafData + pOld->aiOvfl[0];
- }
- isDivider = !leafData;
- }
-
- assert(nOverflow>0 || iOverflow<i );
- assert(nOverflow<2 || pOld->aiOvfl[0]==pOld->aiOvfl[1]-1);
- assert(nOverflow<3 || pOld->aiOvfl[1]==pOld->aiOvfl[2]-1);
- if( i==iOverflow ){
- isDivider = 1;
- if( (--nOverflow)>0 ){
- iOverflow++;
- }
- }
-
- if( i==cntNew[k] ){
- /* Cell i is the cell immediately following the last cell on new
- ** sibling page k. If the siblings are not leaf pages of an
- ** intkey b-tree, then cell i is a divider cell. */
- pNew = apNew[++k];
- if( !leafData ) continue;
- }
- assert( j<nOld );
- assert( k<nNew );
-
- /* If the cell was originally divider cell (and is not now) or
- ** an overflow cell, or if the cell was located on a different sibling
- ** page before the balancing, then the pointer map entries associated
- ** with any child or overflow pages need to be updated. */
- if( isDivider || pOld->pgno!=pNew->pgno ){
- if( !leafCorrection ){
- ptrmapPut(pBt, get4byte(apCell[i]), PTRMAP_BTREE, pNew->pgno, &rc);
- }
- if( szCell[i]>pNew->minLocal ){
- ptrmapPutOvflPtr(pNew, apCell[i], &rc);
- }
- }
+ }else if( ISAUTOVACUUM && !leafCorrection ){
+ /* Fix the pointer map entries associated with the right-child of each
+ ** sibling page. All other pointer map entries have already been taken
+ ** care of. */
+ for(i=0; i<nNew; i++){
+ u32 key = get4byte(&apNew[i]->aData[8]);
+ ptrmapPut(pBt, key, PTRMAP_BTREE, apNew[i]->pgno, &rc);
}
+ }
- if( !leafCorrection ){
- for(i=0; i<nNew; i++){
- u32 key = get4byte(&apNew[i]->aData[8]);
- ptrmapPut(pBt, key, PTRMAP_BTREE, apNew[i]->pgno, &rc);
- }
- }
+ assert( pParent->isInit );
+ TRACE(("BALANCE: finished: old=%d new=%d cells=%d\n",
+ nOld, nNew, nCell));
+
+ /* Free any old pages that were not reused as new pages.
+ */
+ for(i=nNew; i<nOld; i++){
+ freePage(apOld[i], &rc);
+ }
#if 0
+ if( ISAUTOVACUUM && rc==SQLITE_OK && apNew[0]->isInit ){
/* The ptrmapCheckPages() contains assert() statements that verify that
** all pointer map pages are set correctly. This is helpful while
** debugging. This is usually disabled because a corrupt database may
** cause an assert() statement to fail. */
ptrmapCheckPages(apNew, nNew);
ptrmapCheckPages(&pParent, 1);
-#endif
}
-
- assert( pParent->isInit );
- TRACE(("BALANCE: finished: old=%d new=%d cells=%d\n",
- nOld, nNew, nCell));
+#endif
/*
** Cleanup before returning.
@@ -58401,7 +60066,7 @@ static int balance(BtCursor *pCur){
rc = sqlite3PagerWrite(pParent->pDbPage);
if( rc==SQLITE_OK ){
#ifndef SQLITE_OMIT_QUICKBALANCE
- if( pPage->hasData
+ if( pPage->intKeyLeaf
&& pPage->nOverflow==1
&& pPage->aiOvfl[0]==pPage->nCell
&& pParent->pgno!=1
@@ -58410,7 +60075,7 @@ static int balance(BtCursor *pCur){
/* Call balance_quick() to create a new sibling of pPage on which
** to store the overflow cell. balance_quick() inserts a new cell
** into pParent, which may cause pParent overflow. If this
- ** happens, the next interation of the do-loop will balance pParent
+ ** happens, the next iteration of the do-loop will balance pParent
** use either balance_nonroot() or balance_deeper(). Until this
** happens, the overflow cell is stored in the aBalanceQuickSpace[]
** buffer.
@@ -58487,7 +60152,7 @@ static int balance(BtCursor *pCur){
** MovetoUnpacked() to seek cursor pCur to (pKey, nKey) has already
** been performed. seekResult is the search result returned (a negative
** number if pCur points at an entry that is smaller than (pKey, nKey), or
-** a positive value if pCur points at an etry that is larger than
+** a positive value if pCur points at an entry that is larger than
** (pKey, nKey)).
**
** If the seekResult parameter is non-zero, then the caller guarantees that
@@ -58520,7 +60185,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
}
assert( cursorHoldsMutex(pCur) );
- assert( (pCur->curFlags & BTCF_WriteFlag)!=0 && pBt->inTransaction==TRANS_WRITE
+ assert( (pCur->curFlags & BTCF_WriteFlag)!=0
+ && pBt->inTransaction==TRANS_WRITE
&& (pBt->btsFlags & BTS_READ_ONLY)==0 );
assert( hasSharedCacheTableLock(p, pCur->pgnoRoot, pCur->pKeyInfo!=0, 2) );
@@ -58553,7 +60219,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
/* If the cursor is currently on the last row and we are appending a
** new row onto the end, set the "loc" to avoid an unnecessary btreeMoveto()
** call */
- if( (pCur->curFlags&BTCF_ValidNKey)!=0 && nKey>0 && pCur->info.nKey==nKey-1 ){
+ if( (pCur->curFlags&BTCF_ValidNKey)!=0 && nKey>0
+ && pCur->info.nKey==nKey-1 ){
loc = -1;
}
}
@@ -58572,9 +60239,8 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
pCur->pgnoRoot, nKey, nData, pPage->pgno,
loc==0 ? "overwrite" : "new entry"));
assert( pPage->isInit );
- allocateTempSpace(pBt);
newCell = pBt->pTmpSpace;
- if( newCell==0 ) return SQLITE_NOMEM;
+ assert( newCell!=0 );
rc = fillInCell(pPage, newCell, pKey, nKey, pData, nData, nZero, &szNew);
if( rc ) goto end_insert;
assert( szNew==cellSizePtr(pPage, newCell) );
@@ -58591,8 +60257,7 @@ SQLITE_PRIVATE int sqlite3BtreeInsert(
if( !pPage->leaf ){
memcpy(newCell, oldCell, 4);
}
- szOld = cellSizePtr(pPage, oldCell);
- rc = clearCell(pPage, oldCell);
+ rc = clearCell(pPage, oldCell, &szOld);
dropCell(pPage, idx, szOld, &rc);
if( rc ) goto end_insert;
}else if( loc<0 && pPage->nCell>0 ){
@@ -58644,7 +60309,7 @@ end_insert:
/*
** Delete the entry that the cursor is pointing to. The cursor
-** is left pointing at a arbitrary location.
+** is left pointing at an arbitrary location.
*/
SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
Btree *p = pCur->pBtree;
@@ -58654,6 +60319,7 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
unsigned char *pCell; /* Pointer to cell to delete */
int iCellIdx; /* Index of cell to delete */
int iCellDepth; /* Depth of node containing pCell */
+ u16 szCell; /* Size of the cell being deleted */
assert( cursorHoldsMutex(pCur) );
assert( pBt->inTransaction==TRANS_WRITE );
@@ -58702,8 +60368,8 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
rc = sqlite3PagerWrite(pPage->pDbPage);
if( rc ) return rc;
- rc = clearCell(pPage, pCell);
- dropCell(pPage, iCellIdx, cellSizePtr(pPage, pCell), &rc);
+ rc = clearCell(pPage, pCell, &szCell);
+ dropCell(pPage, iCellIdx, szCell, &rc);
if( rc ) return rc;
/* If the cell deleted was not located on a leaf page, then the cursor
@@ -58720,10 +60386,8 @@ SQLITE_PRIVATE int sqlite3BtreeDelete(BtCursor *pCur){
pCell = findCell(pLeaf, pLeaf->nCell-1);
nCell = cellSizePtr(pLeaf, pCell);
assert( MX_CELL_SIZE(pBt) >= nCell );
-
- allocateTempSpace(pBt);
pTmp = pBt->pTmpSpace;
-
+ assert( pTmp!=0 );
rc = sqlite3PagerWrite(pLeaf->pDbPage);
insertCell(pPage, iCellIdx, pCell-4, nCell+4, pTmp, n, &rc);
dropCell(pLeaf, pLeaf->nCell-1, nCell, &rc);
@@ -58935,6 +60599,7 @@ static int clearDatabasePage(
unsigned char *pCell;
int i;
int hdr;
+ u16 szCell;
assert( sqlite3_mutex_held(pBt->mutex) );
if( pgno>btreePagecount(pBt) ){
@@ -58950,7 +60615,7 @@ static int clearDatabasePage(
rc = clearDatabasePage(pBt, get4byte(pCell), 1, pnChange);
if( rc ) goto cleardatabasepage_out;
}
- rc = clearCell(pPage, pCell);
+ rc = clearCell(pPage, pCell, &szCell);
if( rc ) goto cleardatabasepage_out;
}
if( !pPage->leaf ){
@@ -59156,6 +60821,13 @@ SQLITE_PRIVATE int sqlite3BtreeDropTable(Btree *p, int iTable, int *piMoved){
** The schema layer numbers meta values differently. At the schema
** layer (and the SetCookie and ReadCookie opcodes) the number of
** free pages is not visible. So Cookie[0] is the same as Meta[1].
+**
+** This routine treats Meta[BTREE_DATA_VERSION] as a special case. Instead
+** of reading the value out of the header, it instead loads the "DataVersion"
+** from the pager. The BTREE_DATA_VERSION value is not actually stored in the
+** database file. It is a number computed by the pager. But its access
+** pattern is the same as header meta values, and so it is convenient to
+** read it from this routine.
*/
SQLITE_PRIVATE void sqlite3BtreeGetMeta(Btree *p, int idx, u32 *pMeta){
BtShared *pBt = p->pBt;
@@ -59166,7 +60838,11 @@ SQLITE_PRIVATE void sqlite3BtreeGetMeta(Btree *p, int idx, u32 *pMeta){
assert( pBt->pPage1 );
assert( idx>=0 && idx<=15 );
- *pMeta = get4byte(&pBt->pPage1->aData[36 + idx*4]);
+ if( idx==BTREE_DATA_VERSION ){
+ *pMeta = sqlite3PagerDataVersion(pBt->pPager) + p->iDataVersion;
+ }else{
+ *pMeta = get4byte(&pBt->pPage1->aData[36 + idx*4]);
+ }
/* If auto-vacuum is disabled in this build and this is an auto-vacuum
** database, mark the database as read-only. */
@@ -59257,7 +60933,7 @@ SQLITE_PRIVATE int sqlite3BtreeCount(BtCursor *pCur, i64 *pnEntry){
if( pCur->iPage==0 ){
/* All pages of the b-tree have been visited. Return successfully. */
*pnEntry = nEntry;
- return SQLITE_OK;
+ return moveToRoot(pCur);
}
moveToParent(pCur);
}while ( pCur->aiIdx[pCur->iPage]>=pCur->apPage[pCur->iPage]->nCell );
@@ -59296,11 +60972,11 @@ SQLITE_PRIVATE Pager *sqlite3BtreePager(Btree *p){
*/
static void checkAppendMsg(
IntegrityCk *pCheck,
- char *zMsg1,
const char *zFormat,
...
){
va_list ap;
+ char zBuf[200];
if( !pCheck->mxErr ) return;
pCheck->mxErr--;
pCheck->nErr++;
@@ -59308,8 +60984,9 @@ static void checkAppendMsg(
if( pCheck->errMsg.nChar ){
sqlite3StrAccumAppend(&pCheck->errMsg, "\n", 1);
}
- if( zMsg1 ){
- sqlite3StrAccumAppendAll(&pCheck->errMsg, zMsg1);
+ if( pCheck->zPfx ){
+ sqlite3_snprintf(sizeof(zBuf), zBuf, pCheck->zPfx, pCheck->v1, pCheck->v2);
+ sqlite3StrAccumAppendAll(&pCheck->errMsg, zBuf);
}
sqlite3VXPrintf(&pCheck->errMsg, 1, zFormat, ap);
va_end(ap);
@@ -59342,19 +61019,19 @@ static void setPageReferenced(IntegrityCk *pCheck, Pgno iPg){
/*
** Add 1 to the reference count for page iPage. If this is the second
** reference to the page, add an error message to pCheck->zErrMsg.
-** Return 1 if there are 2 ore more references to the page and 0 if
+** Return 1 if there are 2 or more references to the page and 0 if
** if this is the first reference to the page.
**
** Also check that the page number is in bounds.
*/
-static int checkRef(IntegrityCk *pCheck, Pgno iPage, char *zContext){
+static int checkRef(IntegrityCk *pCheck, Pgno iPage){
if( iPage==0 ) return 1;
if( iPage>pCheck->nPage ){
- checkAppendMsg(pCheck, zContext, "invalid page number %d", iPage);
+ checkAppendMsg(pCheck, "invalid page number %d", iPage);
return 1;
}
if( getPageReferenced(pCheck, iPage) ){
- checkAppendMsg(pCheck, zContext, "2nd reference to page %d", iPage);
+ checkAppendMsg(pCheck, "2nd reference to page %d", iPage);
return 1;
}
setPageReferenced(pCheck, iPage);
@@ -59371,8 +61048,7 @@ static void checkPtrmap(
IntegrityCk *pCheck, /* Integrity check context */
Pgno iChild, /* Child page number */
u8 eType, /* Expected pointer map type */
- Pgno iParent, /* Expected pointer map parent page number */
- char *zContext /* Context description (used for error msg) */
+ Pgno iParent /* Expected pointer map parent page number */
){
int rc;
u8 ePtrmapType;
@@ -59381,12 +61057,12 @@ static void checkPtrmap(
rc = ptrmapGet(pCheck->pBt, iChild, &ePtrmapType, &iPtrmapParent);
if( rc!=SQLITE_OK ){
if( rc==SQLITE_NOMEM || rc==SQLITE_IOERR_NOMEM ) pCheck->mallocFailed = 1;
- checkAppendMsg(pCheck, zContext, "Failed to read ptrmap key=%d", iChild);
+ checkAppendMsg(pCheck, "Failed to read ptrmap key=%d", iChild);
return;
}
if( ePtrmapType!=eType || iPtrmapParent!=iParent ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"Bad ptr map entry key=%d expected=(%d,%d) got=(%d,%d)",
iChild, eType, iParent, ePtrmapType, iPtrmapParent);
}
@@ -59401,8 +61077,7 @@ static void checkList(
IntegrityCk *pCheck, /* Integrity checking context */
int isFreeList, /* True for a freelist. False for overflow page list */
int iPage, /* Page number for first page in the list */
- int N, /* Expected number of pages in the list */
- char *zContext /* Context for error messages */
+ int N /* Expected number of pages in the list */
){
int i;
int expected = N;
@@ -59411,14 +61086,14 @@ static void checkList(
DbPage *pOvflPage;
unsigned char *pOvflData;
if( iPage<1 ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"%d of %d pages missing from overflow list starting at %d",
N+1, expected, iFirst);
break;
}
- if( checkRef(pCheck, iPage, zContext) ) break;
+ if( checkRef(pCheck, iPage) ) break;
if( sqlite3PagerGet(pCheck->pPager, (Pgno)iPage, &pOvflPage) ){
- checkAppendMsg(pCheck, zContext, "failed to get page %d", iPage);
+ checkAppendMsg(pCheck, "failed to get page %d", iPage);
break;
}
pOvflData = (unsigned char *)sqlite3PagerGetData(pOvflPage);
@@ -59426,11 +61101,11 @@ static void checkList(
int n = get4byte(&pOvflData[4]);
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pCheck->pBt->autoVacuum ){
- checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0, zContext);
+ checkPtrmap(pCheck, iPage, PTRMAP_FREEPAGE, 0);
}
#endif
if( n>(int)pCheck->pBt->usableSize/4-2 ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"freelist leaf count too big on page %d", iPage);
N--;
}else{
@@ -59438,10 +61113,10 @@ static void checkList(
Pgno iFreePage = get4byte(&pOvflData[8+i*4]);
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pCheck->pBt->autoVacuum ){
- checkPtrmap(pCheck, iFreePage, PTRMAP_FREEPAGE, 0, zContext);
+ checkPtrmap(pCheck, iFreePage, PTRMAP_FREEPAGE, 0);
}
#endif
- checkRef(pCheck, iFreePage, zContext);
+ checkRef(pCheck, iFreePage);
}
N -= n;
}
@@ -59454,7 +61129,7 @@ static void checkList(
*/
if( pCheck->pBt->autoVacuum && N>0 ){
i = get4byte(pOvflData);
- checkPtrmap(pCheck, i, PTRMAP_OVERFLOW2, iPage, zContext);
+ checkPtrmap(pCheck, i, PTRMAP_OVERFLOW2, iPage);
}
}
#endif
@@ -59486,7 +61161,6 @@ static void checkList(
static int checkTreePage(
IntegrityCk *pCheck, /* Context for the sanity check */
int iPage, /* Page number of the page to check */
- char *zParentContext, /* Parent context */
i64 *pnParentMinKey,
i64 *pnParentMaxKey
){
@@ -59497,23 +61171,26 @@ static int checkTreePage(
u8 *data;
BtShared *pBt;
int usableSize;
- char zContext[100];
char *hit = 0;
i64 nMinKey = 0;
i64 nMaxKey = 0;
-
- sqlite3_snprintf(sizeof(zContext), zContext, "Page %d: ", iPage);
+ const char *saved_zPfx = pCheck->zPfx;
+ int saved_v1 = pCheck->v1;
+ int saved_v2 = pCheck->v2;
/* Check that the page exists
*/
pBt = pCheck->pBt;
usableSize = pBt->usableSize;
if( iPage==0 ) return 0;
- if( checkRef(pCheck, iPage, zParentContext) ) return 0;
+ if( checkRef(pCheck, iPage) ) return 0;
+ pCheck->zPfx = "Page %d: ";
+ pCheck->v1 = iPage;
if( (rc = btreeGetPage(pBt, (Pgno)iPage, &pPage, 0))!=0 ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"unable to get the page. error code=%d", rc);
- return 0;
+ depth = -1;
+ goto end_of_check;
}
/* Clear MemPage.isInit to make sure the corruption detection code in
@@ -59521,10 +61198,11 @@ static int checkTreePage(
pPage->isInit = 0;
if( (rc = btreeInitPage(pPage))!=0 ){
assert( rc==SQLITE_CORRUPT ); /* The only possible error from InitPage */
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"btreeInitPage() returns error code %d", rc);
releasePage(pPage);
- return 0;
+ depth = -1;
+ goto end_of_check;
}
/* Check out all the cells.
@@ -59537,23 +61215,23 @@ static int checkTreePage(
/* Check payload overflow pages
*/
- sqlite3_snprintf(sizeof(zContext), zContext,
- "On tree page %d cell %d: ", iPage, i);
+ pCheck->zPfx = "On tree page %d cell %d: ";
+ pCheck->v1 = iPage;
+ pCheck->v2 = i;
pCell = findCell(pPage,i);
btreeParseCellPtr(pPage, pCell, &info);
- sz = info.nData;
- if( !pPage->intKey ) sz += (int)info.nKey;
+ sz = info.nPayload;
/* For intKey pages, check that the keys are in order.
*/
- else if( i==0 ) nMinKey = nMaxKey = info.nKey;
- else{
- if( info.nKey <= nMaxKey ){
- checkAppendMsg(pCheck, zContext,
- "Rowid %lld out of order (previous was %lld)", info.nKey, nMaxKey);
+ if( pPage->intKey ){
+ if( i==0 ){
+ nMinKey = nMaxKey = info.nKey;
+ }else if( info.nKey <= nMaxKey ){
+ checkAppendMsg(pCheck,
+ "Rowid %lld out of order (previous was %lld)", info.nKey, nMaxKey);
}
nMaxKey = info.nKey;
}
- assert( sz==info.nPayload );
if( (sz>info.nLocal)
&& (&pCell[info.iOverflow]<=&pPage->aData[pBt->usableSize])
){
@@ -59561,10 +61239,10 @@ static int checkTreePage(
Pgno pgnoOvfl = get4byte(&pCell[info.iOverflow]);
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pBt->autoVacuum ){
- checkPtrmap(pCheck, pgnoOvfl, PTRMAP_OVERFLOW1, iPage, zContext);
+ checkPtrmap(pCheck, pgnoOvfl, PTRMAP_OVERFLOW1, iPage);
}
#endif
- checkList(pCheck, 0, pgnoOvfl, nPage, zContext);
+ checkList(pCheck, 0, pgnoOvfl, nPage);
}
/* Check sanity of left child page.
@@ -59573,12 +61251,12 @@ static int checkTreePage(
pgno = get4byte(pCell);
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pBt->autoVacuum ){
- checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage, zContext);
+ checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
}
#endif
- d2 = checkTreePage(pCheck, pgno, zContext, &nMinKey, i==0 ? NULL : &nMaxKey);
+ d2 = checkTreePage(pCheck, pgno, &nMinKey, i==0?NULL:&nMaxKey);
if( i>0 && d2!=depth ){
- checkAppendMsg(pCheck, zContext, "Child page depth differs");
+ checkAppendMsg(pCheck, "Child page depth differs");
}
depth = d2;
}
@@ -59586,37 +61264,39 @@ static int checkTreePage(
if( !pPage->leaf ){
pgno = get4byte(&pPage->aData[pPage->hdrOffset+8]);
- sqlite3_snprintf(sizeof(zContext), zContext,
- "On page %d at right child: ", iPage);
+ pCheck->zPfx = "On page %d at right child: ";
+ pCheck->v1 = iPage;
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pBt->autoVacuum ){
- checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage, zContext);
+ checkPtrmap(pCheck, pgno, PTRMAP_BTREE, iPage);
}
#endif
- checkTreePage(pCheck, pgno, zContext, NULL, !pPage->nCell ? NULL : &nMaxKey);
+ checkTreePage(pCheck, pgno, NULL, !pPage->nCell?NULL:&nMaxKey);
}
/* For intKey leaf pages, check that the min/max keys are in order
** with any left/parent/right pages.
*/
+ pCheck->zPfx = "Page %d: ";
+ pCheck->v1 = iPage;
if( pPage->leaf && pPage->intKey ){
/* if we are a left child page */
if( pnParentMinKey ){
/* if we are the left most child page */
if( !pnParentMaxKey ){
if( nMaxKey > *pnParentMinKey ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"Rowid %lld out of order (max larger than parent min of %lld)",
nMaxKey, *pnParentMinKey);
}
}else{
if( nMinKey <= *pnParentMinKey ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"Rowid %lld out of order (min less than parent min of %lld)",
nMinKey, *pnParentMinKey);
}
if( nMaxKey > *pnParentMaxKey ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"Rowid %lld out of order (max larger than parent max of %lld)",
nMaxKey, *pnParentMaxKey);
}
@@ -59625,7 +61305,7 @@ static int checkTreePage(
/* else if we're a right child page */
} else if( pnParentMaxKey ){
if( nMinKey <= *pnParentMaxKey ){
- checkAppendMsg(pCheck, zContext,
+ checkAppendMsg(pCheck,
"Rowid %lld out of order (min less than parent max of %lld)",
nMinKey, *pnParentMaxKey);
}
@@ -59637,6 +61317,7 @@ static int checkTreePage(
data = pPage->aData;
hdr = pPage->hdrOffset;
hit = sqlite3PageMalloc( pBt->pageSize );
+ pCheck->zPfx = 0;
if( hit==0 ){
pCheck->mallocFailed = 1;
}else{
@@ -59644,8 +61325,14 @@ static int checkTreePage(
assert( contentOffset<=usableSize ); /* Enforced by btreeInitPage() */
memset(hit+contentOffset, 0, usableSize-contentOffset);
memset(hit, 1, contentOffset);
+ /* EVIDENCE-OF: R-37002-32774 The two-byte integer at offset 3 gives the
+ ** number of cells on the page. */
nCell = get2byte(&data[hdr+3]);
+ /* EVIDENCE-OF: R-23882-45353 The cell pointer array of a b-tree page
+ ** immediately follows the b-tree page header. */
cellStart = hdr + 12 - 4*pPage->leaf;
+ /* EVIDENCE-OF: R-02776-14802 The cell pointer array consists of K 2-byte
+ ** integer offsets to the cell contents. */
for(i=0; i<nCell; i++){
int pc = get2byte(&data[cellStart+i*2]);
u32 size = 65536;
@@ -59654,12 +61341,16 @@ static int checkTreePage(
size = cellSizePtr(pPage, &data[pc]);
}
if( (int)(pc+size-1)>=usableSize ){
- checkAppendMsg(pCheck, 0,
+ pCheck->zPfx = 0;
+ checkAppendMsg(pCheck,
"Corruption detected in cell %d on page %d",i,iPage);
}else{
for(j=pc+size-1; j>=pc; j--) hit[j]++;
}
}
+ /* EVIDENCE-OF: R-20690-50594 The second field of the b-tree page header
+ ** is the offset of the first freeblock, or zero if there are no
+ ** freeblocks on the page. */
i = get2byte(&data[hdr+1]);
while( i>0 ){
int size, j;
@@ -59667,7 +61358,13 @@ static int checkTreePage(
size = get2byte(&data[i+2]);
assert( i+size<=usableSize ); /* Enforced by btreeInitPage() */
for(j=i+size-1; j>=i; j--) hit[j]++;
+ /* EVIDENCE-OF: R-58208-19414 The first 2 bytes of a freeblock are a
+ ** big-endian integer which is the offset in the b-tree page of the next
+ ** freeblock in the chain, or zero if the freeblock is the last on the
+ ** chain. */
j = get2byte(&data[i]);
+ /* EVIDENCE-OF: R-06866-39125 Freeblocks are always connected in order of
+ ** increasing offset. */
assert( j==0 || j>i+size ); /* Enforced by btreeInitPage() */
assert( j<=usableSize-4 ); /* Enforced by btreeInitPage() */
i = j;
@@ -59676,19 +61373,29 @@ static int checkTreePage(
if( hit[i]==0 ){
cnt++;
}else if( hit[i]>1 ){
- checkAppendMsg(pCheck, 0,
+ checkAppendMsg(pCheck,
"Multiple uses for byte %d of page %d", i, iPage);
break;
}
}
+ /* EVIDENCE-OF: R-43263-13491 The total number of bytes in all fragments
+ ** is stored in the fifth field of the b-tree page header.
+ ** EVIDENCE-OF: R-07161-27322 The one-byte integer at offset 7 gives the
+ ** number of fragmented free bytes within the cell content area.
+ */
if( cnt!=data[hdr+7] ){
- checkAppendMsg(pCheck, 0,
+ checkAppendMsg(pCheck,
"Fragmentation of %d bytes reported as %d on page %d",
cnt, data[hdr+7], iPage);
}
}
sqlite3PageFree(hit);
releasePage(pPage);
+
+end_of_check:
+ pCheck->zPfx = saved_zPfx;
+ pCheck->v1 = saved_v1;
+ pCheck->v2 = saved_v2;
return depth+1;
}
#endif /* SQLITE_OMIT_INTEGRITY_CHECK */
@@ -59729,6 +61436,9 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
sCheck.mxErr = mxErr;
sCheck.nErr = 0;
sCheck.mallocFailed = 0;
+ sCheck.zPfx = 0;
+ sCheck.v1 = 0;
+ sCheck.v2 = 0;
*pnErr = 0;
if( sCheck.nPage==0 ){
sqlite3BtreeLeave(p);
@@ -59748,8 +61458,10 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
/* Check the integrity of the freelist
*/
+ sCheck.zPfx = "Main freelist: ";
checkList(&sCheck, 1, get4byte(&pBt->pPage1->aData[32]),
- get4byte(&pBt->pPage1->aData[36]), "Main freelist: ");
+ get4byte(&pBt->pPage1->aData[36]));
+ sCheck.zPfx = 0;
/* Check all the tables.
*/
@@ -59757,10 +61469,12 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
if( aRoot[i]==0 ) continue;
#ifndef SQLITE_OMIT_AUTOVACUUM
if( pBt->autoVacuum && aRoot[i]>1 ){
- checkPtrmap(&sCheck, aRoot[i], PTRMAP_ROOTPAGE, 0, 0);
+ checkPtrmap(&sCheck, aRoot[i], PTRMAP_ROOTPAGE, 0);
}
#endif
- checkTreePage(&sCheck, aRoot[i], "List of tree roots: ", NULL, NULL);
+ sCheck.zPfx = "List of tree roots: ";
+ checkTreePage(&sCheck, aRoot[i], NULL, NULL);
+ sCheck.zPfx = 0;
}
/* Make sure every page in the file is referenced
@@ -59768,7 +61482,7 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
for(i=1; i<=sCheck.nPage && sCheck.mxErr; i++){
#ifdef SQLITE_OMIT_AUTOVACUUM
if( getPageReferenced(&sCheck, i)==0 ){
- checkAppendMsg(&sCheck, 0, "Page %d is never used", i);
+ checkAppendMsg(&sCheck, "Page %d is never used", i);
}
#else
/* If the database supports auto-vacuum, make sure no tables contain
@@ -59776,11 +61490,11 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
*/
if( getPageReferenced(&sCheck, i)==0 &&
(PTRMAP_PAGENO(pBt, i)!=i || !pBt->autoVacuum) ){
- checkAppendMsg(&sCheck, 0, "Page %d is never used", i);
+ checkAppendMsg(&sCheck, "Page %d is never used", i);
}
if( getPageReferenced(&sCheck, i)!=0 &&
(PTRMAP_PAGENO(pBt, i)==i && pBt->autoVacuum) ){
- checkAppendMsg(&sCheck, 0, "Pointer map page %d is referenced", i);
+ checkAppendMsg(&sCheck, "Pointer map page %d is referenced", i);
}
#endif
}
@@ -59790,7 +61504,7 @@ SQLITE_PRIVATE char *sqlite3BtreeIntegrityCheck(
** of the integrity check.
*/
if( NEVER(nRef != sqlite3PagerRefcount(pBt->pPager)) ){
- checkAppendMsg(&sCheck, 0,
+ checkAppendMsg(&sCheck,
"Outstanding page count goes from %d to %d during this analysis",
nRef, sqlite3PagerRefcount(pBt->pPager)
);
@@ -59986,7 +61700,7 @@ SQLITE_PRIVATE int sqlite3BtreePutData(BtCursor *pCsr, u32 offset, u32 amt, void
** required in case any of them are holding references to an xFetch
** version of the b-tree page modified by the accessPayload call below.
**
- ** Note that pCsr must be open on a BTREE_INTKEY table and saveCursorPosition()
+ ** Note that pCsr must be open on a INTKEY table and saveCursorPosition()
** and hence saveAllCursors() cannot fail on a BTREE_INTKEY table, hence
** saveAllCursors can only return SQLITE_OK.
*/
@@ -60072,6 +61786,11 @@ SQLITE_PRIVATE int sqlite3BtreeIsReadonly(Btree *p){
return (p->pBt->btsFlags & BTS_READ_ONLY)!=0;
}
+/*
+** Return the size of the header added to each page by this module.
+*/
+SQLITE_PRIVATE int sqlite3HeaderSizeBtree(void){ return ROUND8(sizeof(MemPage)); }
+
/************** End of btree.c ***********************************************/
/************** Begin file backup.c ******************************************/
/*
@@ -60161,12 +61880,12 @@ static Btree *findBtree(sqlite3 *pErrorDb, sqlite3 *pDb, const char *zDb){
int rc = 0;
pParse = sqlite3StackAllocZero(pErrorDb, sizeof(*pParse));
if( pParse==0 ){
- sqlite3Error(pErrorDb, SQLITE_NOMEM, "out of memory");
+ sqlite3ErrorWithMsg(pErrorDb, SQLITE_NOMEM, "out of memory");
rc = SQLITE_NOMEM;
}else{
pParse->db = pDb;
if( sqlite3OpenTempDatabase(pParse) ){
- sqlite3Error(pErrorDb, pParse->rc, "%s", pParse->zErrMsg);
+ sqlite3ErrorWithMsg(pErrorDb, pParse->rc, "%s", pParse->zErrMsg);
rc = SQLITE_ERROR;
}
sqlite3DbFree(pErrorDb, pParse->zErrMsg);
@@ -60179,7 +61898,7 @@ static Btree *findBtree(sqlite3 *pErrorDb, sqlite3 *pDb, const char *zDb){
}
if( i<0 ){
- sqlite3Error(pErrorDb, SQLITE_ERROR, "unknown database %s", zDb);
+ sqlite3ErrorWithMsg(pErrorDb, SQLITE_ERROR, "unknown database %s", zDb);
return 0;
}
@@ -60197,6 +61916,20 @@ static int setDestPgsz(sqlite3_backup *p){
}
/*
+** Check that there is no open read-transaction on the b-tree passed as the
+** second argument. If there is not, return SQLITE_OK. Otherwise, if there
+** is an open read-transaction, return SQLITE_ERROR and leave an error
+** message in database handle db.
+*/
+static int checkReadTransaction(sqlite3 *db, Btree *p){
+ if( sqlite3BtreeIsInReadTrans(p) ){
+ sqlite3ErrorWithMsg(db, SQLITE_ERROR, "destination database is in use");
+ return SQLITE_ERROR;
+ }
+ return SQLITE_OK;
+}
+
+/*
** Create an sqlite3_backup process to copy the contents of zSrcDb from
** connection handle pSrcDb to zDestDb in pDestDb. If successful, return
** a pointer to the new sqlite3_backup object.
@@ -60212,6 +61945,13 @@ SQLITE_API sqlite3_backup *sqlite3_backup_init(
){
sqlite3_backup *p; /* Value to return */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(pSrcDb)||!sqlite3SafetyCheckOk(pDestDb) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
+
/* Lock the source database handle. The destination database
** handle is not locked in this routine, but it is locked in
** sqlite3_backup_step(). The user is required to ensure that no
@@ -60224,7 +61964,7 @@ SQLITE_API sqlite3_backup *sqlite3_backup_init(
sqlite3_mutex_enter(pDestDb->mutex);
if( pSrcDb==pDestDb ){
- sqlite3Error(
+ sqlite3ErrorWithMsg(
pDestDb, SQLITE_ERROR, "source and destination must be distinct"
);
p = 0;
@@ -60235,7 +61975,7 @@ SQLITE_API sqlite3_backup *sqlite3_backup_init(
** sqlite3_backup_finish(). */
p = (sqlite3_backup *)sqlite3MallocZero(sizeof(sqlite3_backup));
if( !p ){
- sqlite3Error(pDestDb, SQLITE_NOMEM, 0);
+ sqlite3Error(pDestDb, SQLITE_NOMEM);
}
}
@@ -60248,12 +61988,15 @@ SQLITE_API sqlite3_backup *sqlite3_backup_init(
p->iNext = 1;
p->isAttached = 0;
- if( 0==p->pSrc || 0==p->pDest || setDestPgsz(p)==SQLITE_NOMEM ){
+ if( 0==p->pSrc || 0==p->pDest
+ || setDestPgsz(p)==SQLITE_NOMEM
+ || checkReadTransaction(pDestDb, p->pDest)!=SQLITE_OK
+ ){
/* One (or both) of the named databases did not exist or an OOM
- ** error was hit. The error has already been written into the
- ** pDestDb handle. All that is left to do here is free the
- ** sqlite3_backup structure.
- */
+ ** error was hit. Or there is a transaction open on the destination
+ ** database. The error has already been written into the pDestDb
+ ** handle. All that is left to do here is free the sqlite3_backup
+ ** structure. */
sqlite3_free(p);
p = 0;
}
@@ -60408,6 +62151,9 @@ SQLITE_API int sqlite3_backup_step(sqlite3_backup *p, int nPage){
int pgszSrc = 0; /* Source page size */
int pgszDest = 0; /* Destination page size */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( p==0 ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(p->pSrcDb->mutex);
sqlite3BtreeEnter(p->pSrc);
if( p->pDestDb ){
@@ -60671,12 +62417,12 @@ SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p){
}
/* If a transaction is still open on the Btree, roll it back. */
- sqlite3BtreeRollback(p->pDest, SQLITE_OK);
+ sqlite3BtreeRollback(p->pDest, SQLITE_OK, 0);
/* Set the error code of the destination database handle. */
rc = (p->rc==SQLITE_DONE) ? SQLITE_OK : p->rc;
if( p->pDestDb ){
- sqlite3Error(p->pDestDb, rc, 0);
+ sqlite3Error(p->pDestDb, rc);
/* Exit the mutexes and free the backup context structure. */
sqlite3LeaveMutexAndCloseZombie(p->pDestDb);
@@ -60697,6 +62443,12 @@ SQLITE_API int sqlite3_backup_finish(sqlite3_backup *p){
** call to sqlite3_backup_step().
*/
SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( p==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return p->nRemaining;
}
@@ -60705,6 +62457,12 @@ SQLITE_API int sqlite3_backup_remaining(sqlite3_backup *p){
** recent call to sqlite3_backup_step().
*/
SQLITE_API int sqlite3_backup_pagecount(sqlite3_backup *p){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( p==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return p->nPagecount;
}
@@ -60849,29 +62607,40 @@ copy_finished:
** this: assert( sqlite3VdbeCheckMemInvariants(pMem) );
*/
SQLITE_PRIVATE int sqlite3VdbeCheckMemInvariants(Mem *p){
- /* The MEM_Dyn bit is set if and only if Mem.xDel is a non-NULL destructor
- ** function for Mem.z
+ /* If MEM_Dyn is set then Mem.xDel!=0.
+ ** Mem.xDel is might not be initialized if MEM_Dyn is clear.
*/
assert( (p->flags & MEM_Dyn)==0 || p->xDel!=0 );
- assert( (p->flags & MEM_Dyn)!=0 || p->xDel==0 );
+
+ /* MEM_Dyn may only be set if Mem.szMalloc==0. In this way we
+ ** ensure that if Mem.szMalloc>0 then it is safe to do
+ ** Mem.z = Mem.zMalloc without having to check Mem.flags&MEM_Dyn.
+ ** That saves a few cycles in inner loops. */
+ assert( (p->flags & MEM_Dyn)==0 || p->szMalloc==0 );
+
+ /* Cannot be both MEM_Int and MEM_Real at the same time */
+ assert( (p->flags & (MEM_Int|MEM_Real))!=(MEM_Int|MEM_Real) );
+
+ /* The szMalloc field holds the correct memory allocation size */
+ assert( p->szMalloc==0
+ || p->szMalloc==sqlite3DbMallocSize(p->db,p->zMalloc) );
/* If p holds a string or blob, the Mem.z must point to exactly
** one of the following:
**
** (1) Memory in Mem.zMalloc and managed by the Mem object
** (2) Memory to be freed using Mem.xDel
- ** (3) An ephermal string or blob
+ ** (3) An ephemeral string or blob
** (4) A static string or blob
*/
- if( (p->flags & (MEM_Str|MEM_Blob)) && p->z!=0 ){
+ if( (p->flags & (MEM_Str|MEM_Blob)) && p->n>0 ){
assert(
- ((p->z==p->zMalloc)? 1 : 0) +
+ ((p->szMalloc>0 && p->z==p->zMalloc)? 1 : 0) +
((p->flags&MEM_Dyn)!=0 ? 1 : 0) +
((p->flags&MEM_Ephem)!=0 ? 1 : 0) +
((p->flags&MEM_Static)!=0 ? 1 : 0) == 1
);
}
-
return 1;
}
#endif
@@ -60925,7 +62694,7 @@ SQLITE_PRIVATE int sqlite3VdbeChangeEncoding(Mem *pMem, int desiredEnc){
** blob if bPreserve is true. If bPreserve is false, any prior content
** in pMem->z is discarded.
*/
-SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
+SQLITE_PRIVATE SQLITE_NOINLINE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
assert( sqlite3VdbeCheckMemInvariants(pMem) );
assert( (pMem->flags&MEM_RowSet)==0 );
@@ -60934,24 +62703,28 @@ SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
assert( bPreserve==0 || pMem->flags&(MEM_Blob|MEM_Str) );
testcase( bPreserve && pMem->z==0 );
- if( pMem->zMalloc==0 || sqlite3DbMallocSize(pMem->db, pMem->zMalloc)<n ){
+ assert( pMem->szMalloc==0
+ || pMem->szMalloc==sqlite3DbMallocSize(pMem->db, pMem->zMalloc) );
+ if( pMem->szMalloc<n ){
if( n<32 ) n = 32;
- if( bPreserve && pMem->z==pMem->zMalloc ){
+ if( bPreserve && pMem->szMalloc>0 && pMem->z==pMem->zMalloc ){
pMem->z = pMem->zMalloc = sqlite3DbReallocOrFree(pMem->db, pMem->z, n);
bPreserve = 0;
}else{
- sqlite3DbFree(pMem->db, pMem->zMalloc);
+ if( pMem->szMalloc>0 ) sqlite3DbFree(pMem->db, pMem->zMalloc);
pMem->zMalloc = sqlite3DbMallocRaw(pMem->db, n);
}
if( pMem->zMalloc==0 ){
- VdbeMemRelease(pMem);
+ sqlite3VdbeMemSetNull(pMem);
pMem->z = 0;
- pMem->flags = MEM_Null;
+ pMem->szMalloc = 0;
return SQLITE_NOMEM;
+ }else{
+ pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
}
}
- if( pMem->z && bPreserve && pMem->z!=pMem->zMalloc ){
+ if( bPreserve && pMem->z && pMem->z!=pMem->zMalloc ){
memcpy(pMem->zMalloc, pMem->z, pMem->n);
}
if( (pMem->flags&MEM_Dyn)!=0 ){
@@ -60961,15 +62734,37 @@ SQLITE_PRIVATE int sqlite3VdbeMemGrow(Mem *pMem, int n, int bPreserve){
pMem->z = pMem->zMalloc;
pMem->flags &= ~(MEM_Dyn|MEM_Ephem|MEM_Static);
- pMem->xDel = 0;
return SQLITE_OK;
}
/*
-** Make the given Mem object MEM_Dyn. In other words, make it so
-** that any TEXT or BLOB content is stored in memory obtained from
-** malloc(). In this way, we know that the memory is safe to be
-** overwritten or altered.
+** Change the pMem->zMalloc allocation to be at least szNew bytes.
+** If pMem->zMalloc already meets or exceeds the requested size, this
+** routine is a no-op.
+**
+** Any prior string or blob content in the pMem object may be discarded.
+** The pMem->xDel destructor is called, if it exists. Though MEM_Str
+** and MEM_Blob values may be discarded, MEM_Int, MEM_Real, and MEM_Null
+** values are preserved.
+**
+** Return SQLITE_OK on success or an error code (probably SQLITE_NOMEM)
+** if unable to complete the resizing.
+*/
+SQLITE_PRIVATE int sqlite3VdbeMemClearAndResize(Mem *pMem, int szNew){
+ assert( szNew>0 );
+ assert( (pMem->flags & MEM_Dyn)==0 || pMem->szMalloc==0 );
+ if( pMem->szMalloc<szNew ){
+ return sqlite3VdbeMemGrow(pMem, szNew, 0);
+ }
+ assert( (pMem->flags & MEM_Dyn)==0 );
+ pMem->z = pMem->zMalloc;
+ pMem->flags &= (MEM_Null|MEM_Int|MEM_Real);
+ return SQLITE_OK;
+}
+
+/*
+** Change pMem so that its MEM_Str or MEM_Blob value is stored in
+** MEM.zMalloc, where it can be safely written.
**
** Return SQLITE_OK on success or SQLITE_NOMEM if malloc fails.
*/
@@ -60979,7 +62774,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemMakeWriteable(Mem *pMem){
assert( (pMem->flags&MEM_RowSet)==0 );
ExpandBlob(pMem);
f = pMem->flags;
- if( (f&(MEM_Str|MEM_Blob)) && pMem->z!=pMem->zMalloc ){
+ if( (f&(MEM_Str|MEM_Blob)) && (pMem->szMalloc==0 || pMem->z!=pMem->zMalloc) ){
if( sqlite3VdbeMemGrow(pMem, pMem->n + 2, 1) ){
return SQLITE_NOMEM;
}
@@ -61023,15 +62818,11 @@ SQLITE_PRIVATE int sqlite3VdbeMemExpandBlob(Mem *pMem){
}
#endif
-
/*
-** Make sure the given Mem is \u0000 terminated.
+** It is already known that pMem contains an unterminated string.
+** Add the zero terminator.
*/
-SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem *pMem){
- assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
- if( (pMem->flags & MEM_Term)!=0 || (pMem->flags & MEM_Str)==0 ){
- return SQLITE_OK; /* Nothing to do */
- }
+static SQLITE_NOINLINE int vdbeMemAddTerminator(Mem *pMem){
if( sqlite3VdbeMemGrow(pMem, pMem->n+2, 1) ){
return SQLITE_NOMEM;
}
@@ -61042,20 +62833,34 @@ SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem *pMem){
}
/*
+** Make sure the given Mem is \u0000 terminated.
+*/
+SQLITE_PRIVATE int sqlite3VdbeMemNulTerminate(Mem *pMem){
+ assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
+ testcase( (pMem->flags & (MEM_Term|MEM_Str))==(MEM_Term|MEM_Str) );
+ testcase( (pMem->flags & (MEM_Term|MEM_Str))==0 );
+ if( (pMem->flags & (MEM_Term|MEM_Str))!=MEM_Str ){
+ return SQLITE_OK; /* Nothing to do */
+ }else{
+ return vdbeMemAddTerminator(pMem);
+ }
+}
+
+/*
** Add MEM_Str to the set of representations for the given Mem. Numbers
** are converted using sqlite3_snprintf(). Converting a BLOB to a string
** is a no-op.
**
-** Existing representations MEM_Int and MEM_Real are *not* invalidated.
+** Existing representations MEM_Int and MEM_Real are invalidated if
+** bForce is true but are retained if bForce is false.
**
** A MEM_Null value will never be passed to this function. This function is
** used for converting values to text for returning to the user (i.e. via
** sqlite3_value_text()), or for ensuring that values to be used as btree
** keys are strings. In the former case a NULL pointer is returned the
-** user and the later is an internal programming error.
+** user and the latter is an internal programming error.
*/
-SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, int enc){
- int rc = SQLITE_OK;
+SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, u8 enc, u8 bForce){
int fg = pMem->flags;
const int nByte = 32;
@@ -61067,11 +62872,11 @@ SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, int enc){
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
- if( sqlite3VdbeMemGrow(pMem, nByte, 0) ){
+ if( sqlite3VdbeMemClearAndResize(pMem, nByte) ){
return SQLITE_NOMEM;
}
- /* For a Real or Integer, use sqlite3_mprintf() to produce the UTF-8
+ /* For a Real or Integer, use sqlite3_snprintf() to produce the UTF-8
** string representation of the value. Then, if the required encoding
** is UTF-16le or UTF-16be do a translation.
**
@@ -61081,13 +62886,14 @@ SQLITE_PRIVATE int sqlite3VdbeMemStringify(Mem *pMem, int enc){
sqlite3_snprintf(nByte, pMem->z, "%lld", pMem->u.i);
}else{
assert( fg & MEM_Real );
- sqlite3_snprintf(nByte, pMem->z, "%!.15g", pMem->r);
+ sqlite3_snprintf(nByte, pMem->z, "%!.15g", pMem->u.r);
}
pMem->n = sqlite3Strlen30(pMem->z);
pMem->enc = SQLITE_UTF8;
pMem->flags |= MEM_Str|MEM_Term;
+ if( bForce ) pMem->flags &= ~(MEM_Int|MEM_Real);
sqlite3VdbeChangeEncoding(pMem, enc);
- return rc;
+ return SQLITE_OK;
}
/*
@@ -61102,59 +62908,90 @@ SQLITE_PRIVATE int sqlite3VdbeMemFinalize(Mem *pMem, FuncDef *pFunc){
int rc = SQLITE_OK;
if( ALWAYS(pFunc && pFunc->xFinalize) ){
sqlite3_context ctx;
+ Mem t;
assert( (pMem->flags & MEM_Null)!=0 || pFunc==pMem->u.pDef );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
memset(&ctx, 0, sizeof(ctx));
- ctx.s.flags = MEM_Null;
- ctx.s.db = pMem->db;
+ memset(&t, 0, sizeof(t));
+ t.flags = MEM_Null;
+ t.db = pMem->db;
+ ctx.pOut = &t;
ctx.pMem = pMem;
ctx.pFunc = pFunc;
pFunc->xFinalize(&ctx); /* IMP: R-24505-23230 */
- assert( 0==(pMem->flags&MEM_Dyn) && !pMem->xDel );
- sqlite3DbFree(pMem->db, pMem->zMalloc);
- memcpy(pMem, &ctx.s, sizeof(ctx.s));
+ assert( (pMem->flags & MEM_Dyn)==0 );
+ if( pMem->szMalloc>0 ) sqlite3DbFree(pMem->db, pMem->zMalloc);
+ memcpy(pMem, &t, sizeof(t));
rc = ctx.isError;
}
return rc;
}
/*
-** If the memory cell contains a string value that must be freed by
-** invoking an external callback, free it now. Calling this function
-** does not free any Mem.zMalloc buffer.
+** If the memory cell contains a value that must be freed by
+** invoking the external callback in Mem.xDel, then this routine
+** will free that value. It also sets Mem.flags to MEM_Null.
+**
+** This is a helper routine for sqlite3VdbeMemSetNull() and
+** for sqlite3VdbeMemRelease(). Use those other routines as the
+** entry point for releasing Mem resources.
*/
-SQLITE_PRIVATE void sqlite3VdbeMemReleaseExternal(Mem *p){
+static SQLITE_NOINLINE void vdbeMemClearExternAndSetNull(Mem *p){
assert( p->db==0 || sqlite3_mutex_held(p->db->mutex) );
+ assert( VdbeMemDynamic(p) );
if( p->flags&MEM_Agg ){
sqlite3VdbeMemFinalize(p, p->u.pDef);
assert( (p->flags & MEM_Agg)==0 );
- sqlite3VdbeMemRelease(p);
- }else if( p->flags&MEM_Dyn ){
+ testcase( p->flags & MEM_Dyn );
+ }
+ if( p->flags&MEM_Dyn ){
assert( (p->flags&MEM_RowSet)==0 );
assert( p->xDel!=SQLITE_DYNAMIC && p->xDel!=0 );
p->xDel((void *)p->z);
- p->xDel = 0;
}else if( p->flags&MEM_RowSet ){
sqlite3RowSetClear(p->u.pRowSet);
}else if( p->flags&MEM_Frame ){
- sqlite3VdbeMemSetNull(p);
+ VdbeFrame *pFrame = p->u.pFrame;
+ pFrame->pParent = pFrame->v->pDelFrame;
+ pFrame->v->pDelFrame = pFrame;
}
+ p->flags = MEM_Null;
}
/*
-** Release any memory held by the Mem. This may leave the Mem in an
-** inconsistent state, for example with (Mem.z==0) and
-** (Mem.flags==MEM_Str).
+** Release memory held by the Mem p, both external memory cleared
+** by p->xDel and memory in p->zMalloc.
+**
+** This is a helper routine invoked by sqlite3VdbeMemRelease() in
+** the unusual case where there really is memory in p that needs
+** to be freed.
*/
-SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p){
- assert( sqlite3VdbeCheckMemInvariants(p) );
- VdbeMemRelease(p);
- if( p->zMalloc ){
+static SQLITE_NOINLINE void vdbeMemClear(Mem *p){
+ if( VdbeMemDynamic(p) ){
+ vdbeMemClearExternAndSetNull(p);
+ }
+ if( p->szMalloc ){
sqlite3DbFree(p->db, p->zMalloc);
- p->zMalloc = 0;
+ p->szMalloc = 0;
}
p->z = 0;
- assert( p->xDel==0 ); /* Zeroed by VdbeMemRelease() above */
+}
+
+/*
+** Release any memory resources held by the Mem. Both the memory that is
+** free by Mem.xDel and the Mem.zMalloc allocation are freed.
+**
+** Use this routine prior to clean up prior to abandoning a Mem, or to
+** reset a Mem back to its minimum memory utilization.
+**
+** Use sqlite3VdbeMemSetNull() to release just the Mem.xDel space
+** prior to inserting new content into the Mem.
+*/
+SQLITE_PRIVATE void sqlite3VdbeMemRelease(Mem *p){
+ assert( sqlite3VdbeCheckMemInvariants(p) );
+ if( VdbeMemDynamic(p) || p->szMalloc ){
+ vdbeMemClear(p);
+ }
}
/*
@@ -61193,7 +63030,7 @@ static i64 doubleToInt64(double r){
** If pMem is an integer, then the value is exact. If pMem is
** a floating-point then the value returned is the integer part.
** If pMem is a string or blob, then we make an attempt to convert
-** it into a integer and return that. If pMem represents an
+** it into an integer and return that. If pMem represents an
** an SQL-NULL value, return 0.
**
** If pMem represents a string value, its encoding might be changed.
@@ -61206,11 +63043,10 @@ SQLITE_PRIVATE i64 sqlite3VdbeIntValue(Mem *pMem){
if( flags & MEM_Int ){
return pMem->u.i;
}else if( flags & MEM_Real ){
- return doubleToInt64(pMem->r);
+ return doubleToInt64(pMem->u.r);
}else if( flags & (MEM_Str|MEM_Blob) ){
i64 value = 0;
assert( pMem->z || pMem->n==0 );
- testcase( pMem->z==0 );
sqlite3Atoi64(pMem->z, &value, pMem->n, pMem->enc);
return value;
}else{
@@ -61228,7 +63064,7 @@ SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
if( pMem->flags & MEM_Real ){
- return pMem->r;
+ return pMem->u.r;
}else if( pMem->flags & MEM_Int ){
return (double)pMem->u.i;
}else if( pMem->flags & (MEM_Str|MEM_Blob) ){
@@ -61247,12 +63083,13 @@ SQLITE_PRIVATE double sqlite3VdbeRealValue(Mem *pMem){
** MEM_Int if we can.
*/
SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){
+ i64 ix;
assert( pMem->flags & MEM_Real );
assert( (pMem->flags & MEM_RowSet)==0 );
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
- pMem->u.i = doubleToInt64(pMem->r);
+ ix = doubleToInt64(pMem->u.r);
/* Only mark the value as an integer if
**
@@ -61264,11 +63101,9 @@ SQLITE_PRIVATE void sqlite3VdbeIntegerAffinity(Mem *pMem){
** the second condition under the assumption that addition overflow causes
** values to wrap around.
*/
- if( pMem->r==(double)pMem->u.i
- && pMem->u.i>SMALLEST_INT64
- && pMem->u.i<LARGEST_INT64
- ){
- pMem->flags |= MEM_Int;
+ if( pMem->u.r==ix && ix>SMALLEST_INT64 && ix<LARGEST_INT64 ){
+ pMem->u.i = ix;
+ MemSetTypeFlag(pMem, MEM_Int);
}
}
@@ -61293,7 +63128,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemRealify(Mem *pMem){
assert( pMem->db==0 || sqlite3_mutex_held(pMem->db->mutex) );
assert( EIGHT_BYTE_ALIGNMENT(pMem) );
- pMem->r = sqlite3VdbeRealValue(pMem);
+ pMem->u.r = sqlite3VdbeRealValue(pMem);
MemSetTypeFlag(pMem, MEM_Real);
return SQLITE_OK;
}
@@ -61313,7 +63148,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem *pMem){
if( 0==sqlite3Atoi64(pMem->z, &pMem->u.i, pMem->n, pMem->enc) ){
MemSetTypeFlag(pMem, MEM_Int);
}else{
- pMem->r = sqlite3VdbeRealValue(pMem);
+ pMem->u.r = sqlite3VdbeRealValue(pMem);
MemSetTypeFlag(pMem, MEM_Real);
sqlite3VdbeIntegerAffinity(pMem);
}
@@ -61324,18 +63159,80 @@ SQLITE_PRIVATE int sqlite3VdbeMemNumerify(Mem *pMem){
}
/*
+** Cast the datatype of the value in pMem according to the affinity
+** "aff". Casting is different from applying affinity in that a cast
+** is forced. In other words, the value is converted into the desired
+** affinity even if that results in loss of data. This routine is
+** used (for example) to implement the SQL "cast()" operator.
+*/
+SQLITE_PRIVATE void sqlite3VdbeMemCast(Mem *pMem, u8 aff, u8 encoding){
+ if( pMem->flags & MEM_Null ) return;
+ switch( aff ){
+ case SQLITE_AFF_NONE: { /* Really a cast to BLOB */
+ if( (pMem->flags & MEM_Blob)==0 ){
+ sqlite3ValueApplyAffinity(pMem, SQLITE_AFF_TEXT, encoding);
+ assert( pMem->flags & MEM_Str || pMem->db->mallocFailed );
+ MemSetTypeFlag(pMem, MEM_Blob);
+ }else{
+ pMem->flags &= ~(MEM_TypeMask&~MEM_Blob);
+ }
+ break;
+ }
+ case SQLITE_AFF_NUMERIC: {
+ sqlite3VdbeMemNumerify(pMem);
+ break;
+ }
+ case SQLITE_AFF_INTEGER: {
+ sqlite3VdbeMemIntegerify(pMem);
+ break;
+ }
+ case SQLITE_AFF_REAL: {
+ sqlite3VdbeMemRealify(pMem);
+ break;
+ }
+ default: {
+ assert( aff==SQLITE_AFF_TEXT );
+ assert( MEM_Str==(MEM_Blob>>3) );
+ pMem->flags |= (pMem->flags&MEM_Blob)>>3;
+ sqlite3ValueApplyAffinity(pMem, SQLITE_AFF_TEXT, encoding);
+ assert( pMem->flags & MEM_Str || pMem->db->mallocFailed );
+ pMem->flags &= ~(MEM_Int|MEM_Real|MEM_Blob|MEM_Zero);
+ break;
+ }
+ }
+}
+
+/*
+** Initialize bulk memory to be a consistent Mem object.
+**
+** The minimum amount of initialization feasible is performed.
+*/
+SQLITE_PRIVATE void sqlite3VdbeMemInit(Mem *pMem, sqlite3 *db, u16 flags){
+ assert( (flags & ~MEM_TypeMask)==0 );
+ pMem->flags = flags;
+ pMem->db = db;
+ pMem->szMalloc = 0;
+}
+
+
+/*
** Delete any previous value and set the value stored in *pMem to NULL.
+**
+** This routine calls the Mem.xDel destructor to dispose of values that
+** require the destructor. But it preserves the Mem.zMalloc memory allocation.
+** To free all resources, use sqlite3VdbeMemRelease(), which both calls this
+** routine to invoke the destructor and deallocates Mem.zMalloc.
+**
+** Use this routine to reset the Mem prior to insert a new value.
+**
+** Use sqlite3VdbeMemRelease() to complete erase the Mem prior to abandoning it.
*/
SQLITE_PRIVATE void sqlite3VdbeMemSetNull(Mem *pMem){
- if( pMem->flags & MEM_Frame ){
- VdbeFrame *pFrame = pMem->u.pFrame;
- pFrame->pParent = pFrame->v->pDelFrame;
- pFrame->v->pDelFrame = pFrame;
- }
- if( pMem->flags & MEM_RowSet ){
- sqlite3RowSetClear(pMem->u.pRowSet);
+ if( VdbeMemDynamic(pMem) ){
+ vdbeMemClearExternAndSetNull(pMem);
+ }else{
+ pMem->flags = MEM_Null;
}
- MemSetTypeFlag(pMem, MEM_Null);
}
SQLITE_PRIVATE void sqlite3ValueSetNull(sqlite3_value *p){
sqlite3VdbeMemSetNull((Mem*)p);
@@ -61352,14 +63249,18 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
if( n<0 ) n = 0;
pMem->u.nZero = n;
pMem->enc = SQLITE_UTF8;
+ pMem->z = 0;
+}
-#ifdef SQLITE_OMIT_INCRBLOB
- sqlite3VdbeMemGrow(pMem, n, 0);
- if( pMem->z ){
- pMem->n = n;
- memset(pMem->z, 0, n);
- }
-#endif
+/*
+** The pMem is known to contain content that needs to be destroyed prior
+** to a value change. So invoke the destructor, then set the value to
+** a 64-bit integer.
+*/
+static SQLITE_NOINLINE void vdbeReleaseAndSetInt64(Mem *pMem, i64 val){
+ sqlite3VdbeMemSetNull(pMem);
+ pMem->u.i = val;
+ pMem->flags = MEM_Int;
}
/*
@@ -61367,9 +63268,12 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetZeroBlob(Mem *pMem, int n){
** manifest type INTEGER.
*/
SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem *pMem, i64 val){
- sqlite3VdbeMemRelease(pMem);
- pMem->u.i = val;
- pMem->flags = MEM_Int;
+ if( VdbeMemDynamic(pMem) ){
+ vdbeReleaseAndSetInt64(pMem, val);
+ }else{
+ pMem->u.i = val;
+ pMem->flags = MEM_Int;
+ }
}
#ifndef SQLITE_OMIT_FLOATING_POINT
@@ -61378,11 +63282,9 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetInt64(Mem *pMem, i64 val){
** manifest type REAL.
*/
SQLITE_PRIVATE void sqlite3VdbeMemSetDouble(Mem *pMem, double val){
- if( sqlite3IsNaN(val) ){
- sqlite3VdbeMemSetNull(pMem);
- }else{
- sqlite3VdbeMemRelease(pMem);
- pMem->r = val;
+ sqlite3VdbeMemSetNull(pMem);
+ if( !sqlite3IsNaN(val) ){
+ pMem->u.r = val;
pMem->flags = MEM_Real;
}
}
@@ -61400,10 +63302,11 @@ SQLITE_PRIVATE void sqlite3VdbeMemSetRowSet(Mem *pMem){
pMem->zMalloc = sqlite3DbMallocRaw(db, 64);
if( db->mallocFailed ){
pMem->flags = MEM_Null;
+ pMem->szMalloc = 0;
}else{
assert( pMem->zMalloc );
- pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc,
- sqlite3DbMallocSize(db, pMem->zMalloc));
+ pMem->szMalloc = sqlite3DbMallocSize(db, pMem->zMalloc);
+ pMem->u.pRowSet = sqlite3RowSetInit(db, pMem->zMalloc, pMem->szMalloc);
assert( pMem->u.pRowSet!=0 );
pMem->flags = MEM_RowSet;
}
@@ -61427,7 +63330,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemTooBig(Mem *p){
#ifdef SQLITE_DEBUG
/*
-** This routine prepares a memory cell for modication by breaking
+** This routine prepares a memory cell for modification by breaking
** its link to a shallow copy and by marking any current shallow
** copies of this cell as invalid.
**
@@ -61460,9 +63363,9 @@ SQLITE_PRIVATE void sqlite3VdbeMemAboutToChange(Vdbe *pVdbe, Mem *pMem){
*/
SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int srcType){
assert( (pFrom->flags & MEM_RowSet)==0 );
- VdbeMemRelease(pTo);
+ assert( pTo->db==pFrom->db );
+ if( VdbeMemDynamic(pTo) ) vdbeMemClearExternAndSetNull(pTo);
memcpy(pTo, pFrom, MEMCELLSIZE);
- pTo->xDel = 0;
if( (pFrom->flags&MEM_Static)==0 ){
pTo->flags &= ~(MEM_Dyn|MEM_Static|MEM_Ephem);
assert( srcType==MEM_Ephem || srcType==MEM_Static );
@@ -61477,12 +63380,11 @@ SQLITE_PRIVATE void sqlite3VdbeMemShallowCopy(Mem *pTo, const Mem *pFrom, int sr
SQLITE_PRIVATE int sqlite3VdbeMemCopy(Mem *pTo, const Mem *pFrom){
int rc = SQLITE_OK;
+ assert( pTo->db==pFrom->db );
assert( (pFrom->flags & MEM_RowSet)==0 );
- VdbeMemRelease(pTo);
+ if( VdbeMemDynamic(pTo) ) vdbeMemClearExternAndSetNull(pTo);
memcpy(pTo, pFrom, MEMCELLSIZE);
pTo->flags &= ~MEM_Dyn;
- pTo->xDel = 0;
-
if( pTo->flags&(MEM_Str|MEM_Blob) ){
if( 0==(pFrom->flags&MEM_Static) ){
pTo->flags |= MEM_Ephem;
@@ -61507,8 +63409,7 @@ SQLITE_PRIVATE void sqlite3VdbeMemMove(Mem *pTo, Mem *pFrom){
sqlite3VdbeMemRelease(pTo);
memcpy(pTo, pFrom, sizeof(Mem));
pFrom->flags = MEM_Null;
- pFrom->xDel = 0;
- pFrom->zMalloc = 0;
+ pFrom->szMalloc = 0;
}
/*
@@ -61555,7 +63456,8 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
if( nByte<0 ){
assert( enc!=0 );
if( enc==SQLITE_UTF8 ){
- for(nByte=0; nByte<=iLimit && z[nByte]; nByte++){}
+ nByte = sqlite3Strlen30(z);
+ if( nByte>iLimit ) nByte = iLimit+1;
}else{
for(nByte=0; nByte<=iLimit && (z[nByte] | z[nByte+1]); nByte+=2){}
}
@@ -61574,14 +63476,17 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
if( nByte>iLimit ){
return SQLITE_TOOBIG;
}
- if( sqlite3VdbeMemGrow(pMem, nAlloc, 0) ){
+ testcase( nAlloc==0 );
+ testcase( nAlloc==31 );
+ testcase( nAlloc==32 );
+ if( sqlite3VdbeMemClearAndResize(pMem, MAX(nAlloc,32)) ){
return SQLITE_NOMEM;
}
memcpy(pMem->z, z, nAlloc);
}else if( xDel==SQLITE_DYNAMIC ){
sqlite3VdbeMemRelease(pMem);
pMem->zMalloc = pMem->z = (char *)z;
- pMem->xDel = 0;
+ pMem->szMalloc = sqlite3DbMallocSize(pMem->db, pMem->zMalloc);
}else{
sqlite3VdbeMemRelease(pMem);
pMem->z = (char *)z;
@@ -61613,8 +63518,11 @@ SQLITE_PRIVATE int sqlite3VdbeMemSetStr(
** key is true to get the key or false to get data. The result is written
** into the pMem element.
**
-** The pMem structure is assumed to be uninitialized. Any prior content
-** is overwritten without being freed.
+** The pMem object must have been initialized. This routine will use
+** pMem->zMalloc to hold the content from the btree, if possible. New
+** pMem->zMalloc space will be allocated if necessary. The calling routine
+** is responsible for making sure that the pMem object is eventually
+** destroyed.
**
** If this routine fails for any reason (malloc returns NULL or unable
** to read from the disk) then the pMem is left in an inconsistent state.
@@ -61631,6 +63539,7 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(
int rc = SQLITE_OK; /* Return code */
assert( sqlite3BtreeCursorIsValid(pCur) );
+ assert( !VdbeMemDynamic(pMem) );
/* Note: the calls to BtreeKeyFetch() and DataFetch() below assert()
** that both the BtShared and database handle mutexes are held. */
@@ -61643,54 +63552,50 @@ SQLITE_PRIVATE int sqlite3VdbeMemFromBtree(
assert( zData!=0 );
if( offset+amt<=available ){
- sqlite3VdbeMemRelease(pMem);
pMem->z = &zData[offset];
pMem->flags = MEM_Blob|MEM_Ephem;
pMem->n = (int)amt;
- }else if( SQLITE_OK==(rc = sqlite3VdbeMemGrow(pMem, amt+2, 0)) ){
- if( key ){
- rc = sqlite3BtreeKey(pCur, offset, amt, pMem->z);
- }else{
- rc = sqlite3BtreeData(pCur, offset, amt, pMem->z);
- }
- if( rc==SQLITE_OK ){
- pMem->z[amt] = 0;
- pMem->z[amt+1] = 0;
- pMem->flags = MEM_Blob|MEM_Term;
- pMem->n = (int)amt;
- }else{
- sqlite3VdbeMemRelease(pMem);
+ }else{
+ pMem->flags = MEM_Null;
+ if( SQLITE_OK==(rc = sqlite3VdbeMemClearAndResize(pMem, amt+2)) ){
+ if( key ){
+ rc = sqlite3BtreeKey(pCur, offset, amt, pMem->z);
+ }else{
+ rc = sqlite3BtreeData(pCur, offset, amt, pMem->z);
+ }
+ if( rc==SQLITE_OK ){
+ pMem->z[amt] = 0;
+ pMem->z[amt+1] = 0;
+ pMem->flags = MEM_Blob|MEM_Term;
+ pMem->n = (int)amt;
+ }else{
+ sqlite3VdbeMemRelease(pMem);
+ }
}
}
return rc;
}
-/* This function is only available internally, it is not part of the
-** external API. It works in a similar way to sqlite3_value_text(),
-** except the data returned is in the encoding specified by the second
-** parameter, which must be one of SQLITE_UTF16BE, SQLITE_UTF16LE or
-** SQLITE_UTF8.
-**
-** (2006-02-16:) The enc value can be or-ed with SQLITE_UTF16_ALIGNED.
-** If that is the case, then the result must be aligned on an even byte
-** boundary.
+/*
+** The pVal argument is known to be a value other than NULL.
+** Convert it into a string with encoding enc and return a pointer
+** to a zero-terminated version of that string.
*/
-SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
- if( !pVal ) return 0;
-
+static SQLITE_NOINLINE const void *valueToText(sqlite3_value* pVal, u8 enc){
+ assert( pVal!=0 );
assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
assert( (pVal->flags & MEM_RowSet)==0 );
-
- if( pVal->flags&MEM_Null ){
- return 0;
- }
- assert( (MEM_Blob>>3) == MEM_Str );
- pVal->flags |= (pVal->flags & MEM_Blob)>>3;
- ExpandBlob(pVal);
- if( pVal->flags&MEM_Str ){
- sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
+ assert( (pVal->flags & (MEM_Null))==0 );
+ if( pVal->flags & (MEM_Blob|MEM_Str) ){
+ pVal->flags |= MEM_Str;
+ if( pVal->flags & MEM_Zero ){
+ sqlite3VdbeMemExpandBlob(pVal);
+ }
+ if( pVal->enc != (enc & ~SQLITE_UTF16_ALIGNED) ){
+ sqlite3VdbeChangeEncoding(pVal, enc & ~SQLITE_UTF16_ALIGNED);
+ }
if( (enc & SQLITE_UTF16_ALIGNED)!=0 && 1==(1&SQLITE_PTR_TO_INT(pVal->z)) ){
assert( (pVal->flags & (MEM_Ephem|MEM_Static))!=0 );
if( sqlite3VdbeMemMakeWriteable(pVal)!=SQLITE_OK ){
@@ -61699,8 +63604,7 @@ SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
}
sqlite3VdbeMemNulTerminate(pVal); /* IMP: R-31275-44060 */
}else{
- assert( (pVal->flags&MEM_Blob)==0 );
- sqlite3VdbeMemStringify(pVal, enc);
+ sqlite3VdbeMemStringify(pVal, enc, 0);
assert( 0==(1&SQLITE_PTR_TO_INT(pVal->z)) );
}
assert(pVal->enc==(enc & ~SQLITE_UTF16_ALIGNED) || pVal->db==0
@@ -61712,6 +63616,30 @@ SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
}
}
+/* This function is only available internally, it is not part of the
+** external API. It works in a similar way to sqlite3_value_text(),
+** except the data returned is in the encoding specified by the second
+** parameter, which must be one of SQLITE_UTF16BE, SQLITE_UTF16LE or
+** SQLITE_UTF8.
+**
+** (2006-02-16:) The enc value can be or-ed with SQLITE_UTF16_ALIGNED.
+** If that is the case, then the result must be aligned on an even byte
+** boundary.
+*/
+SQLITE_PRIVATE const void *sqlite3ValueText(sqlite3_value* pVal, u8 enc){
+ if( !pVal ) return 0;
+ assert( pVal->db==0 || sqlite3_mutex_held(pVal->db->mutex) );
+ assert( (enc&3)==(enc&~SQLITE_UTF16_ALIGNED) );
+ assert( (pVal->flags & MEM_RowSet)==0 );
+ if( (pVal->flags&(MEM_Str|MEM_Term))==(MEM_Str|MEM_Term) && pVal->enc==enc ){
+ return pVal->z;
+ }
+ if( pVal->flags&MEM_Null ){
+ return 0;
+ }
+ return valueToText(pVal, enc);
+}
+
/*
** Create a new sqlite3_value object.
*/
@@ -61816,9 +63744,20 @@ static int valueFromExpr(
*ppVal = 0;
return SQLITE_OK;
}
- op = pExpr->op;
+ while( (op = pExpr->op)==TK_UPLUS ) pExpr = pExpr->pLeft;
if( NEVER(op==TK_REGISTER) ) op = pExpr->op2;
+ if( op==TK_CAST ){
+ u8 aff = sqlite3AffinityType(pExpr->u.zToken,0);
+ rc = valueFromExpr(db, pExpr->pLeft, enc, aff, ppVal, pCtx);
+ testcase( rc!=SQLITE_OK );
+ if( *ppVal ){
+ sqlite3VdbeMemCast(*ppVal, aff, SQLITE_UTF8);
+ sqlite3ValueApplyAffinity(*ppVal, affinity, SQLITE_UTF8);
+ }
+ return rc;
+ }
+
/* Handle negative integers in a single step. This is needed in the
** case when the value is -9223372036854775808.
*/
@@ -61855,14 +63794,14 @@ static int valueFromExpr(
&& pVal!=0
){
sqlite3VdbeMemNumerify(pVal);
- if( pVal->u.i==SMALLEST_INT64 ){
- pVal->flags &= ~MEM_Int;
- pVal->flags |= MEM_Real;
- pVal->r = (double)SMALLEST_INT64;
+ if( pVal->flags & MEM_Real ){
+ pVal->u.r = -pVal->u.r;
+ }else if( pVal->u.i==SMALLEST_INT64 ){
+ pVal->u.r = -(double)SMALLEST_INT64;
+ MemSetTypeFlag(pVal, MEM_Real);
}else{
pVal->u.i = -pVal->u.i;
}
- pVal->r = -pVal->r;
sqlite3ValueApplyAffinity(pVal, affinity, enc);
}
}else if( op==TK_NULL ){
@@ -61953,7 +63892,7 @@ static void recordFunc(
sqlite3_result_error_nomem(context);
}else{
aRet[0] = nSerial+1;
- sqlite3PutVarint(&aRet[1], iSerial);
+ putVarint32(&aRet[1], iSerial);
sqlite3VdbeSerialPut(&aRet[1+nSerial], argv[0], iSerial);
sqlite3_result_blob(context, aRet, nRet, SQLITE_TRANSIENT);
sqlite3DbFree(db, aRet);
@@ -62170,7 +64109,7 @@ SQLITE_PRIVATE void sqlite3Stat4ProbeFree(UnpackedRecord *pRec){
Mem *aMem = pRec->aMem;
sqlite3 *db = aMem[0].db;
for(i=0; i<nCol; i++){
- sqlite3DbFree(db, aMem[i].zMalloc);
+ if( aMem[i].szMalloc ) sqlite3DbFree(db, aMem[i].zMalloc);
}
sqlite3KeyInfoUnref(pRec->pKeyInfo);
sqlite3DbFree(db, pRec);
@@ -62230,9 +64169,7 @@ SQLITE_PRIVATE int sqlite3ValueBytes(sqlite3_value *pVal, u8 enc){
**
*************************************************************************
** This file contains code used for creating, destroying, and populating
-** a VDBE (or an "sqlite3_stmt" as it is known to the outside world.) Prior
-** to version 2.8.7, all this code was combined into the vdbe.c source file.
-** But that file was getting too big so this subroutines were split out.
+** a VDBE (or an "sqlite3_stmt" as it is known to the outside world.)
*/
/*
@@ -62616,6 +64553,7 @@ static Op *opIterNext(VdbeOpIter *p){
*/
SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
int hasAbort = 0;
+ int hasFkCounter = 0;
Op *pOp;
VdbeOpIter sIter;
memset(&sIter, 0, sizeof(sIter));
@@ -62624,15 +64562,17 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
while( (pOp = opIterNext(&sIter))!=0 ){
int opcode = pOp->opcode;
if( opcode==OP_Destroy || opcode==OP_VUpdate || opcode==OP_VRename
-#ifndef SQLITE_OMIT_FOREIGN_KEY
- || (opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1)
-#endif
|| ((opcode==OP_Halt || opcode==OP_HaltIfNull)
&& ((pOp->p1&0xff)==SQLITE_CONSTRAINT && pOp->p2==OE_Abort))
){
hasAbort = 1;
break;
}
+#ifndef SQLITE_OMIT_FOREIGN_KEY
+ if( opcode==OP_FkCounter && pOp->p1==0 && pOp->p2==1 ){
+ hasFkCounter = 1;
+ }
+#endif
}
sqlite3DbFree(v->db, sIter.apSub);
@@ -62641,7 +64581,7 @@ SQLITE_PRIVATE int sqlite3VdbeAssertMayAbort(Vdbe *v, int mayAbort){
** through all opcodes and hasAbort may be set incorrectly. Return
** true for this case to prevent the assert() in the callers frame
** from failing. */
- return ( v->db->mallocFailed || hasAbort==mayAbort );
+ return ( v->db->mallocFailed || hasAbort==mayAbort || hasFkCounter );
}
#endif /* SQLITE_DEBUG - the sqlite3AssertMayAbort() function */
@@ -62817,6 +64757,34 @@ SQLITE_PRIVATE int sqlite3VdbeAddOpList(Vdbe *p, int nOp, VdbeOpList const *aOp,
return addr;
}
+#if defined(SQLITE_ENABLE_STMT_SCANSTATUS)
+/*
+** Add an entry to the array of counters managed by sqlite3_stmt_scanstatus().
+*/
+SQLITE_PRIVATE void sqlite3VdbeScanStatus(
+ Vdbe *p, /* VM to add scanstatus() to */
+ int addrExplain, /* Address of OP_Explain (or 0) */
+ int addrLoop, /* Address of loop counter */
+ int addrVisit, /* Address of rows visited counter */
+ LogEst nEst, /* Estimated number of output rows */
+ const char *zName /* Name of table or index being scanned */
+){
+ int nByte = (p->nScan+1) * sizeof(ScanStatus);
+ ScanStatus *aNew;
+ aNew = (ScanStatus*)sqlite3DbRealloc(p->db, p->aScan, nByte);
+ if( aNew ){
+ ScanStatus *pNew = &aNew[p->nScan++];
+ pNew->addrExplain = addrExplain;
+ pNew->addrLoop = addrLoop;
+ pNew->addrVisit = addrVisit;
+ pNew->nEst = nEst;
+ pNew->zName = sqlite3DbStrDup(p->db, zName);
+ p->aScan = aNew;
+ }
+}
+#endif
+
+
/*
** Change the value of the P1 operand for a specific instruction.
** This routine is useful when a large program is loaded from a
@@ -62916,7 +64884,7 @@ static void freeP4(sqlite3 *db, int p4type, void *p4){
sqlite3ValueFree((sqlite3_value*)p4);
}else{
Mem *p = (Mem*)p4;
- sqlite3DbFree(db, p->zMalloc);
+ if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
sqlite3DbFree(db, p);
}
break;
@@ -62972,7 +64940,8 @@ SQLITE_PRIVATE void sqlite3VdbeChangeToNoop(Vdbe *p, int addr){
}
/*
-** Remove the last opcode inserted
+** If the last opcode is "op" and it is not a jump destination,
+** then remove it. Return true if and only if an opcode was removed.
*/
SQLITE_PRIVATE int sqlite3VdbeDeletePriorOpcode(Vdbe *p, u8 op){
if( (p->nOp-1)>(p->pParse->iFixedOp) && p->aOp[p->nOp-1].opcode==op ){
@@ -63113,7 +65082,7 @@ SQLITE_PRIVATE void sqlite3VdbeSetLineNumber(Vdbe *v, int iLine){
** routine, then a pointer to a dummy VdbeOp will be returned. That opcode
** is readable but not writable, though it is cast to a writable value.
** The return of a dummy opcode allows the call to continue functioning
-** after a OOM fault without having to check to see if the return from
+** after an OOM fault without having to check to see if the return from
** this routine is a valid pointer. But because the dummy.opcode is 0,
** dummy will never be written to. This is verified by code inspection and
** by running with Valgrind.
@@ -63294,7 +65263,7 @@ static char *displayP4(Op *pOp, char *zTemp, int nTemp){
}else if( pMem->flags & MEM_Int ){
sqlite3_snprintf(nTemp, zTemp, "%lld", pMem->u.i);
}else if( pMem->flags & MEM_Real ){
- sqlite3_snprintf(nTemp, zTemp, "%.16g", pMem->r);
+ sqlite3_snprintf(nTemp, zTemp, "%.16g", pMem->u.r);
}else if( pMem->flags & MEM_Null ){
sqlite3_snprintf(nTemp, zTemp, "NULL");
}else{
@@ -63444,16 +65413,16 @@ SQLITE_PRIVATE void sqlite3VdbePrintOp(FILE *pOut, int pc, Op *pOp){
*/
static void releaseMemArray(Mem *p, int N){
if( p && N ){
- Mem *pEnd;
+ Mem *pEnd = &p[N];
sqlite3 *db = p->db;
u8 malloc_failed = db->mallocFailed;
if( db->pnBytesFreed ){
- for(pEnd=&p[N]; p<pEnd; p++){
- sqlite3DbFree(db, p->zMalloc);
- }
+ do{
+ if( p->szMalloc ) sqlite3DbFree(db, p->zMalloc);
+ }while( (++p)<pEnd );
return;
}
- for(pEnd=&p[N]; p<pEnd; p++){
+ do{
assert( (&p[1])==pEnd || p[0].db==p[1].db );
assert( sqlite3VdbeCheckMemInvariants(p) );
@@ -63475,13 +65444,13 @@ static void releaseMemArray(Mem *p, int N){
testcase( p->flags & MEM_RowSet );
if( p->flags&(MEM_Agg|MEM_Dyn|MEM_Frame|MEM_RowSet) ){
sqlite3VdbeMemRelease(p);
- }else if( p->zMalloc ){
+ }else if( p->szMalloc ){
sqlite3DbFree(db, p->zMalloc);
- p->zMalloc = 0;
+ p->szMalloc = 0;
}
p->flags = MEM_Undefined;
- }
+ }while( (++p)<pEnd );
db->mallocFailed = malloc_failed;
}
}
@@ -63644,7 +65613,7 @@ SQLITE_PRIVATE int sqlite3VdbeList(
pMem->u.i = pOp->p3; /* P3 */
pMem++;
- if( sqlite3VdbeMemGrow(pMem, 32, 0) ){ /* P4 */
+ if( sqlite3VdbeMemClearAndResize(pMem, 32) ){ /* P4 */
assert( p->db->mallocFailed );
return SQLITE_ERROR;
}
@@ -63660,7 +65629,7 @@ SQLITE_PRIVATE int sqlite3VdbeList(
pMem++;
if( p->explain==1 ){
- if( sqlite3VdbeMemGrow(pMem, 4, 0) ){
+ if( sqlite3VdbeMemClearAndResize(pMem, 4) ){
assert( p->db->mallocFailed );
return SQLITE_ERROR;
}
@@ -63671,7 +65640,7 @@ SQLITE_PRIVATE int sqlite3VdbeList(
pMem++;
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
- if( sqlite3VdbeMemGrow(pMem, 500, 0) ){
+ if( sqlite3VdbeMemClearAndResize(pMem, 500) ){
assert( p->db->mallocFailed );
return SQLITE_ERROR;
}
@@ -63824,13 +65793,13 @@ SQLITE_PRIVATE void sqlite3VdbeRewind(Vdbe *p){
/*
** Prepare a virtual machine for execution for the first time after
** creating the virtual machine. This involves things such
-** as allocating stack space and initializing the program counter.
+** as allocating registers and initializing the program counter.
** After the VDBE has be prepped, it can be executed by one or more
** calls to sqlite3VdbeExec().
**
-** This function may be called exact once on a each virtual machine.
+** This function may be called exactly once on each virtual machine.
** After this routine is called the VM has been "packaged" and is ready
-** to run. After this routine is called, futher calls to
+** to run. After this routine is called, further calls to
** sqlite3VdbeAddOp() functions are prohibited. This routine disconnects
** the Vdbe from the Parse object that helped generate it so that the
** the Vdbe becomes an independent entity and the Parse object can be
@@ -63914,6 +65883,9 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
p->apCsr = allocSpace(p->apCsr, nCursor*sizeof(VdbeCursor*),
&zCsr, zEnd, &nByte);
p->aOnceFlag = allocSpace(p->aOnceFlag, nOnce, &zCsr, zEnd, &nByte);
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ p->anExec = allocSpace(p->anExec, p->nOp*sizeof(i64), &zCsr, zEnd, &nByte);
+#endif
if( nByte ){
p->pFree = sqlite3DbMallocZero(db, nByte);
}
@@ -63930,7 +65902,7 @@ SQLITE_PRIVATE void sqlite3VdbeMakeReady(
p->aVar[n].db = db;
}
}
- if( p->azVar ){
+ if( p->azVar && pParse->nzVar>0 ){
p->nzVar = pParse->nzVar;
memcpy(p->azVar, pParse->azVar, p->nzVar*sizeof(p->azVar[0]));
memset(pParse->azVar, 0, pParse->nzVar*sizeof(pParse->azVar[0]));
@@ -63964,7 +65936,7 @@ SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
sqlite3BtreeCloseCursor(pCx->pCursor);
}
#ifndef SQLITE_OMIT_VIRTUALTABLE
- if( pCx->pVtabCursor ){
+ else if( pCx->pVtabCursor ){
sqlite3_vtab_cursor *pVtabCursor = pCx->pVtabCursor;
const sqlite3_module *pModule = pVtabCursor->pVtab->pModule;
p->inVtabMethod = 1;
@@ -63981,6 +65953,9 @@ SQLITE_PRIVATE void sqlite3VdbeFreeCursor(Vdbe *p, VdbeCursor *pCx){
*/
SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
Vdbe *v = pFrame->v;
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ v->anExec = pFrame->anExec;
+#endif
v->aOnceFlag = pFrame->aOnceFlag;
v->nOnceFlag = pFrame->nOnceFlag;
v->aOp = pFrame->aOp;
@@ -63991,6 +65966,7 @@ SQLITE_PRIVATE int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
v->nCursor = pFrame->nCursor;
v->db->lastRowid = pFrame->lastRowid;
v->nChange = pFrame->nChange;
+ v->db->nChange = pFrame->nDbChange;
return pFrame->pc;
}
@@ -64007,9 +65983,10 @@ static void closeAllCursors(Vdbe *p){
VdbeFrame *pFrame;
for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
sqlite3VdbeFrameRestore(pFrame);
+ p->pFrame = 0;
+ p->nFrame = 0;
}
- p->pFrame = 0;
- p->nFrame = 0;
+ assert( p->nFrame==0 );
if( p->apCsr ){
int i;
@@ -64031,16 +66008,12 @@ static void closeAllCursors(Vdbe *p){
}
/* Delete any auxdata allocations made by the VM */
- sqlite3VdbeDeleteAuxData(p, -1, 0);
+ if( p->pAuxData ) sqlite3VdbeDeleteAuxData(p, -1, 0);
assert( p->pAuxData==0 );
}
/*
-** Clean up the VM after execution.
-**
-** This routine will automatically close any cursors, lists, and/or
-** sorters that were left open. It also deletes the values of
-** variables in the aVar[] array.
+** Clean up the VM after a single run.
*/
static void Cleanup(Vdbe *p){
sqlite3 *db = p->db;
@@ -64208,7 +66181,7 @@ static int vdbeCommit(sqlite3 *db, Vdbe *p){
/* The complex case - There is a multi-file write-transaction active.
** This requires a master journal file to ensure the transaction is
- ** committed atomicly.
+ ** committed atomically.
*/
#ifndef SQLITE_OMIT_DISKIO
else{
@@ -64561,6 +66534,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
+ p->nChange = 0;
}
}
}
@@ -64601,6 +66575,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
}else if( rc!=SQLITE_OK ){
p->rc = rc;
sqlite3RollbackAll(db, SQLITE_OK);
+ p->nChange = 0;
}else{
db->nDeferredCons = 0;
db->nDeferredImmCons = 0;
@@ -64609,6 +66584,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
}
}else{
sqlite3RollbackAll(db, SQLITE_OK);
+ p->nChange = 0;
}
db->nStatement = 0;
}else if( eStatementOp==0 ){
@@ -64620,6 +66596,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
+ p->nChange = 0;
}
}
@@ -64640,6 +66617,7 @@ SQLITE_PRIVATE int sqlite3VdbeHalt(Vdbe *p){
sqlite3RollbackAll(db, SQLITE_ABORT_ROLLBACK);
sqlite3CloseSavepoints(db);
db->autoCommit = 1;
+ p->nChange = 0;
}
}
@@ -64715,7 +66693,7 @@ SQLITE_PRIVATE int sqlite3VdbeTransferError(Vdbe *p){
db->mallocFailed = mallocFailed;
db->errCode = rc;
}else{
- sqlite3Error(db, rc, 0);
+ sqlite3Error(db, rc);
}
return rc;
}
@@ -64778,7 +66756,7 @@ SQLITE_PRIVATE int sqlite3VdbeReset(Vdbe *p){
** to sqlite3_step(). For consistency (since sqlite3_step() was
** called), set the database error in this case as well.
*/
- sqlite3Error(db, p->rc, p->zErrMsg ? "%s" : 0, p->zErrMsg);
+ sqlite3ErrorWithMsg(db, p->rc, p->zErrMsg ? "%s" : 0, p->zErrMsg);
sqlite3DbFree(db, p->zErrMsg);
p->zErrMsg = 0;
}
@@ -64856,7 +66834,7 @@ SQLITE_PRIVATE int sqlite3VdbeFinalize(Vdbe *p){
** from left to right), or
**
** * the corresponding bit in argument mask is clear (where the first
-** function parameter corrsponds to bit 0 etc.).
+** function parameter corresponds to bit 0 etc.).
*/
SQLITE_PRIVATE void sqlite3VdbeDeleteAuxData(Vdbe *pVdbe, int iOp, int mask){
AuxData **pp = &pVdbe->pAuxData;
@@ -64901,9 +66879,11 @@ SQLITE_PRIVATE void sqlite3VdbeClearObject(sqlite3 *db, Vdbe *p){
sqlite3DbFree(db, p->aColName);
sqlite3DbFree(db, p->zSql);
sqlite3DbFree(db, p->pFree);
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
- sqlite3DbFree(db, p->zExplain);
- sqlite3DbFree(db, p->pExplain);
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ for(i=0; i<p->nScan; i++){
+ sqlite3DbFree(db, p->aScan[i].zName);
+ }
+ sqlite3DbFree(db, p->aScan);
#endif
}
@@ -64932,6 +66912,57 @@ SQLITE_PRIVATE void sqlite3VdbeDelete(Vdbe *p){
}
/*
+** The cursor "p" has a pending seek operation that has not yet been
+** carried out. Seek the cursor now. If an error occurs, return
+** the appropriate error code.
+*/
+static int SQLITE_NOINLINE handleDeferredMoveto(VdbeCursor *p){
+ int res, rc;
+#ifdef SQLITE_TEST
+ extern int sqlite3_search_count;
+#endif
+ assert( p->deferredMoveto );
+ assert( p->isTable );
+ rc = sqlite3BtreeMovetoUnpacked(p->pCursor, 0, p->movetoTarget, 0, &res);
+ if( rc ) return rc;
+ if( res!=0 ) return SQLITE_CORRUPT_BKPT;
+#ifdef SQLITE_TEST
+ sqlite3_search_count++;
+#endif
+ p->deferredMoveto = 0;
+ p->cacheStatus = CACHE_STALE;
+ return SQLITE_OK;
+}
+
+/*
+** Something has moved cursor "p" out of place. Maybe the row it was
+** pointed to was deleted out from under it. Or maybe the btree was
+** rebalanced. Whatever the cause, try to restore "p" to the place it
+** is supposed to be pointing. If the row was deleted out from under the
+** cursor, set the cursor to point to a NULL row.
+*/
+static int SQLITE_NOINLINE handleMovedCursor(VdbeCursor *p){
+ int isDifferentRow, rc;
+ assert( p->pCursor!=0 );
+ assert( sqlite3BtreeCursorHasMoved(p->pCursor) );
+ rc = sqlite3BtreeCursorRestore(p->pCursor, &isDifferentRow);
+ p->cacheStatus = CACHE_STALE;
+ if( isDifferentRow ) p->nullRow = 1;
+ return rc;
+}
+
+/*
+** Check to ensure that the cursor is valid. Restore the cursor
+** if need be. Return any I/O error from the restore operation.
+*/
+SQLITE_PRIVATE int sqlite3VdbeCursorRestore(VdbeCursor *p){
+ if( sqlite3BtreeCursorHasMoved(p->pCursor) ){
+ return handleMovedCursor(p);
+ }
+ return SQLITE_OK;
+}
+
+/*
** Make sure the cursor p is ready to read or write the row to which it
** was last positioned. Return an error code if an OOM fault or I/O error
** prevents us from positioning the cursor to its correct position.
@@ -64946,29 +66977,10 @@ SQLITE_PRIVATE void sqlite3VdbeDelete(Vdbe *p){
*/
SQLITE_PRIVATE int sqlite3VdbeCursorMoveto(VdbeCursor *p){
if( p->deferredMoveto ){
- int res, rc;
-#ifdef SQLITE_TEST
- extern int sqlite3_search_count;
-#endif
- assert( p->isTable );
- rc = sqlite3BtreeMovetoUnpacked(p->pCursor, 0, p->movetoTarget, 0, &res);
- if( rc ) return rc;
- p->lastRowid = p->movetoTarget;
- if( res!=0 ) return SQLITE_CORRUPT_BKPT;
- p->rowidIsValid = 1;
-#ifdef SQLITE_TEST
- sqlite3_search_count++;
-#endif
- p->deferredMoveto = 0;
- p->cacheStatus = CACHE_STALE;
- }else if( p->pCursor ){
- int hasMoved;
- int rc = sqlite3BtreeCursorHasMoved(p->pCursor, &hasMoved);
- if( rc ) return rc;
- if( hasMoved ){
- p->cacheStatus = CACHE_STALE;
- if( hasMoved==2 ) p->nullRow = 1;
- }
+ return handleDeferredMoveto(p);
+ }
+ if( p->pCursor && sqlite3BtreeCursorHasMoved(p->pCursor) ){
+ return handleMovedCursor(p);
}
return SQLITE_OK;
}
@@ -65031,9 +67043,7 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialType(Mem *pMem, int file_format){
i64 i = pMem->u.i;
u64 u;
if( i<0 ){
- if( i<(-MAX_6BYTE) ) return 6;
- /* Previous test prevents: u = -(-9223372036854775808) */
- u = -i;
+ u = ~i;
}else{
u = i;
}
@@ -65144,17 +67154,18 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, Mem *pMem, u32 serial_type){
u64 v;
u32 i;
if( serial_type==7 ){
- assert( sizeof(v)==sizeof(pMem->r) );
- memcpy(&v, &pMem->r, sizeof(v));
+ assert( sizeof(v)==sizeof(pMem->u.r) );
+ memcpy(&v, &pMem->u.r, sizeof(v));
swapMixedEndianFloat(v);
}else{
v = pMem->u.i;
}
len = i = sqlite3VdbeSerialTypeLen(serial_type);
- while( i-- ){
- buf[i] = (u8)(v&0xFF);
+ assert( i>0 );
+ do{
+ buf[--i] = (u8)(v&0xFF);
v >>= 8;
- }
+ }while( i );
return len;
}
@@ -65178,51 +67189,101 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialPut(u8 *buf, Mem *pMem, u32 serial_type){
#define TWO_BYTE_INT(x) (256*(i8)((x)[0])|(x)[1])
#define THREE_BYTE_INT(x) (65536*(i8)((x)[0])|((x)[1]<<8)|(x)[2])
#define FOUR_BYTE_UINT(x) (((u32)(x)[0]<<24)|((x)[1]<<16)|((x)[2]<<8)|(x)[3])
+#define FOUR_BYTE_INT(x) (16777216*(i8)((x)[0])|((x)[1]<<16)|((x)[2]<<8)|(x)[3])
/*
** Deserialize the data blob pointed to by buf as serial type serial_type
** and store the result in pMem. Return the number of bytes read.
+**
+** This function is implemented as two separate routines for performance.
+** The few cases that require local variables are broken out into a separate
+** routine so that in most cases the overhead of moving the stack pointer
+** is avoided.
*/
+static u32 SQLITE_NOINLINE serialGet(
+ const unsigned char *buf, /* Buffer to deserialize from */
+ u32 serial_type, /* Serial type to deserialize */
+ Mem *pMem /* Memory cell to write value into */
+){
+ u64 x = FOUR_BYTE_UINT(buf);
+ u32 y = FOUR_BYTE_UINT(buf+4);
+ x = (x<<32) + y;
+ if( serial_type==6 ){
+ /* EVIDENCE-OF: R-29851-52272 Value is a big-endian 64-bit
+ ** twos-complement integer. */
+ pMem->u.i = *(i64*)&x;
+ pMem->flags = MEM_Int;
+ testcase( pMem->u.i<0 );
+ }else{
+ /* EVIDENCE-OF: R-57343-49114 Value is a big-endian IEEE 754-2008 64-bit
+ ** floating point number. */
+#if !defined(NDEBUG) && !defined(SQLITE_OMIT_FLOATING_POINT)
+ /* Verify that integers and floating point values use the same
+ ** byte order. Or, that if SQLITE_MIXED_ENDIAN_64BIT_FLOAT is
+ ** defined that 64-bit floating point values really are mixed
+ ** endian.
+ */
+ static const u64 t1 = ((u64)0x3ff00000)<<32;
+ static const double r1 = 1.0;
+ u64 t2 = t1;
+ swapMixedEndianFloat(t2);
+ assert( sizeof(r1)==sizeof(t2) && memcmp(&r1, &t2, sizeof(r1))==0 );
+#endif
+ assert( sizeof(x)==8 && sizeof(pMem->u.r)==8 );
+ swapMixedEndianFloat(x);
+ memcpy(&pMem->u.r, &x, sizeof(x));
+ pMem->flags = sqlite3IsNaN(pMem->u.r) ? MEM_Null : MEM_Real;
+ }
+ return 8;
+}
SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(
const unsigned char *buf, /* Buffer to deserialize from */
u32 serial_type, /* Serial type to deserialize */
Mem *pMem /* Memory cell to write value into */
){
- u64 x;
- u32 y;
switch( serial_type ){
case 10: /* Reserved for future use */
case 11: /* Reserved for future use */
- case 0: { /* NULL */
+ case 0: { /* Null */
+ /* EVIDENCE-OF: R-24078-09375 Value is a NULL. */
pMem->flags = MEM_Null;
break;
}
- case 1: { /* 1-byte signed integer */
+ case 1: {
+ /* EVIDENCE-OF: R-44885-25196 Value is an 8-bit twos-complement
+ ** integer. */
pMem->u.i = ONE_BYTE_INT(buf);
pMem->flags = MEM_Int;
testcase( pMem->u.i<0 );
return 1;
}
case 2: { /* 2-byte signed integer */
+ /* EVIDENCE-OF: R-49794-35026 Value is a big-endian 16-bit
+ ** twos-complement integer. */
pMem->u.i = TWO_BYTE_INT(buf);
pMem->flags = MEM_Int;
testcase( pMem->u.i<0 );
return 2;
}
case 3: { /* 3-byte signed integer */
+ /* EVIDENCE-OF: R-37839-54301 Value is a big-endian 24-bit
+ ** twos-complement integer. */
pMem->u.i = THREE_BYTE_INT(buf);
pMem->flags = MEM_Int;
testcase( pMem->u.i<0 );
return 3;
}
case 4: { /* 4-byte signed integer */
- y = FOUR_BYTE_UINT(buf);
- pMem->u.i = (i64)*(int*)&y;
+ /* EVIDENCE-OF: R-01849-26079 Value is a big-endian 32-bit
+ ** twos-complement integer. */
+ pMem->u.i = FOUR_BYTE_INT(buf);
pMem->flags = MEM_Int;
testcase( pMem->u.i<0 );
return 4;
}
case 5: { /* 6-byte signed integer */
+ /* EVIDENCE-OF: R-50385-09674 Value is a big-endian 48-bit
+ ** twos-complement integer. */
pMem->u.i = FOUR_BYTE_UINT(buf+2) + (((i64)1)<<32)*TWO_BYTE_INT(buf);
pMem->flags = MEM_Int;
testcase( pMem->u.i<0 );
@@ -65230,52 +67291,32 @@ SQLITE_PRIVATE u32 sqlite3VdbeSerialGet(
}
case 6: /* 8-byte signed integer */
case 7: { /* IEEE floating point */
-#if !defined(NDEBUG) && !defined(SQLITE_OMIT_FLOATING_POINT)
- /* Verify that integers and floating point values use the same
- ** byte order. Or, that if SQLITE_MIXED_ENDIAN_64BIT_FLOAT is
- ** defined that 64-bit floating point values really are mixed
- ** endian.
- */
- static const u64 t1 = ((u64)0x3ff00000)<<32;
- static const double r1 = 1.0;
- u64 t2 = t1;
- swapMixedEndianFloat(t2);
- assert( sizeof(r1)==sizeof(t2) && memcmp(&r1, &t2, sizeof(r1))==0 );
-#endif
- x = FOUR_BYTE_UINT(buf);
- y = FOUR_BYTE_UINT(buf+4);
- x = (x<<32) | y;
- if( serial_type==6 ){
- pMem->u.i = *(i64*)&x;
- pMem->flags = MEM_Int;
- testcase( pMem->u.i<0 );
- }else{
- assert( sizeof(x)==8 && sizeof(pMem->r)==8 );
- swapMixedEndianFloat(x);
- memcpy(&pMem->r, &x, sizeof(x));
- pMem->flags = sqlite3IsNaN(pMem->r) ? MEM_Null : MEM_Real;
- }
- return 8;
+ /* These use local variables, so do them in a separate routine
+ ** to avoid having to move the frame pointer in the common case */
+ return serialGet(buf,serial_type,pMem);
}
case 8: /* Integer 0 */
case 9: { /* Integer 1 */
+ /* EVIDENCE-OF: R-12976-22893 Value is the integer 0. */
+ /* EVIDENCE-OF: R-18143-12121 Value is the integer 1. */
pMem->u.i = serial_type-8;
pMem->flags = MEM_Int;
return 0;
}
default: {
+ /* EVIDENCE-OF: R-14606-31564 Value is a BLOB that is (N-12)/2 bytes in
+ ** length.
+ ** EVIDENCE-OF: R-28401-00140 Value is a string in the text encoding and
+ ** (N-13)/2 bytes in length. */
static const u16 aFlag[] = { MEM_Blob|MEM_Ephem, MEM_Str|MEM_Ephem };
- u32 len = (serial_type-12)/2;
pMem->z = (char *)buf;
- pMem->n = len;
- pMem->xDel = 0;
+ pMem->n = (serial_type-12)/2;
pMem->flags = aFlag[serial_type&1];
- return len;
+ return pMem->n;
}
}
return 0;
}
-
/*
** This routine is used to allocate sufficient space for an UnpackedRecord
** structure large enough to be used with sqlite3VdbeRecordUnpack() if
@@ -65345,17 +67386,17 @@ SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(
idx = getVarint32(aKey, szHdr);
d = szHdr;
u = 0;
- while( idx<szHdr && u<p->nField && d<=nKey ){
+ while( idx<szHdr && d<=nKey ){
u32 serial_type;
idx += getVarint32(&aKey[idx], serial_type);
pMem->enc = pKeyInfo->enc;
pMem->db = pKeyInfo->db;
/* pMem->flags = 0; // sqlite3VdbeSerialGet() will set this for us */
- pMem->zMalloc = 0;
+ pMem->szMalloc = 0;
d += sqlite3VdbeSerialGet(&aKey[d], serial_type, pMem);
pMem++;
- u++;
+ if( (++u)>=p->nField ) break;
}
assert( u<=pKeyInfo->nField + 1 );
p->nField = u;
@@ -65369,10 +67410,14 @@ SQLITE_PRIVATE void sqlite3VdbeRecordUnpack(
** sqlite3VdbeSerialGet() and sqlite3MemCompare() functions. It is used
** in assert() statements to ensure that the optimized code in
** sqlite3VdbeRecordCompare() returns results with these two primitives.
+**
+** Return true if the result of comparison is equivalent to desiredResult.
+** Return false if there is a disagreement.
*/
static int vdbeRecordCompareDebug(
int nKey1, const void *pKey1, /* Left key */
- const UnpackedRecord *pPKey2 /* Right key */
+ const UnpackedRecord *pPKey2, /* Right key */
+ int desiredResult /* Correct answer */
){
u32 d1; /* Offset into aKey[] of next data element */
u32 idx1; /* Offset into aKey[] of next header element */
@@ -65384,10 +67429,11 @@ static int vdbeRecordCompareDebug(
Mem mem1;
pKeyInfo = pPKey2->pKeyInfo;
+ if( pKeyInfo->db==0 ) return 1;
mem1.enc = pKeyInfo->enc;
mem1.db = pKeyInfo->db;
/* mem1.flags = 0; // Will be initialized by sqlite3VdbeSerialGet() */
- VVA_ONLY( mem1.zMalloc = 0; ) /* Only needed by assert() statements */
+ VVA_ONLY( mem1.szMalloc = 0; ) /* Only needed by assert() statements */
/* Compilers may complain that mem1.u.i is potentially uninitialized.
** We could initialize it, as shown here, to silence those complaints.
@@ -65430,11 +67476,11 @@ static int vdbeRecordCompareDebug(
*/
rc = sqlite3MemCompare(&mem1, &pPKey2->aMem[i], pKeyInfo->aColl[i]);
if( rc!=0 ){
- assert( mem1.zMalloc==0 ); /* See comment below */
+ assert( mem1.szMalloc==0 ); /* See comment below */
if( pKeyInfo->aSortOrder[i] ){
rc = -rc; /* Invert the result for DESC sort order. */
}
- return rc;
+ goto debugCompareEnd;
}
i++;
}while( idx1<szHdr1 && i<pPKey2->nField );
@@ -65443,13 +67489,56 @@ static int vdbeRecordCompareDebug(
** the following assert(). If the assert() fails, it indicates a
** memory leak and a need to call sqlite3VdbeMemRelease(&mem1).
*/
- assert( mem1.zMalloc==0 );
+ assert( mem1.szMalloc==0 );
/* rc==0 here means that one of the keys ran out of fields and
- ** all the fields up to that point were equal. Return the the default_rc
+ ** all the fields up to that point were equal. Return the default_rc
** value. */
- return pPKey2->default_rc;
+ rc = pPKey2->default_rc;
+
+debugCompareEnd:
+ if( desiredResult==0 && rc==0 ) return 1;
+ if( desiredResult<0 && rc<0 ) return 1;
+ if( desiredResult>0 && rc>0 ) return 1;
+ if( CORRUPT_DB ) return 1;
+ if( pKeyInfo->db->mallocFailed ) return 1;
+ return 0;
+}
+#endif
+
+#if SQLITE_DEBUG
+/*
+** Count the number of fields (a.k.a. columns) in the record given by
+** pKey,nKey. The verify that this count is less than or equal to the
+** limit given by pKeyInfo->nField + pKeyInfo->nXField.
+**
+** If this constraint is not satisfied, it means that the high-speed
+** vdbeRecordCompareInt() and vdbeRecordCompareString() routines will
+** not work correctly. If this assert() ever fires, it probably means
+** that the KeyInfo.nField or KeyInfo.nXField values were computed
+** incorrectly.
+*/
+static void vdbeAssertFieldCountWithinLimits(
+ int nKey, const void *pKey, /* The record to verify */
+ const KeyInfo *pKeyInfo /* Compare size with this KeyInfo */
+){
+ int nField = 0;
+ u32 szHdr;
+ u32 idx;
+ u32 notUsed;
+ const unsigned char *aKey = (const unsigned char*)pKey;
+
+ if( CORRUPT_DB ) return;
+ idx = getVarint32(aKey, szHdr);
+ assert( szHdr<=nKey );
+ while( idx<szHdr ){
+ idx += getVarint32(aKey+idx, notUsed);
+ nField++;
+ }
+ assert( nField <= pKeyInfo->nField+pKeyInfo->nXField );
}
+#else
+# define vdbeAssertFieldCountWithinLimits(A,B,C)
#endif
/*
@@ -65461,7 +67550,8 @@ static int vdbeRecordCompareDebug(
static int vdbeCompareMemString(
const Mem *pMem1,
const Mem *pMem2,
- const CollSeq *pColl
+ const CollSeq *pColl,
+ u8 *prcErr /* If an OOM occurs, set to SQLITE_NOMEM */
){
if( pMem1->enc==pColl->enc ){
/* The strings are already in the correct encoding. Call the
@@ -65473,8 +67563,8 @@ static int vdbeCompareMemString(
int n1, n2;
Mem c1;
Mem c2;
- memset(&c1, 0, sizeof(c1));
- memset(&c2, 0, sizeof(c2));
+ sqlite3VdbeMemInit(&c1, pMem1->db, MEM_Null);
+ sqlite3VdbeMemInit(&c2, pMem1->db, MEM_Null);
sqlite3VdbeMemShallowCopy(&c1, pMem1, MEM_Ephem);
sqlite3VdbeMemShallowCopy(&c2, pMem2, MEM_Ephem);
v1 = sqlite3ValueText((sqlite3_value*)&c1, pColl->enc);
@@ -65484,11 +67574,24 @@ static int vdbeCompareMemString(
rc = pColl->xCmp(pColl->pUser, n1, v1, n2, v2);
sqlite3VdbeMemRelease(&c1);
sqlite3VdbeMemRelease(&c2);
+ if( (v1==0 || v2==0) && prcErr ) *prcErr = SQLITE_NOMEM;
return rc;
}
}
/*
+** Compare two blobs. Return negative, zero, or positive if the first
+** is less than, equal to, or greater than the second, respectively.
+** If one blob is a prefix of the other, then the shorter is the lessor.
+*/
+static SQLITE_NOINLINE int sqlite3BlobCompare(const Mem *pB1, const Mem *pB2){
+ int c = memcmp(pB1->z, pB2->z, pB1->n>pB2->n ? pB2->n : pB1->n);
+ if( c ) return c;
+ return pB1->n - pB2->n;
+}
+
+
+/*
** Compare the values contained by the two memory cells, returning
** negative, zero or positive if pMem1 is less than, equal to, or greater
** than pMem2. Sorting order is NULL's first, followed by numbers (integers
@@ -65498,7 +67601,6 @@ static int vdbeCompareMemString(
** Two NULL values are considered equal by this function.
*/
SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){
- int rc;
int f1, f2;
int combined_flags;
@@ -65526,14 +67628,14 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C
return 0;
}
if( (f1&MEM_Real)!=0 ){
- r1 = pMem1->r;
+ r1 = pMem1->u.r;
}else if( (f1&MEM_Int)!=0 ){
r1 = (double)pMem1->u.i;
}else{
return 1;
}
if( (f2&MEM_Real)!=0 ){
- r2 = pMem2->r;
+ r2 = pMem2->u.r;
}else if( (f2&MEM_Int)!=0 ){
r2 = (double)pMem2->u.i;
}else{
@@ -65566,18 +67668,14 @@ SQLITE_PRIVATE int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const C
assert( !pColl || pColl->xCmp );
if( pColl ){
- return vdbeCompareMemString(pMem1, pMem2, pColl);
+ return vdbeCompareMemString(pMem1, pMem2, pColl, 0);
}
/* If a NULL pointer was passed as the collate function, fall through
** to the blob case and use memcmp(). */
}
/* Both values must be blobs. Compare using memcmp(). */
- rc = memcmp(pMem1->z, pMem2->z, (pMem1->n>pMem2->n)?pMem2->n:pMem1->n);
- if( rc==0 ){
- rc = pMem1->n - pMem2->n;
- }
- return rc;
+ return sqlite3BlobCompare(pMem1, pMem2);
}
@@ -65627,7 +67725,7 @@ static i64 vdbeRecordDecodeInt(u32 serial_type, const u8 *aKey){
** specified by {nKey1, pKey1} and pPKey2. It returns a negative, zero
** or positive integer if key1 is less than, equal to or
** greater than key2. The {nKey1, pKey1} key must be a blob
-** created by th OP_MakeRecord opcode of the VDBE. The pPKey2
+** created by the OP_MakeRecord opcode of the VDBE. The pPKey2
** key must be a parsed key such as obtained from
** sqlite3VdbeParseRecord.
**
@@ -65638,10 +67736,12 @@ static i64 vdbeRecordDecodeInt(u32 serial_type, const u8 *aKey){
** fields that appear in both keys are equal, then pPKey2->default_rc is
** returned.
**
-** If database corruption is discovered, set pPKey2->isCorrupt to non-zero
-** and return 0.
+** If database corruption is discovered, set pPKey2->errCode to
+** SQLITE_CORRUPT and return 0. If an OOM error is encountered,
+** pPKey2->errCode is set to SQLITE_NOMEM and, if it is not NULL, the
+** malloc-failed flag set on database handle (pPKey2->pKeyInfo->db).
*/
-SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
+static int vdbeRecordCompareWithSkip(
int nKey1, const void *pKey1, /* Left key */
UnpackedRecord *pPKey2, /* Right key */
int bSkip /* If true, skip the first field */
@@ -65670,13 +67770,13 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
idx1 = getVarint32(aKey1, szHdr1);
d1 = szHdr1;
if( d1>(unsigned)nKey1 ){
- pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT;
+ pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;
return 0; /* Corruption */
}
i = 0;
}
- VVA_ONLY( mem1.zMalloc = 0; ) /* Only needed by assert() statements */
+ VVA_ONLY( mem1.szMalloc = 0; ) /* Only needed by assert() statements */
assert( pPKey2->pKeyInfo->nField+pPKey2->pKeyInfo->nXField>=pPKey2->nField
|| CORRUPT_DB );
assert( pPKey2->pKeyInfo->aSortOrder!=0 );
@@ -65696,9 +67796,9 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
}else if( serial_type==7 ){
double rhs = (double)pRhs->u.i;
sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
- if( mem1.r<rhs ){
+ if( mem1.u.r<rhs ){
rc = -1;
- }else if( mem1.r>rhs ){
+ }else if( mem1.u.r>rhs ){
rc = +1;
}
}else{
@@ -65720,11 +67820,11 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
}else if( serial_type==0 ){
rc = -1;
}else{
- double rhs = pRhs->r;
+ double rhs = pRhs->u.r;
double lhs;
sqlite3VdbeSerialGet(&aKey1[d1], serial_type, &mem1);
if( serial_type==7 ){
- lhs = mem1.r;
+ lhs = mem1.u.r;
}else{
lhs = (double)mem1.u.i;
}
@@ -65749,14 +67849,16 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
testcase( (d1+mem1.n)==(unsigned)nKey1 );
testcase( (d1+mem1.n+1)==(unsigned)nKey1 );
if( (d1+mem1.n) > (unsigned)nKey1 ){
- pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT;
+ pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;
return 0; /* Corruption */
}else if( pKeyInfo->aColl[i] ){
mem1.enc = pKeyInfo->enc;
mem1.db = pKeyInfo->db;
mem1.flags = MEM_Str;
mem1.z = (char*)&aKey1[d1];
- rc = vdbeCompareMemString(&mem1, pRhs, pKeyInfo->aColl[i]);
+ rc = vdbeCompareMemString(
+ &mem1, pRhs, pKeyInfo->aColl[i], &pPKey2->errCode
+ );
}else{
int nCmp = MIN(mem1.n, pRhs->n);
rc = memcmp(&aKey1[d1], pRhs->z, nCmp);
@@ -65776,7 +67878,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
testcase( (d1+nStr)==(unsigned)nKey1 );
testcase( (d1+nStr+1)==(unsigned)nKey1 );
if( (d1+nStr) > (unsigned)nKey1 ){
- pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT;
+ pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;
return 0; /* Corruption */
}else{
int nCmp = MIN(nStr, pRhs->n);
@@ -65796,12 +67898,8 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
if( pKeyInfo->aSortOrder[i] ){
rc = -rc;
}
- assert( CORRUPT_DB
- || (rc<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
- || (rc>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
- || pKeyInfo->db->mallocFailed
- );
- assert( mem1.zMalloc==0 ); /* See comment below */
+ assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, rc) );
+ assert( mem1.szMalloc==0 ); /* See comment below */
return rc;
}
@@ -65814,17 +67912,24 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
/* No memory allocation is ever used on mem1. Prove this using
** the following assert(). If the assert() fails, it indicates a
** memory leak and a need to call sqlite3VdbeMemRelease(&mem1). */
- assert( mem1.zMalloc==0 );
+ assert( mem1.szMalloc==0 );
/* rc==0 here means that one or both of the keys ran out of fields and
- ** all the fields up to that point were equal. Return the the default_rc
+ ** all the fields up to that point were equal. Return the default_rc
** value. */
assert( CORRUPT_DB
- || pPKey2->default_rc==vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)
+ || vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, pPKey2->default_rc)
|| pKeyInfo->db->mallocFailed
);
return pPKey2->default_rc;
}
+SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
+ int nKey1, const void *pKey1, /* Left key */
+ UnpackedRecord *pPKey2 /* Right key */
+){
+ return vdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 0);
+}
+
/*
** This function is an optimized version of sqlite3VdbeRecordCompare()
@@ -65837,8 +67942,7 @@ SQLITE_PRIVATE int sqlite3VdbeRecordCompare(
*/
static int vdbeRecordCompareInt(
int nKey1, const void *pKey1, /* Left key */
- UnpackedRecord *pPKey2, /* Right key */
- int bSkip /* Ignored */
+ UnpackedRecord *pPKey2 /* Right key */
){
const u8 *aKey = &((const u8*)pKey1)[*(const u8*)pKey1 & 0x3F];
int serial_type = ((const u8*)pKey1)[1];
@@ -65847,9 +67951,8 @@ static int vdbeRecordCompareInt(
u64 x;
i64 v = pPKey2->aMem[0].u.i;
i64 lhs;
- UNUSED_PARAMETER(bSkip);
- assert( bSkip==0 );
+ vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);
assert( (*(u8*)pKey1)<=0x3F || CORRUPT_DB );
switch( serial_type ){
case 1: { /* 1-byte signed integer */
@@ -65899,10 +68002,10 @@ static int vdbeRecordCompareInt(
** (as gcc is clever enough to combine the two like cases). Other
** compilers might be similar. */
case 0: case 7:
- return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 0);
+ return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
default:
- return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 0);
+ return sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2);
}
if( v>lhs ){
@@ -65912,18 +68015,14 @@ static int vdbeRecordCompareInt(
}else if( pPKey2->nField>1 ){
/* The first fields of the two keys are equal. Compare the trailing
** fields. */
- res = sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 1);
+ res = vdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 1);
}else{
/* The first fields of the two keys are equal and there are no trailing
** fields. Return pPKey2->default_rc in this case. */
res = pPKey2->default_rc;
}
- assert( (res==0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)==0)
- || (res<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
- || (res>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
- || CORRUPT_DB
- );
+ assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, res) );
return res;
}
@@ -65935,17 +68034,14 @@ static int vdbeRecordCompareInt(
*/
static int vdbeRecordCompareString(
int nKey1, const void *pKey1, /* Left key */
- UnpackedRecord *pPKey2, /* Right key */
- int bSkip
+ UnpackedRecord *pPKey2 /* Right key */
){
const u8 *aKey1 = (const u8*)pKey1;
int serial_type;
int res;
- UNUSED_PARAMETER(bSkip);
- assert( bSkip==0 );
+ vdbeAssertFieldCountWithinLimits(nKey1, pKey1, pPKey2->pKeyInfo);
getVarint32(&aKey1[1], serial_type);
-
if( serial_type<12 ){
res = pPKey2->r1; /* (pKey1/nKey1) is a number or a null */
}else if( !(serial_type & 0x01) ){
@@ -65957,7 +68053,7 @@ static int vdbeRecordCompareString(
nStr = (serial_type-12) / 2;
if( (szHdr + nStr) > nKey1 ){
- pPKey2->isCorrupt = (u8)SQLITE_CORRUPT_BKPT;
+ pPKey2->errCode = (u8)SQLITE_CORRUPT_BKPT;
return 0; /* Corruption */
}
nCmp = MIN( pPKey2->aMem[0].n, nStr );
@@ -65967,7 +68063,7 @@ static int vdbeRecordCompareString(
res = nStr - pPKey2->aMem[0].n;
if( res==0 ){
if( pPKey2->nField>1 ){
- res = sqlite3VdbeRecordCompare(nKey1, pKey1, pPKey2, 1);
+ res = vdbeRecordCompareWithSkip(nKey1, pKey1, pPKey2, 1);
}else{
res = pPKey2->default_rc;
}
@@ -65983,9 +68079,7 @@ static int vdbeRecordCompareString(
}
}
- assert( (res==0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)==0)
- || (res<0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)<0)
- || (res>0 && vdbeRecordCompareDebug(nKey1, pKey1, pPKey2)>0)
+ assert( vdbeRecordCompareDebug(nKey1, pKey1, pPKey2, res)
|| CORRUPT_DB
|| pPKey2->pKeyInfo->db->mallocFailed
);
@@ -66051,8 +68145,6 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
u32 lenRowid; /* Size of the rowid */
Mem m, v;
- UNUSED_PARAMETER(db);
-
/* Get the size of the index entry. Only indices entries of less
** than 2GiB are support - anything large must be database corruption.
** Any corruption is detected in sqlite3BtreeParseCellPtr(), though, so
@@ -66064,7 +68156,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
assert( (nCellKey & SQLITE_MAX_U32)==(u64)nCellKey );
/* Read in the complete content of the index entry */
- memset(&m, 0, sizeof(m));
+ sqlite3VdbeMemInit(&m, db, 0);
rc = sqlite3VdbeMemFromBtree(pCur, 0, (u32)nCellKey, 1, &m);
if( rc ){
return rc;
@@ -66107,7 +68199,7 @@ SQLITE_PRIVATE int sqlite3VdbeIdxRowid(sqlite3 *db, BtCursor *pCur, i64 *rowid){
/* Jump here if database corruption is detected after m has been
** allocated. Free the m object and return SQLITE_CORRUPT. */
idx_rowid_corruption:
- testcase( m.zMalloc!=0 );
+ testcase( m.szMalloc!=0 );
sqlite3VdbeMemRelease(&m);
return SQLITE_CORRUPT_BKPT;
}
@@ -66124,6 +68216,7 @@ idx_rowid_corruption:
** of the keys prior to the final rowid, not the entire key.
*/
SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
+ sqlite3 *db, /* Database connection */
VdbeCursor *pC, /* The cursor to compare against */
UnpackedRecord *pUnpacked, /* Unpacked version of key */
int *res /* Write the comparison result here */
@@ -66142,12 +68235,12 @@ SQLITE_PRIVATE int sqlite3VdbeIdxKeyCompare(
*res = 0;
return SQLITE_CORRUPT_BKPT;
}
- memset(&m, 0, sizeof(m));
+ sqlite3VdbeMemInit(&m, db, 0);
rc = sqlite3VdbeMemFromBtree(pC->pCursor, 0, (u32)nCellKey, 1, &m);
if( rc ){
return rc;
}
- *res = sqlite3VdbeRecordCompare(m.n, m.z, pUnpacked, 0);
+ *res = sqlite3VdbeRecordCompare(m.n, m.z, pUnpacked);
sqlite3VdbeMemRelease(&m);
return SQLITE_OK;
}
@@ -66461,9 +68554,12 @@ SQLITE_API int sqlite3_value_type(sqlite3_value* pVal){
** The following routines are used by user-defined functions to specify
** the function result.
**
-** The setStrOrError() funtion calls sqlite3VdbeMemSetStr() to store the
+** The setStrOrError() function calls sqlite3VdbeMemSetStr() to store the
** result as a string or blob but if the string or blob is too large, it
** then sets the error code to SQLITE_TOOBIG
+**
+** The invokeValueDestructor(P,X) routine invokes destructor function X()
+** on value P is not going to be used and need to be destroyed.
*/
static void setResultStrOrError(
sqlite3_context *pCtx, /* Function context */
@@ -66472,10 +68568,26 @@ static void setResultStrOrError(
u8 enc, /* Encoding of z. 0 for BLOBs */
void (*xDel)(void*) /* Destructor function */
){
- if( sqlite3VdbeMemSetStr(&pCtx->s, z, n, enc, xDel)==SQLITE_TOOBIG ){
+ if( sqlite3VdbeMemSetStr(pCtx->pOut, z, n, enc, xDel)==SQLITE_TOOBIG ){
sqlite3_result_error_toobig(pCtx);
}
}
+static int invokeValueDestructor(
+ const void *p, /* Value to destroy */
+ void (*xDel)(void*), /* The destructor */
+ sqlite3_context *pCtx /* Set a SQLITE_TOOBIG error if no NULL */
+){
+ assert( xDel!=SQLITE_DYNAMIC );
+ if( xDel==0 ){
+ /* noop */
+ }else if( xDel==SQLITE_TRANSIENT ){
+ /* noop */
+ }else{
+ xDel((void*)p);
+ }
+ if( pCtx ) sqlite3_result_error_toobig(pCtx);
+ return SQLITE_TOOBIG;
+}
SQLITE_API void sqlite3_result_blob(
sqlite3_context *pCtx,
const void *z,
@@ -66483,38 +68595,52 @@ SQLITE_API void sqlite3_result_blob(
void (*xDel)(void *)
){
assert( n>=0 );
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, 0, xDel);
}
+SQLITE_API void sqlite3_result_blob64(
+ sqlite3_context *pCtx,
+ const void *z,
+ sqlite3_uint64 n,
+ void (*xDel)(void *)
+){
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ assert( xDel!=SQLITE_DYNAMIC );
+ if( n>0x7fffffff ){
+ (void)invokeValueDestructor(z, xDel, pCtx);
+ }else{
+ setResultStrOrError(pCtx, z, (int)n, 0, xDel);
+ }
+}
SQLITE_API void sqlite3_result_double(sqlite3_context *pCtx, double rVal){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetDouble(&pCtx->s, rVal);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetDouble(pCtx->pOut, rVal);
}
SQLITE_API void sqlite3_result_error(sqlite3_context *pCtx, const char *z, int n){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_ERROR;
pCtx->fErrorOrAux = 1;
- sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
+ sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF8, SQLITE_TRANSIENT);
}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API void sqlite3_result_error16(sqlite3_context *pCtx, const void *z, int n){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_ERROR;
pCtx->fErrorOrAux = 1;
- sqlite3VdbeMemSetStr(&pCtx->s, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
+ sqlite3VdbeMemSetStr(pCtx->pOut, z, n, SQLITE_UTF16NATIVE, SQLITE_TRANSIENT);
}
#endif
SQLITE_API void sqlite3_result_int(sqlite3_context *pCtx, int iVal){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetInt64(&pCtx->s, (i64)iVal);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetInt64(pCtx->pOut, (i64)iVal);
}
SQLITE_API void sqlite3_result_int64(sqlite3_context *pCtx, i64 iVal){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetInt64(&pCtx->s, iVal);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetInt64(pCtx->pOut, iVal);
}
SQLITE_API void sqlite3_result_null(sqlite3_context *pCtx){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetNull(&pCtx->s);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetNull(pCtx->pOut);
}
SQLITE_API void sqlite3_result_text(
sqlite3_context *pCtx,
@@ -66522,9 +68648,25 @@ SQLITE_API void sqlite3_result_text(
int n,
void (*xDel)(void *)
){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF8, xDel);
}
+SQLITE_API void sqlite3_result_text64(
+ sqlite3_context *pCtx,
+ const char *z,
+ sqlite3_uint64 n,
+ void (*xDel)(void *),
+ unsigned char enc
+){
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ assert( xDel!=SQLITE_DYNAMIC );
+ if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
+ if( n>0x7fffffff ){
+ (void)invokeValueDestructor(z, xDel, pCtx);
+ }else{
+ setResultStrOrError(pCtx, z, (int)n, enc, xDel);
+ }
+}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API void sqlite3_result_text16(
sqlite3_context *pCtx,
@@ -66532,7 +68674,7 @@ SQLITE_API void sqlite3_result_text16(
int n,
void (*xDel)(void *)
){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF16NATIVE, xDel);
}
SQLITE_API void sqlite3_result_text16be(
@@ -66541,7 +68683,7 @@ SQLITE_API void sqlite3_result_text16be(
int n,
void (*xDel)(void *)
){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF16BE, xDel);
}
SQLITE_API void sqlite3_result_text16le(
@@ -66550,43 +68692,43 @@ SQLITE_API void sqlite3_result_text16le(
int n,
void (*xDel)(void *)
){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
setResultStrOrError(pCtx, z, n, SQLITE_UTF16LE, xDel);
}
#endif /* SQLITE_OMIT_UTF16 */
SQLITE_API void sqlite3_result_value(sqlite3_context *pCtx, sqlite3_value *pValue){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemCopy(&pCtx->s, pValue);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemCopy(pCtx->pOut, pValue);
}
SQLITE_API void sqlite3_result_zeroblob(sqlite3_context *pCtx, int n){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetZeroBlob(&pCtx->s, n);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetZeroBlob(pCtx->pOut, n);
}
SQLITE_API void sqlite3_result_error_code(sqlite3_context *pCtx, int errCode){
pCtx->isError = errCode;
pCtx->fErrorOrAux = 1;
- if( pCtx->s.flags & MEM_Null ){
- sqlite3VdbeMemSetStr(&pCtx->s, sqlite3ErrStr(errCode), -1,
+ if( pCtx->pOut->flags & MEM_Null ){
+ sqlite3VdbeMemSetStr(pCtx->pOut, sqlite3ErrStr(errCode), -1,
SQLITE_UTF8, SQLITE_STATIC);
}
}
/* Force an SQLITE_TOOBIG error. */
SQLITE_API void sqlite3_result_error_toobig(sqlite3_context *pCtx){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
pCtx->isError = SQLITE_TOOBIG;
pCtx->fErrorOrAux = 1;
- sqlite3VdbeMemSetStr(&pCtx->s, "string or blob too big", -1,
+ sqlite3VdbeMemSetStr(pCtx->pOut, "string or blob too big", -1,
SQLITE_UTF8, SQLITE_STATIC);
}
/* An SQLITE_NOMEM error. */
SQLITE_API void sqlite3_result_error_nomem(sqlite3_context *pCtx){
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
- sqlite3VdbeMemSetNull(&pCtx->s);
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
+ sqlite3VdbeMemSetNull(pCtx->pOut);
pCtx->isError = SQLITE_NOMEM;
pCtx->fErrorOrAux = 1;
- pCtx->s.db->mallocFailed = 1;
+ pCtx->pOut->db->mallocFailed = 1;
}
/*
@@ -66600,7 +68742,10 @@ static int doWalCallbacks(sqlite3 *db){
for(i=0; i<db->nDb; i++){
Btree *pBt = db->aDb[i].pBt;
if( pBt ){
- int nEntry = sqlite3PagerWalCallback(sqlite3BtreePager(pBt));
+ int nEntry;
+ sqlite3BtreeEnter(pBt);
+ nEntry = sqlite3PagerWalCallback(sqlite3BtreePager(pBt));
+ sqlite3BtreeLeave(pBt);
if( db->xWalCallback && nEntry>0 && rc==SQLITE_OK ){
rc = db->xWalCallback(db->pWalArg, db, db->aDb[i].zName, nEntry);
}
@@ -66762,10 +68907,12 @@ SQLITE_API int sqlite3_step(sqlite3_stmt *pStmt){
sqlite3_mutex_enter(db->mutex);
v->doingRerun = 0;
while( (rc = sqlite3Step(v))==SQLITE_SCHEMA
- && cnt++ < SQLITE_MAX_SCHEMA_RETRY
- && (rc2 = rc = sqlite3Reprepare(v))==SQLITE_OK ){
+ && cnt++ < SQLITE_MAX_SCHEMA_RETRY ){
+ int savedPc = v->pc;
+ rc2 = rc = sqlite3Reprepare(v);
+ if( rc!=SQLITE_OK) break;
sqlite3_reset(pStmt);
- v->doingRerun = 1;
+ if( savedPc>=0 ) v->doingRerun = 1;
assert( v->expired==0 );
}
if( rc2!=SQLITE_OK ){
@@ -66778,7 +68925,6 @@ SQLITE_API int sqlite3_step(sqlite3_stmt *pStmt){
** sqlite3_errmsg() and sqlite3_errcode().
*/
const char *zErr = (const char *)sqlite3_value_text(db->pErr);
- assert( zErr!=0 || db->mallocFailed );
sqlite3DbFree(db, v->zErrMsg);
if( !db->mallocFailed ){
v->zErrMsg = sqlite3DbStrDup(db, zErr);
@@ -66815,7 +68961,7 @@ SQLITE_API void *sqlite3_user_data(sqlite3_context *p){
*/
SQLITE_API sqlite3 *sqlite3_context_db_handle(sqlite3_context *p){
assert( p && p->pFunc );
- return p->s.db;
+ return p->pOut->db;
}
/*
@@ -66825,7 +68971,7 @@ SQLITE_PRIVATE sqlite3_int64 sqlite3StmtCurrentTime(sqlite3_context *p){
Vdbe *v = p->pVdbe;
int rc;
if( v->iCurrentTime==0 ){
- rc = sqlite3OsCurrentTimeInt64(p->s.db->pVfs, &v->iCurrentTime);
+ rc = sqlite3OsCurrentTimeInt64(p->pOut->db->pVfs, &v->iCurrentTime);
if( rc ) v->iCurrentTime = 0;
}
return v->iCurrentTime;
@@ -66854,41 +69000,50 @@ SQLITE_PRIVATE void sqlite3InvalidFunction(
}
/*
+** Create a new aggregate context for p and return a pointer to
+** its pMem->z element.
+*/
+static SQLITE_NOINLINE void *createAggContext(sqlite3_context *p, int nByte){
+ Mem *pMem = p->pMem;
+ assert( (pMem->flags & MEM_Agg)==0 );
+ if( nByte<=0 ){
+ sqlite3VdbeMemSetNull(pMem);
+ pMem->z = 0;
+ }else{
+ sqlite3VdbeMemClearAndResize(pMem, nByte);
+ pMem->flags = MEM_Agg;
+ pMem->u.pDef = p->pFunc;
+ if( pMem->z ){
+ memset(pMem->z, 0, nByte);
+ }
+ }
+ return (void*)pMem->z;
+}
+
+/*
** Allocate or return the aggregate context for a user function. A new
** context is allocated on the first call. Subsequent calls return the
** same context that was returned on prior calls.
*/
SQLITE_API void *sqlite3_aggregate_context(sqlite3_context *p, int nByte){
- Mem *pMem;
assert( p && p->pFunc && p->pFunc->xStep );
- assert( sqlite3_mutex_held(p->s.db->mutex) );
- pMem = p->pMem;
+ assert( sqlite3_mutex_held(p->pOut->db->mutex) );
testcase( nByte<0 );
- if( (pMem->flags & MEM_Agg)==0 ){
- if( nByte<=0 ){
- sqlite3VdbeMemReleaseExternal(pMem);
- pMem->flags = MEM_Null;
- pMem->z = 0;
- }else{
- sqlite3VdbeMemGrow(pMem, nByte, 0);
- pMem->flags = MEM_Agg;
- pMem->u.pDef = p->pFunc;
- if( pMem->z ){
- memset(pMem->z, 0, nByte);
- }
- }
+ if( (p->pMem->flags & MEM_Agg)==0 ){
+ return createAggContext(p, nByte);
+ }else{
+ return (void*)p->pMem->z;
}
- return (void*)pMem->z;
}
/*
-** Return the auxilary data pointer, if any, for the iArg'th argument to
+** Return the auxiliary data pointer, if any, for the iArg'th argument to
** the user-function defined by pCtx.
*/
SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
AuxData *pAuxData;
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
for(pAuxData=pCtx->pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNext){
if( pAuxData->iOp==pCtx->iOp && pAuxData->iArg==iArg ) break;
}
@@ -66897,7 +69052,7 @@ SQLITE_API void *sqlite3_get_auxdata(sqlite3_context *pCtx, int iArg){
}
/*
-** Set the auxilary data pointer and delete function, for the iArg'th
+** Set the auxiliary data pointer and delete function, for the iArg'th
** argument to the user-function defined by pCtx. Any previous value is
** deleted by calling the delete function specified when it was set.
*/
@@ -66910,7 +69065,7 @@ SQLITE_API void sqlite3_set_auxdata(
AuxData *pAuxData;
Vdbe *pVdbe = pCtx->pVdbe;
- assert( sqlite3_mutex_held(pCtx->s.db->mutex) );
+ assert( sqlite3_mutex_held(pCtx->pOut->db->mutex) );
if( iArg<0 ) goto failed;
for(pAuxData=pVdbe->pAuxData; pAuxData; pAuxData=pAuxData->pNext){
@@ -66943,7 +69098,7 @@ failed:
#ifndef SQLITE_OMIT_DEPRECATED
/*
-** Return the number of times the Step function of a aggregate has been
+** Return the number of times the Step function of an aggregate has been
** called.
**
** This function is deprecated. Do not use it for new code. It is
@@ -66992,11 +69147,22 @@ static const Mem *columnNullValue(void){
#if defined(SQLITE_DEBUG) && defined(__GNUC__)
__attribute__((aligned(8)))
#endif
- = {0, "", (double)0, {0}, 0, MEM_Null, 0,
+ = {
+ /* .u = */ {0},
+ /* .flags = */ MEM_Null,
+ /* .enc = */ 0,
+ /* .n = */ 0,
+ /* .z = */ 0,
+ /* .zMalloc = */ 0,
+ /* .szMalloc = */ 0,
+ /* .iPadding1 = */ 0,
+ /* .db = */ 0,
+ /* .xDel = */ 0,
#ifdef SQLITE_DEBUG
- 0, 0, /* pScopyFrom, pFiller */
+ /* .pScopyFrom = */ 0,
+ /* .pFiller = */ 0,
#endif
- 0, 0 };
+ };
return &nullMem;
}
@@ -67017,7 +69183,7 @@ static Mem *columnMem(sqlite3_stmt *pStmt, int i){
}else{
if( pVm && ALWAYS(pVm->db) ){
sqlite3_mutex_enter(pVm->db->mutex);
- sqlite3Error(pVm->db, SQLITE_RANGE, 0);
+ sqlite3Error(pVm->db, SQLITE_RANGE);
}
pOut = (Mem*)columnNullValue();
}
@@ -67144,11 +69310,19 @@ static const void *columnName(
const void *(*xFunc)(Mem*),
int useType
){
- const void *ret = 0;
- Vdbe *p = (Vdbe *)pStmt;
+ const void *ret;
+ Vdbe *p;
int n;
- sqlite3 *db = p->db;
-
+ sqlite3 *db;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( pStmt==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
+ ret = 0;
+ p = (Vdbe *)pStmt;
+ db = p->db;
assert( db!=0 );
n = sqlite3_column_count(pStmt);
if( N<n && N>=0 ){
@@ -67213,7 +69387,7 @@ SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
/*
** Return the name of the database from which a result column derives.
** NULL is returned if the result column is an expression or constant or
-** anything else which is not an unabiguous reference to a database column.
+** anything else which is not an unambiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_database_name(sqlite3_stmt *pStmt, int N){
return columnName(
@@ -67229,7 +69403,7 @@ SQLITE_API const void *sqlite3_column_database_name16(sqlite3_stmt *pStmt, int N
/*
** Return the name of the table from which a result column derives.
** NULL is returned if the result column is an expression or constant or
-** anything else which is not an unabiguous reference to a database column.
+** anything else which is not an unambiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_table_name(sqlite3_stmt *pStmt, int N){
return columnName(
@@ -67245,7 +69419,7 @@ SQLITE_API const void *sqlite3_column_table_name16(sqlite3_stmt *pStmt, int N){
/*
** Return the name of the table column from which a result column derives.
** NULL is returned if the result column is an expression or constant or
-** anything else which is not an unabiguous reference to a database column.
+** anything else which is not an unambiguous reference to a database column.
*/
SQLITE_API const char *sqlite3_column_origin_name(sqlite3_stmt *pStmt, int N){
return columnName(
@@ -67282,14 +69456,14 @@ static int vdbeUnbind(Vdbe *p, int i){
}
sqlite3_mutex_enter(p->db->mutex);
if( p->magic!=VDBE_MAGIC_RUN || p->pc>=0 ){
- sqlite3Error(p->db, SQLITE_MISUSE, 0);
+ sqlite3Error(p->db, SQLITE_MISUSE);
sqlite3_mutex_leave(p->db->mutex);
sqlite3_log(SQLITE_MISUSE,
"bind on a busy prepared statement: [%s]", p->zSql);
return SQLITE_MISUSE_BKPT;
}
if( i<1 || i>p->nVar ){
- sqlite3Error(p->db, SQLITE_RANGE, 0);
+ sqlite3Error(p->db, SQLITE_RANGE);
sqlite3_mutex_leave(p->db->mutex);
return SQLITE_RANGE;
}
@@ -67297,7 +69471,7 @@ static int vdbeUnbind(Vdbe *p, int i){
pVar = &p->aVar[i];
sqlite3VdbeMemRelease(pVar);
pVar->flags = MEM_Null;
- sqlite3Error(p->db, SQLITE_OK, 0);
+ sqlite3Error(p->db, SQLITE_OK);
/* If the bit corresponding to this variable in Vdbe.expmask is set, then
** binding a new value to this variable invalidates the current query plan.
@@ -67339,7 +69513,7 @@ static int bindText(
if( rc==SQLITE_OK && encoding!=0 ){
rc = sqlite3VdbeChangeEncoding(pVar, ENC(p->db));
}
- sqlite3Error(p->db, rc, 0);
+ sqlite3Error(p->db, rc);
rc = sqlite3ApiExit(p->db, rc);
}
sqlite3_mutex_leave(p->db->mutex);
@@ -67362,6 +69536,20 @@ SQLITE_API int sqlite3_bind_blob(
){
return bindText(pStmt, i, zData, nData, xDel, 0);
}
+SQLITE_API int sqlite3_bind_blob64(
+ sqlite3_stmt *pStmt,
+ int i,
+ const void *zData,
+ sqlite3_uint64 nData,
+ void (*xDel)(void*)
+){
+ assert( xDel!=SQLITE_DYNAMIC );
+ if( nData>0x7fffffff ){
+ return invokeValueDestructor(zData, xDel, 0);
+ }else{
+ return bindText(pStmt, i, zData, (int)nData, xDel, 0);
+ }
+}
SQLITE_API int sqlite3_bind_double(sqlite3_stmt *pStmt, int i, double rValue){
int rc;
Vdbe *p = (Vdbe *)pStmt;
@@ -67403,6 +69591,22 @@ SQLITE_API int sqlite3_bind_text(
){
return bindText(pStmt, i, zData, nData, xDel, SQLITE_UTF8);
}
+SQLITE_API int sqlite3_bind_text64(
+ sqlite3_stmt *pStmt,
+ int i,
+ const char *zData,
+ sqlite3_uint64 nData,
+ void (*xDel)(void*),
+ unsigned char enc
+){
+ assert( xDel!=SQLITE_DYNAMIC );
+ if( nData>0x7fffffff ){
+ return invokeValueDestructor(zData, xDel, 0);
+ }else{
+ if( enc==SQLITE_UTF16 ) enc = SQLITE_UTF16NATIVE;
+ return bindText(pStmt, i, zData, (int)nData, xDel, enc);
+ }
+}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API int sqlite3_bind_text16(
sqlite3_stmt *pStmt,
@@ -67422,7 +69626,7 @@ SQLITE_API int sqlite3_bind_value(sqlite3_stmt *pStmt, int i, const sqlite3_valu
break;
}
case SQLITE_FLOAT: {
- rc = sqlite3_bind_double(pStmt, i, pValue->r);
+ rc = sqlite3_bind_double(pStmt, i, pValue->u.r);
break;
}
case SQLITE_BLOB: {
@@ -67525,7 +69729,7 @@ SQLITE_PRIVATE int sqlite3TransferBindings(sqlite3_stmt *pFromStmt, sqlite3_stmt
** Deprecated external interface. Internal/core SQLite code
** should call sqlite3TransferBindings.
**
-** Is is misuse to call this routine with statements from different
+** It is misuse to call this routine with statements from different
** database connections. But as this is a deprecated interface, we
** will not bother to check for that condition.
**
@@ -67583,6 +69787,12 @@ SQLITE_API int sqlite3_stmt_busy(sqlite3_stmt *pStmt){
*/
SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
sqlite3_stmt *pNext;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(pDb) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(pDb->mutex);
if( pStmt==0 ){
pNext = (sqlite3_stmt*)pDb->pVdbe;
@@ -67598,11 +69808,87 @@ SQLITE_API sqlite3_stmt *sqlite3_next_stmt(sqlite3 *pDb, sqlite3_stmt *pStmt){
*/
SQLITE_API int sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){
Vdbe *pVdbe = (Vdbe*)pStmt;
- u32 v = pVdbe->aCounter[op];
+ u32 v;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !pStmt ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
+ v = pVdbe->aCounter[op];
if( resetFlag ) pVdbe->aCounter[op] = 0;
return (int)v;
}
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+/*
+** Return status data for a single loop within query pStmt.
+*/
+SQLITE_API int sqlite3_stmt_scanstatus(
+ sqlite3_stmt *pStmt, /* Prepared statement being queried */
+ int idx, /* Index of loop to report on */
+ int iScanStatusOp, /* Which metric to return */
+ void *pOut /* OUT: Write the answer here */
+){
+ Vdbe *p = (Vdbe*)pStmt;
+ ScanStatus *pScan;
+ if( idx<0 || idx>=p->nScan ) return 1;
+ pScan = &p->aScan[idx];
+ switch( iScanStatusOp ){
+ case SQLITE_SCANSTAT_NLOOP: {
+ *(sqlite3_int64*)pOut = p->anExec[pScan->addrLoop];
+ break;
+ }
+ case SQLITE_SCANSTAT_NVISIT: {
+ *(sqlite3_int64*)pOut = p->anExec[pScan->addrVisit];
+ break;
+ }
+ case SQLITE_SCANSTAT_EST: {
+ double r = 1.0;
+ LogEst x = pScan->nEst;
+ while( x<100 ){
+ x += 10;
+ r *= 0.5;
+ }
+ *(double*)pOut = r*sqlite3LogEstToInt(x);
+ break;
+ }
+ case SQLITE_SCANSTAT_NAME: {
+ *(const char**)pOut = pScan->zName;
+ break;
+ }
+ case SQLITE_SCANSTAT_EXPLAIN: {
+ if( pScan->addrExplain ){
+ *(const char**)pOut = p->aOp[ pScan->addrExplain ].p4.z;
+ }else{
+ *(const char**)pOut = 0;
+ }
+ break;
+ }
+ case SQLITE_SCANSTAT_SELECTID: {
+ if( pScan->addrExplain ){
+ *(int*)pOut = p->aOp[ pScan->addrExplain ].p1;
+ }else{
+ *(int*)pOut = -1;
+ }
+ break;
+ }
+ default: {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
+** Zero all counters associated with the sqlite3_stmt_scanstatus() data.
+*/
+SQLITE_API void sqlite3_stmt_scanstatus_reset(sqlite3_stmt *pStmt){
+ Vdbe *p = (Vdbe*)pStmt;
+ memset(p->anExec, 0, p->nOp * sizeof(i64));
+}
+#endif /* SQLITE_ENABLE_STMT_SCANSTATUS */
+
/************** End of vdbeapi.c *********************************************/
/************** Begin file vdbetrace.c ***************************************/
/*
@@ -67669,7 +69955,7 @@ static int findNextHostParameter(const char *zSql, int *pnToken){
** ALGORITHM: Scan the input string looking for host parameters in any of
** these forms: ?, ?N, $A, @A, :A. Take care to avoid text within
** string literals, quoted identifier names, and comments. For text forms,
-** the host parameter index is found by scanning the perpared
+** the host parameter index is found by scanning the prepared
** statement for the corresponding OP_Variable opcode. Once the host
** parameter index is known, locate the value in p->aVar[]. Then render
** the value as a literal in place of the host parameter name.
@@ -67732,7 +70018,7 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
}else if( pVar->flags & MEM_Int ){
sqlite3XPrintf(&out, 0, "%lld", pVar->u.i);
}else if( pVar->flags & MEM_Real ){
- sqlite3XPrintf(&out, 0, "%!.15g", pVar->r);
+ sqlite3XPrintf(&out, 0, "%!.15g", pVar->u.r);
}else if( pVar->flags & MEM_Str ){
int nOut; /* Number of bytes of the string text to include in output */
#ifndef SQLITE_OMIT_UTF16
@@ -67789,121 +70075,6 @@ SQLITE_PRIVATE char *sqlite3VdbeExpandSql(
#endif /* #ifndef SQLITE_OMIT_TRACE */
-/*****************************************************************************
-** The following code implements the data-structure explaining logic
-** for the Vdbe.
-*/
-
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
-
-/*
-** Allocate a new Explain object
-*/
-SQLITE_PRIVATE void sqlite3ExplainBegin(Vdbe *pVdbe){
- if( pVdbe ){
- Explain *p;
- sqlite3BeginBenignMalloc();
- p = (Explain *)sqlite3MallocZero( sizeof(Explain) );
- if( p ){
- p->pVdbe = pVdbe;
- sqlite3_free(pVdbe->pExplain);
- pVdbe->pExplain = p;
- sqlite3StrAccumInit(&p->str, p->zBase, sizeof(p->zBase),
- SQLITE_MAX_LENGTH);
- p->str.useMalloc = 2;
- }else{
- sqlite3EndBenignMalloc();
- }
- }
-}
-
-/*
-** Return true if the Explain ends with a new-line.
-*/
-static int endsWithNL(Explain *p){
- return p && p->str.zText && p->str.nChar
- && p->str.zText[p->str.nChar-1]=='\n';
-}
-
-/*
-** Append text to the indentation
-*/
-SQLITE_PRIVATE void sqlite3ExplainPrintf(Vdbe *pVdbe, const char *zFormat, ...){
- Explain *p;
- if( pVdbe && (p = pVdbe->pExplain)!=0 ){
- va_list ap;
- if( p->nIndent && endsWithNL(p) ){
- int n = p->nIndent;
- if( n>ArraySize(p->aIndent) ) n = ArraySize(p->aIndent);
- sqlite3AppendSpace(&p->str, p->aIndent[n-1]);
- }
- va_start(ap, zFormat);
- sqlite3VXPrintf(&p->str, SQLITE_PRINTF_INTERNAL, zFormat, ap);
- va_end(ap);
- }
-}
-
-/*
-** Append a '\n' if there is not already one.
-*/
-SQLITE_PRIVATE void sqlite3ExplainNL(Vdbe *pVdbe){
- Explain *p;
- if( pVdbe && (p = pVdbe->pExplain)!=0 && !endsWithNL(p) ){
- sqlite3StrAccumAppend(&p->str, "\n", 1);
- }
-}
-
-/*
-** Push a new indentation level. Subsequent lines will be indented
-** so that they begin at the current cursor position.
-*/
-SQLITE_PRIVATE void sqlite3ExplainPush(Vdbe *pVdbe){
- Explain *p;
- if( pVdbe && (p = pVdbe->pExplain)!=0 ){
- if( p->str.zText && p->nIndent<ArraySize(p->aIndent) ){
- const char *z = p->str.zText;
- int i = p->str.nChar-1;
- int x;
- while( i>=0 && z[i]!='\n' ){ i--; }
- x = (p->str.nChar - 1) - i;
- if( p->nIndent && x<p->aIndent[p->nIndent-1] ){
- x = p->aIndent[p->nIndent-1];
- }
- p->aIndent[p->nIndent] = x;
- }
- p->nIndent++;
- }
-}
-
-/*
-** Pop the indentation stack by one level.
-*/
-SQLITE_PRIVATE void sqlite3ExplainPop(Vdbe *p){
- if( p && p->pExplain ) p->pExplain->nIndent--;
-}
-
-/*
-** Free the indentation structure
-*/
-SQLITE_PRIVATE void sqlite3ExplainFinish(Vdbe *pVdbe){
- if( pVdbe && pVdbe->pExplain ){
- sqlite3_free(pVdbe->zExplain);
- sqlite3ExplainNL(pVdbe);
- pVdbe->zExplain = sqlite3StrAccumFinish(&pVdbe->pExplain->str);
- sqlite3_free(pVdbe->pExplain);
- pVdbe->pExplain = 0;
- sqlite3EndBenignMalloc();
- }
-}
-
-/*
-** Return the explanation of a virtual machine.
-*/
-SQLITE_PRIVATE const char *sqlite3VdbeExplanation(Vdbe *pVdbe){
- return (pVdbe && pVdbe->zExplain) ? pVdbe->zExplain : 0;
-}
-#endif /* defined(SQLITE_DEBUG) */
-
/************** End of vdbetrace.c *******************************************/
/************** Begin file vdbe.c ********************************************/
/*
@@ -68052,7 +70223,7 @@ SQLITE_API int sqlite3_found_count = 0;
** already. Return non-zero if a malloc() fails.
*/
#define Stringify(P, enc) \
- if(((P)->flags&(MEM_Str|MEM_Blob))==0 && sqlite3VdbeMemStringify(P,enc)) \
+ if(((P)->flags&(MEM_Str|MEM_Blob))==0 && sqlite3VdbeMemStringify(P,enc,0)) \
{ goto no_mem; }
/*
@@ -68115,11 +70286,12 @@ static VdbeCursor *allocateCursor(
sqlite3VdbeFreeCursor(p, p->apCsr[iCur]);
p->apCsr[iCur] = 0;
}
- if( SQLITE_OK==sqlite3VdbeMemGrow(pMem, nByte, 0) ){
+ if( SQLITE_OK==sqlite3VdbeMemClearAndResize(pMem, nByte) ){
p->apCsr[iCur] = pCx = (VdbeCursor*)pMem->z;
memset(pCx, 0, sizeof(VdbeCursor));
pCx->iDb = iDb;
pCx->nField = nField;
+ pCx->aOffset = &pCx->aType[nField];
if( isBtreeCursor ){
pCx->pCursor = (BtCursor*)
&pMem->z[ROUND8(sizeof(VdbeCursor))+2*sizeof(u32)*nField];
@@ -68134,23 +70306,31 @@ static VdbeCursor *allocateCursor(
** do so without loss of information. In other words, if the string
** looks like a number, convert it into a number. If it does not
** look like a number, leave it alone.
+**
+** If the bTryForInt flag is true, then extra effort is made to give
+** an integer representation. Strings that look like floating point
+** values but which have no fractional component (example: '48.00')
+** will have a MEM_Int representation when bTryForInt is true.
+**
+** If bTryForInt is false, then if the input string contains a decimal
+** point or exponential notation, the result is only MEM_Real, even
+** if there is an exact integer representation of the quantity.
*/
-static void applyNumericAffinity(Mem *pRec){
+static void applyNumericAffinity(Mem *pRec, int bTryForInt){
double rValue;
i64 iValue;
u8 enc = pRec->enc;
- if( (pRec->flags&MEM_Str)==0 ) return;
+ assert( (pRec->flags & (MEM_Str|MEM_Int|MEM_Real))==MEM_Str );
if( sqlite3AtoF(pRec->z, &rValue, pRec->n, enc)==0 ) return;
if( 0==sqlite3Atoi64(pRec->z, &iValue, pRec->n, enc) ){
pRec->u.i = iValue;
pRec->flags |= MEM_Int;
}else{
- pRec->r = rValue;
+ pRec->u.r = rValue;
pRec->flags |= MEM_Real;
+ if( bTryForInt ) sqlite3VdbeIntegerAffinity(pRec);
}
}
-#define ApplyNumericAffinity(X) \
- if(((X)->flags&(MEM_Real|MEM_Int))==0){applyNumericAffinity(X);}
/*
** Processing is determine by the affinity parameter:
@@ -68175,21 +70355,23 @@ static void applyAffinity(
char affinity, /* The affinity to be applied */
u8 enc /* Use this text encoding */
){
- if( affinity==SQLITE_AFF_TEXT ){
+ if( affinity>=SQLITE_AFF_NUMERIC ){
+ assert( affinity==SQLITE_AFF_INTEGER || affinity==SQLITE_AFF_REAL
+ || affinity==SQLITE_AFF_NUMERIC );
+ if( (pRec->flags & MEM_Int)==0 ){
+ if( (pRec->flags & MEM_Real)==0 ){
+ if( pRec->flags & MEM_Str ) applyNumericAffinity(pRec,1);
+ }else{
+ sqlite3VdbeIntegerAffinity(pRec);
+ }
+ }
+ }else if( affinity==SQLITE_AFF_TEXT ){
/* Only attempt the conversion to TEXT if there is an integer or real
** representation (blob and NULL do not get converted) but no string
** representation.
*/
if( 0==(pRec->flags&MEM_Str) && (pRec->flags&(MEM_Real|MEM_Int)) ){
- sqlite3VdbeMemStringify(pRec, enc);
- }
- pRec->flags &= ~(MEM_Real|MEM_Int);
- }else if( affinity!=SQLITE_AFF_NONE ){
- assert( affinity==SQLITE_AFF_INTEGER || affinity==SQLITE_AFF_REAL
- || affinity==SQLITE_AFF_NUMERIC );
- ApplyNumericAffinity(pRec);
- if( pRec->flags & MEM_Real ){
- sqlite3VdbeIntegerAffinity(pRec);
+ sqlite3VdbeMemStringify(pRec, enc, 1);
}
}
}
@@ -68204,7 +70386,7 @@ SQLITE_API int sqlite3_value_numeric_type(sqlite3_value *pVal){
int eType = sqlite3_value_type(pVal);
if( eType==SQLITE_TEXT ){
Mem *pMem = (Mem*)pVal;
- applyNumericAffinity(pMem);
+ applyNumericAffinity(pMem, 0);
eType = sqlite3_value_type(pVal);
}
return eType;
@@ -68223,24 +70405,36 @@ SQLITE_PRIVATE void sqlite3ValueApplyAffinity(
}
/*
+** pMem currently only holds a string type (or maybe a BLOB that we can
+** interpret as a string if we want to). Compute its corresponding
+** numeric type, if has one. Set the pMem->u.r and pMem->u.i fields
+** accordingly.
+*/
+static u16 SQLITE_NOINLINE computeNumericType(Mem *pMem){
+ assert( (pMem->flags & (MEM_Int|MEM_Real))==0 );
+ assert( (pMem->flags & (MEM_Str|MEM_Blob))!=0 );
+ if( sqlite3AtoF(pMem->z, &pMem->u.r, pMem->n, pMem->enc)==0 ){
+ return 0;
+ }
+ if( sqlite3Atoi64(pMem->z, &pMem->u.i, pMem->n, pMem->enc)==SQLITE_OK ){
+ return MEM_Int;
+ }
+ return MEM_Real;
+}
+
+/*
** Return the numeric type for pMem, either MEM_Int or MEM_Real or both or
** none.
**
** Unlike applyNumericAffinity(), this routine does not modify pMem->flags.
-** But it does set pMem->r and pMem->u.i appropriately.
+** But it does set pMem->u.r and pMem->u.i appropriately.
*/
static u16 numericType(Mem *pMem){
if( pMem->flags & (MEM_Int|MEM_Real) ){
return pMem->flags & (MEM_Int|MEM_Real);
}
if( pMem->flags & (MEM_Str|MEM_Blob) ){
- if( sqlite3AtoF(pMem->z, &pMem->r, pMem->n, pMem->enc)==0 ){
- return 0;
- }
- if( sqlite3Atoi64(pMem->z, &pMem->u.i, pMem->n, pMem->enc)==SQLITE_OK ){
- return MEM_Int;
- }
- return MEM_Real;
+ return computeNumericType(pMem);
}
return 0;
}
@@ -68343,7 +70537,7 @@ static void memTracePrint(Mem *p){
printf(" i:%lld", p->u.i);
#ifndef SQLITE_OMIT_FLOATING_POINT
}else if( p->flags & MEM_Real ){
- printf(" r:%g", p->r);
+ printf(" r:%g", p->u.r);
#endif
}else if( p->flags & MEM_RowSet ){
printf(" (rowset)");
@@ -68580,6 +70774,9 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
#endif
nVmStep++;
pOp = &aOp[pc];
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ if( p->anExec ) p->anExec[pc]++;
+#endif
/* Only allow tracing if SQLITE_DEBUG is defined.
*/
@@ -68613,7 +70810,7 @@ SQLITE_PRIVATE int sqlite3VdbeExec(
assert( pOp->p2<=(p->nMem-p->nCursor) );
pOut = &aMem[pOp->p2];
memAboutToChange(p, pOut);
- VdbeMemRelease(pOut);
+ if( VdbeMemDynamic(pOut) ) sqlite3VdbeMemSetNull(pOut);
pOut->flags = MEM_Int;
}
@@ -68975,7 +71172,7 @@ case OP_Int64: { /* out2-prerelease */
case OP_Real: { /* same as TK_FLOAT, out2-prerelease */
pOut->flags = MEM_Real;
assert( !sqlite3IsNaN(*pOp->p4.pReal) );
- pOut->r = *pOp->p4.pReal;
+ pOut->u.r = *pOp->p4.pReal;
break;
}
#endif
@@ -68998,9 +71195,9 @@ case OP_String8: { /* same as TK_STRING, out2-prerelease */
rc = sqlite3VdbeMemSetStr(pOut, pOp->p4.z, -1, SQLITE_UTF8, SQLITE_STATIC);
if( rc==SQLITE_TOOBIG ) goto too_big;
if( SQLITE_OK!=sqlite3VdbeChangeEncoding(pOut, encoding) ) goto no_mem;
- assert( pOut->zMalloc==pOut->z );
+ assert( pOut->szMalloc>0 && pOut->zMalloc==pOut->z );
assert( VdbeMemDynamic(pOut)==0 );
- pOut->zMalloc = 0;
+ pOut->szMalloc = 0;
pOut->flags |= MEM_Static;
if( pOp->p4type==P4_DYNAMIC ){
sqlite3DbFree(db, pOp->p4.z);
@@ -69052,7 +71249,7 @@ case OP_Null: { /* out2-prerelease */
while( cnt>0 ){
pOut++;
memAboutToChange(p, pOut);
- VdbeMemRelease(pOut);
+ sqlite3VdbeMemSetNull(pOut);
pOut->flags = nullFlag;
cnt--;
}
@@ -69120,7 +71317,6 @@ case OP_Variable: { /* out2-prerelease */
** for P3 to be less than 1.
*/
case OP_Move: {
- char *zMalloc; /* Holding variable for allocated memory */
int n; /* Number of registers left to copy */
int p1; /* Register to copy from */
int p2; /* Register to copy to */
@@ -69138,17 +71334,12 @@ case OP_Move: {
assert( pIn1<=&aMem[(p->nMem-p->nCursor)] );
assert( memIsValid(pIn1) );
memAboutToChange(p, pOut);
- VdbeMemRelease(pOut);
- zMalloc = pOut->zMalloc;
- memcpy(pOut, pIn1, sizeof(Mem));
+ sqlite3VdbeMemMove(pOut, pIn1);
#ifdef SQLITE_DEBUG
if( pOut->pScopyFrom>=&aMem[p1] && pOut->pScopyFrom<&aMem[p1+pOp->p3] ){
pOut->pScopyFrom += p1 - pOp->p2;
}
#endif
- pIn1->flags = MEM_Undefined;
- pIn1->xDel = 0;
- pIn1->zMalloc = zMalloc;
REGISTER_TRACE(p2++, pOut);
pIn1++;
pOut++;
@@ -69453,7 +71644,7 @@ fp_math:
if( sqlite3IsNaN(rB) ){
goto arithmetic_result_is_null;
}
- pOut->r = rB;
+ pOut->u.r = rB;
MemSetTypeFlag(pOut, MEM_Real);
if( ((type1|type2)&MEM_Real)==0 && !bIntint ){
sqlite3VdbeIntegerAffinity(pOut);
@@ -69518,8 +71709,8 @@ case OP_Function: {
apVal = p->apArg;
assert( apVal || n==0 );
assert( pOp->p3>0 && pOp->p3<=(p->nMem-p->nCursor) );
- pOut = &aMem[pOp->p3];
- memAboutToChange(p, pOut);
+ ctx.pOut = &aMem[pOp->p3];
+ memAboutToChange(p, ctx.pOut);
assert( n==0 || (pOp->p2>0 && pOp->p2+n<=(p->nMem-p->nCursor)+1) );
assert( pOp->p3<pOp->p2 || pOp->p3>=pOp->p2+n );
@@ -69535,65 +71726,29 @@ case OP_Function: {
ctx.pFunc = pOp->p4.pFunc;
ctx.iOp = pc;
ctx.pVdbe = p;
-
- /* The output cell may already have a buffer allocated. Move
- ** the pointer to ctx.s so in case the user-function can use
- ** the already allocated buffer instead of allocating a new one.
- */
- memcpy(&ctx.s, pOut, sizeof(Mem));
- pOut->flags = MEM_Null;
- pOut->xDel = 0;
- pOut->zMalloc = 0;
- MemSetTypeFlag(&ctx.s, MEM_Null);
-
+ MemSetTypeFlag(ctx.pOut, MEM_Null);
ctx.fErrorOrAux = 0;
- if( ctx.pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
- assert( pOp>aOp );
- assert( pOp[-1].p4type==P4_COLLSEQ );
- assert( pOp[-1].opcode==OP_CollSeq );
- ctx.pColl = pOp[-1].p4.pColl;
- }
db->lastRowid = lastRowid;
(*ctx.pFunc->xFunc)(&ctx, n, apVal); /* IMP: R-24505-23230 */
- lastRowid = db->lastRowid;
-
- if( db->mallocFailed ){
- /* Even though a malloc() has failed, the implementation of the
- ** user function may have called an sqlite3_result_XXX() function
- ** to return a value. The following call releases any resources
- ** associated with such a value.
- */
- sqlite3VdbeMemRelease(&ctx.s);
- goto no_mem;
- }
+ lastRowid = db->lastRowid; /* Remember rowid changes made by xFunc */
/* If the function returned an error, throw an exception */
if( ctx.fErrorOrAux ){
if( ctx.isError ){
- sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3_value_text(&ctx.s));
+ sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3_value_text(ctx.pOut));
rc = ctx.isError;
}
sqlite3VdbeDeleteAuxData(p, pc, pOp->p1);
}
/* Copy the result of the function into register P3 */
- sqlite3VdbeChangeEncoding(&ctx.s, encoding);
- assert( pOut->flags==MEM_Null );
- memcpy(pOut, &ctx.s, sizeof(Mem));
- if( sqlite3VdbeMemTooBig(pOut) ){
+ sqlite3VdbeChangeEncoding(ctx.pOut, encoding);
+ if( sqlite3VdbeMemTooBig(ctx.pOut) ){
goto too_big;
}
-#if 0
- /* The app-defined function has done something that as caused this
- ** statement to expire. (Perhaps the function called sqlite3_exec()
- ** with a CREATE TABLE statement.)
- */
- if( p->expired ) rc = SQLITE_ABORT;
-#endif
-
- REGISTER_TRACE(pOp->p3, pOut);
- UPDATE_MAX_BLOBSIZE(pOut);
+ REGISTER_TRACE(pOp->p3, ctx.pOut);
+ UPDATE_MAX_BLOBSIZE(ctx.pOut);
break;
}
@@ -69741,106 +71896,37 @@ case OP_RealAffinity: { /* in1 */
#endif
#ifndef SQLITE_OMIT_CAST
-/* Opcode: ToText P1 * * * *
+/* Opcode: Cast P1 P2 * * *
+** Synopsis: affinity(r[P1])
**
-** Force the value in register P1 to be text.
-** If the value is numeric, convert it to a string using the
-** equivalent of sprintf(). Blob values are unchanged and
-** are afterwards simply interpreted as text.
+** Force the value in register P1 to be the type defined by P2.
+**
+** <ul>
+** <li value="97"> TEXT
+** <li value="98"> BLOB
+** <li value="99"> NUMERIC
+** <li value="100"> INTEGER
+** <li value="101"> REAL
+** </ul>
**
** A NULL value is not changed by this routine. It remains NULL.
*/
-case OP_ToText: { /* same as TK_TO_TEXT, in1 */
+case OP_Cast: { /* in1 */
+ assert( pOp->p2>=SQLITE_AFF_NONE && pOp->p2<=SQLITE_AFF_REAL );
+ testcase( pOp->p2==SQLITE_AFF_TEXT );
+ testcase( pOp->p2==SQLITE_AFF_NONE );
+ testcase( pOp->p2==SQLITE_AFF_NUMERIC );
+ testcase( pOp->p2==SQLITE_AFF_INTEGER );
+ testcase( pOp->p2==SQLITE_AFF_REAL );
pIn1 = &aMem[pOp->p1];
memAboutToChange(p, pIn1);
- if( pIn1->flags & MEM_Null ) break;
- assert( MEM_Str==(MEM_Blob>>3) );
- pIn1->flags |= (pIn1->flags&MEM_Blob)>>3;
- applyAffinity(pIn1, SQLITE_AFF_TEXT, encoding);
rc = ExpandBlob(pIn1);
- assert( pIn1->flags & MEM_Str || db->mallocFailed );
- pIn1->flags &= ~(MEM_Int|MEM_Real|MEM_Blob|MEM_Zero);
- UPDATE_MAX_BLOBSIZE(pIn1);
- break;
-}
-
-/* Opcode: ToBlob P1 * * * *
-**
-** Force the value in register P1 to be a BLOB.
-** If the value is numeric, convert it to a string first.
-** Strings are simply reinterpreted as blobs with no change
-** to the underlying data.
-**
-** A NULL value is not changed by this routine. It remains NULL.
-*/
-case OP_ToBlob: { /* same as TK_TO_BLOB, in1 */
- pIn1 = &aMem[pOp->p1];
- if( pIn1->flags & MEM_Null ) break;
- if( (pIn1->flags & MEM_Blob)==0 ){
- applyAffinity(pIn1, SQLITE_AFF_TEXT, encoding);
- assert( pIn1->flags & MEM_Str || db->mallocFailed );
- MemSetTypeFlag(pIn1, MEM_Blob);
- }else{
- pIn1->flags &= ~(MEM_TypeMask&~MEM_Blob);
- }
+ sqlite3VdbeMemCast(pIn1, pOp->p2, encoding);
UPDATE_MAX_BLOBSIZE(pIn1);
break;
}
-
-/* Opcode: ToNumeric P1 * * * *
-**
-** Force the value in register P1 to be numeric (either an
-** integer or a floating-point number.)
-** If the value is text or blob, try to convert it to an using the
-** equivalent of atoi() or atof() and store 0 if no such conversion
-** is possible.
-**
-** A NULL value is not changed by this routine. It remains NULL.
-*/
-case OP_ToNumeric: { /* same as TK_TO_NUMERIC, in1 */
- pIn1 = &aMem[pOp->p1];
- sqlite3VdbeMemNumerify(pIn1);
- break;
-}
#endif /* SQLITE_OMIT_CAST */
-/* Opcode: ToInt P1 * * * *
-**
-** Force the value in register P1 to be an integer. If
-** The value is currently a real number, drop its fractional part.
-** If the value is text or blob, try to convert it to an integer using the
-** equivalent of atoi() and store 0 if no such conversion is possible.
-**
-** A NULL value is not changed by this routine. It remains NULL.
-*/
-case OP_ToInt: { /* same as TK_TO_INT, in1 */
- pIn1 = &aMem[pOp->p1];
- if( (pIn1->flags & MEM_Null)==0 ){
- sqlite3VdbeMemIntegerify(pIn1);
- }
- break;
-}
-
-#if !defined(SQLITE_OMIT_CAST) && !defined(SQLITE_OMIT_FLOATING_POINT)
-/* Opcode: ToReal P1 * * * *
-**
-** Force the value in register P1 to be a floating point number.
-** If The value is currently an integer, convert it.
-** If the value is text or blob, try to convert it to an integer using the
-** equivalent of atoi() and store 0.0 if no such conversion is possible.
-**
-** A NULL value is not changed by this routine. It remains NULL.
-*/
-case OP_ToReal: { /* same as TK_TO_REAL, in1 */
- pIn1 = &aMem[pOp->p1];
- memAboutToChange(p, pIn1);
- if( (pIn1->flags & MEM_Null)==0 ){
- sqlite3VdbeMemRealify(pIn1);
- }
- break;
-}
-#endif /* !defined(SQLITE_OMIT_CAST) && !defined(SQLITE_OMIT_FLOATING_POINT) */
-
/* Opcode: Lt P1 P2 P3 P4 P5
** Synopsis: if r[P1]<r[P3] goto P2
**
@@ -69976,15 +72062,35 @@ case OP_Ge: { /* same as TK_GE, jump, in1, in3 */
}else{
/* Neither operand is NULL. Do a comparison. */
affinity = pOp->p5 & SQLITE_AFF_MASK;
- if( affinity ){
- applyAffinity(pIn1, affinity, encoding);
- applyAffinity(pIn3, affinity, encoding);
- if( db->mallocFailed ) goto no_mem;
+ if( affinity>=SQLITE_AFF_NUMERIC ){
+ if( (pIn1->flags & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
+ applyNumericAffinity(pIn1,0);
+ }
+ if( (pIn3->flags & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
+ applyNumericAffinity(pIn3,0);
+ }
+ }else if( affinity==SQLITE_AFF_TEXT ){
+ if( (pIn1->flags & MEM_Str)==0 && (pIn1->flags & (MEM_Int|MEM_Real))!=0 ){
+ testcase( pIn1->flags & MEM_Int );
+ testcase( pIn1->flags & MEM_Real );
+ sqlite3VdbeMemStringify(pIn1, encoding, 1);
+ }
+ if( (pIn3->flags & MEM_Str)==0 && (pIn3->flags & (MEM_Int|MEM_Real))!=0 ){
+ testcase( pIn3->flags & MEM_Int );
+ testcase( pIn3->flags & MEM_Real );
+ sqlite3VdbeMemStringify(pIn3, encoding, 1);
+ }
}
-
assert( pOp->p4type==P4_COLLSEQ || pOp->p4.pColl==0 );
- ExpandBlob(pIn1);
- ExpandBlob(pIn3);
+ if( pIn1->flags & MEM_Zero ){
+ sqlite3VdbeMemExpandBlob(pIn1);
+ flags1 &= ~MEM_Zero;
+ }
+ if( pIn3->flags & MEM_Zero ){
+ sqlite3VdbeMemExpandBlob(pIn3);
+ flags3 &= ~MEM_Zero;
+ }
+ if( db->mallocFailed ) goto no_mem;
res = sqlite3MemCompare(pIn3, pIn1, pOp->p4.pColl);
}
switch( pOp->opcode ){
@@ -70009,8 +72115,8 @@ case OP_Ge: { /* same as TK_GE, jump, in1, in3 */
}
}
/* Undo any changes made by applyAffinity() to the input registers. */
- pIn1->flags = (pIn1->flags&~MEM_TypeMask) | (flags1&MEM_TypeMask);
- pIn3->flags = (pIn3->flags&~MEM_TypeMask) | (flags3&MEM_TypeMask);
+ pIn1->flags = flags1;
+ pIn3->flags = flags3;
break;
}
@@ -70178,10 +72284,10 @@ case OP_Or: { /* same as TK_OR, in1, in2, out3 */
case OP_Not: { /* same as TK_NOT, in1, out2 */
pIn1 = &aMem[pOp->p1];
pOut = &aMem[pOp->p2];
- if( pIn1->flags & MEM_Null ){
- sqlite3VdbeMemSetNull(pOut);
- }else{
- sqlite3VdbeMemSetInt64(pOut, !sqlite3VdbeIntValue(pIn1));
+ sqlite3VdbeMemSetNull(pOut);
+ if( (pIn1->flags & MEM_Null)==0 ){
+ pOut->flags = MEM_Int;
+ pOut->u.i = !sqlite3VdbeIntValue(pIn1);
}
break;
}
@@ -70196,10 +72302,10 @@ case OP_Not: { /* same as TK_NOT, in1, out2 */
case OP_BitNot: { /* same as TK_BITNOT, in1, out2 */
pIn1 = &aMem[pOp->p1];
pOut = &aMem[pOp->p2];
- if( pIn1->flags & MEM_Null ){
- sqlite3VdbeMemSetNull(pOut);
- }else{
- sqlite3VdbeMemSetInt64(pOut, ~sqlite3VdbeIntValue(pIn1));
+ sqlite3VdbeMemSetNull(pOut);
+ if( (pIn1->flags & MEM_Null)==0 ){
+ pOut->flags = MEM_Int;
+ pOut->u.i = ~sqlite3VdbeIntValue(pIn1);
}
break;
}
@@ -70317,7 +72423,6 @@ case OP_Column: {
int p2; /* column number to retrieve */
VdbeCursor *pC; /* The VDBE cursor */
BtCursor *pCrsr; /* The BTree cursor */
- u32 *aType; /* aType[i] holds the numeric type of the i-th column */
u32 *aOffset; /* aOffset[i] is offset to start of data for i-th column */
int len; /* The length of the serialized data for the column */
int i; /* Loop counter */
@@ -70330,6 +72435,7 @@ case OP_Column: {
u32 szField; /* Number of bytes in the content of a field */
u32 avail; /* Number of bytes of available data */
u32 t; /* A type code from the record header */
+ u16 fx; /* pDest->flags value */
Mem *pReg; /* PseudoTable input register */
p2 = pOp->p2;
@@ -70340,8 +72446,7 @@ case OP_Column: {
pC = p->apCsr[pOp->p1];
assert( pC!=0 );
assert( p2<pC->nField );
- aType = pC->aType;
- aOffset = aType + pC->nField;
+ aOffset = pC->aOffset;
#ifndef SQLITE_OMIT_VIRTUALTABLE
assert( pC->pVtabCursor==0 ); /* OP_Column never called on virtual table */
#endif
@@ -70352,7 +72457,7 @@ case OP_Column: {
/* If the cursor cache is stale, bring it up-to-date */
rc = sqlite3VdbeCursorMoveto(pC);
if( rc ) goto abort_due_to_error;
- if( pC->cacheStatus!=p->cacheCtr || (pOp->p5&OPFLAG_CLEARCACHE)!=0 ){
+ if( pC->cacheStatus!=p->cacheCtr ){
if( pC->nullRow ){
if( pCrsr==0 ){
assert( pC->pseudoTableReg>0 );
@@ -70362,7 +72467,7 @@ case OP_Column: {
pC->payloadSize = pC->szRow = avail = pReg->n;
pC->aRow = (u8*)pReg->z;
}else{
- MemSetTypeFlag(pDest, MEM_Null);
+ sqlite3VdbeMemSetNull(pDest);
goto op_column_out;
}
}else{
@@ -70397,14 +72502,6 @@ case OP_Column: {
pC->iHdrOffset = getVarint32(pC->aRow, offset);
pC->nHdrParsed = 0;
aOffset[0] = offset;
- if( avail<offset ){
- /* pC->aRow does not have to hold the entire row, but it does at least
- ** need to cover the header of the record. If pC->aRow does not contain
- ** the complete header, then set it to zero, forcing the header to be
- ** dynamically allocated. */
- pC->aRow = 0;
- pC->szRow = 0;
- }
/* Make sure a corrupt database has not given us an oversize header.
** Do this now to avoid an oversize memory allocation.
@@ -70419,15 +72516,32 @@ case OP_Column: {
rc = SQLITE_CORRUPT_BKPT;
goto op_column_error;
}
+
+ if( avail<offset ){
+ /* pC->aRow does not have to hold the entire row, but it does at least
+ ** need to cover the header of the record. If pC->aRow does not contain
+ ** the complete header, then set it to zero, forcing the header to be
+ ** dynamically allocated. */
+ pC->aRow = 0;
+ pC->szRow = 0;
+ }
+
+ /* The following goto is an optimization. It can be omitted and
+ ** everything will still work. But OP_Column is measurably faster
+ ** by skipping the subsequent conditional, which is always true.
+ */
+ assert( pC->nHdrParsed<=p2 ); /* Conditional skipped */
+ goto op_column_read_header;
}
/* Make sure at least the first p2+1 entries of the header have been
- ** parsed and valid information is in aOffset[] and aType[].
+ ** parsed and valid information is in aOffset[] and pC->aType[].
*/
if( pC->nHdrParsed<=p2 ){
/* If there is more header available for parsing in the record, try
** to extract additional fields up through the p2+1-th field
*/
+ op_column_read_header:
if( pC->iHdrOffset<aOffset[0] ){
/* Make sure zData points to enough of the record to cover the header. */
if( pC->aRow==0 ){
@@ -70442,7 +72556,7 @@ case OP_Column: {
zData = pC->aRow;
}
- /* Fill in aType[i] and aOffset[i] values through the p2-th field. */
+ /* Fill in pC->aType[i] and aOffset[i] values through the p2-th field. */
i = pC->nHdrParsed;
offset = aOffset[i];
zHdr = zData + pC->iHdrOffset;
@@ -70455,7 +72569,7 @@ case OP_Column: {
}else{
zHdr += sqlite3GetVarint32(zHdr, &t);
}
- aType[i] = t;
+ pC->aType[i] = t;
szField = sqlite3VdbeSerialTypeLen(t);
offset += szField;
if( offset<szField ){ /* True if offset overflows */
@@ -70472,15 +72586,16 @@ case OP_Column: {
sMem.flags = MEM_Null;
}
- /* If we have read more header data than was contained in the header,
- ** or if the end of the last field appears to be past the end of the
- ** record, or if the end of the last field appears to be before the end
- ** of the record (when all fields present), then we must be dealing
- ** with a corrupt database.
+ /* The record is corrupt if any of the following are true:
+ ** (1) the bytes of the header extend past the declared header size
+ ** (zHdr>zEndHdr)
+ ** (2) the entire header was used but not all data was used
+ ** (zHdr==zEndHdr && offset!=pC->payloadSize)
+ ** (3) the end of the data extends beyond the end of the record.
+ ** (offset > pC->payloadSize)
*/
- if( (zHdr > zEndHdr)
+ if( (zHdr>=zEndHdr && (zHdr>zEndHdr || offset!=pC->payloadSize))
|| (offset > pC->payloadSize)
- || (zHdr==zEndHdr && offset!=pC->payloadSize)
){
rc = SQLITE_CORRUPT_BKPT;
goto op_column_error;
@@ -70495,68 +72610,68 @@ case OP_Column: {
if( pOp->p4type==P4_MEM ){
sqlite3VdbeMemShallowCopy(pDest, pOp->p4.pMem, MEM_Static);
}else{
- MemSetTypeFlag(pDest, MEM_Null);
+ sqlite3VdbeMemSetNull(pDest);
}
goto op_column_out;
}
}
/* Extract the content for the p2+1-th column. Control can only
- ** reach this point if aOffset[p2], aOffset[p2+1], and aType[p2] are
+ ** reach this point if aOffset[p2], aOffset[p2+1], and pC->aType[p2] are
** all valid.
*/
assert( p2<pC->nHdrParsed );
assert( rc==SQLITE_OK );
assert( sqlite3VdbeCheckMemInvariants(pDest) );
+ if( VdbeMemDynamic(pDest) ) sqlite3VdbeMemSetNull(pDest);
+ t = pC->aType[p2];
if( pC->szRow>=aOffset[p2+1] ){
/* This is the common case where the desired content fits on the original
** page - where the content is not on an overflow page */
- VdbeMemRelease(pDest);
- sqlite3VdbeSerialGet(pC->aRow+aOffset[p2], aType[p2], pDest);
+ sqlite3VdbeSerialGet(pC->aRow+aOffset[p2], t, pDest);
}else{
/* This branch happens only when content is on overflow pages */
- t = aType[p2];
if( ((pOp->p5 & (OPFLAG_LENGTHARG|OPFLAG_TYPEOFARG))!=0
&& ((t>=12 && (t&1)==0) || (pOp->p5 & OPFLAG_TYPEOFARG)!=0))
|| (len = sqlite3VdbeSerialTypeLen(t))==0
){
- /* Content is irrelevant for the typeof() function and for
- ** the length(X) function if X is a blob. So we might as well use
- ** bogus content rather than reading content from disk. NULL works
- ** for text and blob and whatever is in the payloadSize64 variable
- ** will work for everything else. Content is also irrelevant if
- ** the content length is 0. */
- zData = t<=13 ? (u8*)&payloadSize64 : 0;
- sMem.zMalloc = 0;
+ /* Content is irrelevant for
+ ** 1. the typeof() function,
+ ** 2. the length(X) function if X is a blob, and
+ ** 3. if the content length is zero.
+ ** So we might as well use bogus content rather than reading
+ ** content from disk. NULL will work for the value for strings
+ ** and blobs and whatever is in the payloadSize64 variable
+ ** will work for everything else. */
+ sqlite3VdbeSerialGet(t<=13 ? (u8*)&payloadSize64 : 0, t, pDest);
}else{
- memset(&sMem, 0, sizeof(sMem));
- sqlite3VdbeMemMove(&sMem, pDest);
rc = sqlite3VdbeMemFromBtree(pCrsr, aOffset[p2], len, !pC->isTable,
- &sMem);
+ pDest);
if( rc!=SQLITE_OK ){
goto op_column_error;
}
- zData = (u8*)sMem.z;
- }
- sqlite3VdbeSerialGet(zData, t, pDest);
- /* If we dynamically allocated space to hold the data (in the
- ** sqlite3VdbeMemFromBtree() call above) then transfer control of that
- ** dynamically allocated space over to the pDest structure.
- ** This prevents a memory copy. */
- if( sMem.zMalloc ){
- assert( sMem.z==sMem.zMalloc );
- assert( VdbeMemDynamic(pDest)==0 );
- assert( (pDest->flags & (MEM_Blob|MEM_Str))==0 || pDest->z==sMem.z );
- pDest->flags &= ~(MEM_Ephem|MEM_Static);
- pDest->flags |= MEM_Term;
- pDest->z = sMem.z;
- pDest->zMalloc = sMem.zMalloc;
+ sqlite3VdbeSerialGet((const u8*)pDest->z, t, pDest);
+ pDest->flags &= ~MEM_Ephem;
}
}
pDest->enc = encoding;
op_column_out:
- Deephemeralize(pDest);
+ /* If the column value is an ephemeral string, go ahead and persist
+ ** that string in case the cursor moves before the column value is
+ ** used. The following code does the equivalent of Deephemeralize()
+ ** but does it faster. */
+ if( (pDest->flags & MEM_Ephem)!=0 && pDest->z ){
+ fx = pDest->flags & (MEM_Str|MEM_Blob);
+ assert( fx!=0 );
+ zData = (const u8*)pDest->z;
+ len = pDest->n;
+ if( sqlite3VdbeMemClearAndResize(pDest, len+2) ) goto no_mem;
+ memcpy(pDest->z, zData, len);
+ pDest->z[len] = 0;
+ pDest->z[len+1] = 0;
+ pDest->flags = fx|MEM_Term;
+ }
op_column_error:
UPDATE_MAX_BLOBSIZE(pDest);
REGISTER_TRACE(pOp->p3, pDest);
@@ -70631,7 +72746,7 @@ case OP_MakeRecord: {
** ------------------------------------------------------------------------
**
** Data(0) is taken from register P1. Data(1) comes from register P1+1
- ** and so froth.
+ ** and so forth.
**
** Each type field is a varint representing the serial type of the
** corresponding data element (see sqlite3VdbeSerialType()). The
@@ -70671,7 +72786,7 @@ case OP_MakeRecord: {
pRec = pLast;
do{
assert( memIsValid(pRec) );
- serial_type = sqlite3VdbeSerialType(pRec, file_format);
+ pRec->uTemp = serial_type = sqlite3VdbeSerialType(pRec, file_format);
len = sqlite3VdbeSerialTypeLen(serial_type);
if( pRec->flags & MEM_Zero ){
if( nData ){
@@ -70687,7 +72802,10 @@ case OP_MakeRecord: {
nHdr += serial_type<=127 ? 1 : sqlite3VarintLen(serial_type);
}while( (--pRec)>=pData0 );
- /* Add the initial header varint and total the size */
+ /* EVIDENCE-OF: R-22564-11647 The header begins with a single varint
+ ** which determines the total number of bytes in the header. The varint
+ ** value is the size of the header in bytes including the size varint
+ ** itself. */
testcase( nHdr==126 );
testcase( nHdr==127 );
if( nHdr<=126 ){
@@ -70707,9 +72825,9 @@ case OP_MakeRecord: {
/* Make sure the output register has a buffer large enough to store
** the new record. The output register (pOp->p3) is not allowed to
** be one of the input registers (because the following call to
- ** sqlite3VdbeMemGrow() could clobber the value before it is used).
+ ** sqlite3VdbeMemClearAndResize() could clobber the value before it is used).
*/
- if( sqlite3VdbeMemGrow(pOut, (int)nByte, 0) ){
+ if( sqlite3VdbeMemClearAndResize(pOut, (int)nByte) ){
goto no_mem;
}
zNewRecord = (u8 *)pOut->z;
@@ -70720,8 +72838,12 @@ case OP_MakeRecord: {
assert( pData0<=pLast );
pRec = pData0;
do{
- serial_type = sqlite3VdbeSerialType(pRec, file_format);
+ serial_type = pRec->uTemp;
+ /* EVIDENCE-OF: R-06529-47362 Following the size varint are one or more
+ ** additional varints, one per column. */
i += putVarint32(&zNewRecord[i], serial_type); /* serial type */
+ /* EVIDENCE-OF: R-64536-51728 The values for each column in the record
+ ** immediately follow the header. */
j += sqlite3VdbeSerialPut(&zNewRecord[j], pRec, serial_type); /* content */
}while( (++pRec)<=pLast );
assert( i==nHdr );
@@ -70730,7 +72852,6 @@ case OP_MakeRecord: {
assert( pOp->p3>0 && pOp->p3<=(p->nMem-p->nCursor) );
pOut->n = (int)nByte;
pOut->flags = MEM_Blob;
- pOut->xDel = 0;
if( nZero ){
pOut->u.nZero = nZero;
pOut->flags |= MEM_Zero;
@@ -70877,11 +72998,18 @@ case OP_Savepoint: {
db->isTransactionSavepoint = 0;
rc = p->rc;
}else{
+ int isSchemaChange;
iSavepoint = db->nSavepoint - iSavepoint - 1;
if( p1==SAVEPOINT_ROLLBACK ){
+ isSchemaChange = (db->flags & SQLITE_InternChanges)!=0;
for(ii=0; ii<db->nDb; ii++){
- sqlite3BtreeTripAllCursors(db->aDb[ii].pBt, SQLITE_ABORT);
+ rc = sqlite3BtreeTripAllCursors(db->aDb[ii].pBt,
+ SQLITE_ABORT_ROLLBACK,
+ isSchemaChange==0);
+ if( rc!=SQLITE_OK ) goto abort_due_to_error;
}
+ }else{
+ isSchemaChange = 0;
}
for(ii=0; ii<db->nDb; ii++){
rc = sqlite3BtreeSavepoint(db->aDb[ii].pBt, p1, iSavepoint);
@@ -70889,7 +73017,7 @@ case OP_Savepoint: {
goto abort_due_to_error;
}
}
- if( p1==SAVEPOINT_ROLLBACK && (db->flags&SQLITE_InternChanges)!=0 ){
+ if( isSchemaChange ){
sqlite3ExpirePreparedStatements(db);
sqlite3ResetAllSchemasOfConnection(db);
db->flags = (db->flags | SQLITE_InternChanges);
@@ -71286,7 +73414,7 @@ case OP_OpenWrite: {
|| p->readOnly==0 );
if( p->expired ){
- rc = SQLITE_ABORT;
+ rc = SQLITE_ABORT_ROLLBACK;
break;
}
@@ -71346,10 +73474,6 @@ case OP_OpenWrite: {
assert( OPFLAG_BULKCSR==BTREE_BULKLOAD );
sqlite3BtreeCursorHints(pCur->pCursor, (pOp->p5 & OPFLAG_BULKCSR));
- /* Since it performs no memory allocation or IO, the only value that
- ** sqlite3BtreeCursor() may return is SQLITE_OK. */
- assert( rc==SQLITE_OK );
-
/* Set the VdbeCursor.isTable variable. Previous versions of
** SQLite used to check if the root-page flags were sane at this point
** and report database corruption if they were not, but this check has
@@ -71433,11 +73557,15 @@ case OP_OpenEphemeral: {
break;
}
-/* Opcode: SorterOpen P1 P2 * P4 *
+/* Opcode: SorterOpen P1 P2 P3 P4 *
**
** This opcode works like OP_OpenEphemeral except that it opens
** a transient index that is specifically designed to sort large
** tables using an external merge-sort algorithm.
+**
+** If argument P3 is non-zero, then it indicates that the sorter may
+** assume that a stable sort considering the first P3 fields of each
+** key is sufficient to produce the required results.
*/
case OP_SorterOpen: {
VdbeCursor *pCx;
@@ -71449,7 +73577,25 @@ case OP_SorterOpen: {
pCx->pKeyInfo = pOp->p4.pKeyInfo;
assert( pCx->pKeyInfo->db==db );
assert( pCx->pKeyInfo->enc==ENC(db) );
- rc = sqlite3VdbeSorterInit(db, pCx);
+ rc = sqlite3VdbeSorterInit(db, pOp->p3, pCx);
+ break;
+}
+
+/* Opcode: SequenceTest P1 P2 * * *
+** Synopsis: if( cursor[P1].ctr++ ) pc = P2
+**
+** P1 is a sorter cursor. If the sequence counter is currently zero, jump
+** to P2. Regardless of whether or not the jump is taken, increment the
+** the sequence value.
+*/
+case OP_SequenceTest: {
+ VdbeCursor *pC;
+ assert( pOp->p1>=0 && pOp->p1<p->nCursor );
+ pC = p->apCsr[pOp->p1];
+ assert( pC->pSorter );
+ if( (pC->seqCount++)==0 ){
+ pc = pOp->p2 - 1;
+ }
break;
}
@@ -71596,11 +73742,12 @@ case OP_SeekGT: { /* jump, in3 */
if( pC->isTable ){
/* The input value in P3 might be of any type: integer, real, string,
** blob, or NULL. But it needs to be an integer before we can do
- ** the seek, so covert it. */
+ ** the seek, so convert it. */
pIn3 = &aMem[pOp->p3];
- ApplyNumericAffinity(pIn3);
+ if( (pIn3->flags & (MEM_Int|MEM_Real|MEM_Str))==MEM_Str ){
+ applyNumericAffinity(pIn3, 0);
+ }
iKey = sqlite3VdbeIntValue(pIn3);
- pC->rowidIsValid = 0;
/* If the P3 value could not be converted into an integer without
** loss of information, then special processing is required... */
@@ -71619,7 +73766,7 @@ case OP_SeekGT: { /* jump, in3 */
** (x > 4.9) -> (x >= 5)
** (x <= 4.9) -> (x < 5)
*/
- if( pIn3->r<(double)iKey ){
+ if( pIn3->u.r<(double)iKey ){
assert( OP_SeekGE==(OP_SeekGT-1) );
assert( OP_SeekLT==(OP_SeekLE-1) );
assert( (OP_SeekLE & 0x0001)==(OP_SeekGT & 0x0001) );
@@ -71628,7 +73775,7 @@ case OP_SeekGT: { /* jump, in3 */
/* If the approximation iKey is smaller than the actual real search
** term, substitute <= for < and > for >=. */
- else if( pIn3->r>(double)iKey ){
+ else if( pIn3->u.r>(double)iKey ){
assert( OP_SeekLE==(OP_SeekLT+1) );
assert( OP_SeekGT==(OP_SeekGE+1) );
assert( (OP_SeekLT & 0x0001)==(OP_SeekGE & 0x0001) );
@@ -71636,13 +73783,10 @@ case OP_SeekGT: { /* jump, in3 */
}
}
rc = sqlite3BtreeMovetoUnpacked(pC->pCursor, 0, (u64)iKey, 0, &res);
+ pC->movetoTarget = iKey; /* Used by OP_Delete */
if( rc!=SQLITE_OK ){
goto abort_due_to_error;
}
- if( res==0 ){
- pC->rowidIsValid = 1;
- pC->lastRowid = iKey;
- }
}else{
nField = pOp->p4.i;
assert( pOp->p4type==P4_INT32 );
@@ -71672,7 +73816,6 @@ case OP_SeekGT: { /* jump, in3 */
if( rc!=SQLITE_OK ){
goto abort_due_to_error;
}
- pC->rowidIsValid = 0;
}
pC->deferredMoveto = 0;
pC->cacheStatus = CACHE_STALE;
@@ -71684,7 +73827,6 @@ case OP_SeekGT: { /* jump, in3 */
res = 0;
rc = sqlite3BtreeNext(pC->pCursor, &res);
if( rc!=SQLITE_OK ) goto abort_due_to_error;
- pC->rowidIsValid = 0;
}else{
res = 0;
}
@@ -71694,7 +73836,6 @@ case OP_SeekGT: { /* jump, in3 */
res = 0;
rc = sqlite3BtreePrevious(pC->pCursor, &res);
if( rc!=SQLITE_OK ) goto abort_due_to_error;
- pC->rowidIsValid = 0;
}else{
/* res might be negative because the table is empty. Check to
** see if this is the case.
@@ -71731,7 +73872,6 @@ case OP_Seek: { /* in2 */
pC->nullRow = 0;
pIn2 = &aMem[pOp->p2];
pC->movetoTarget = sqlite3VdbeIntValue(pIn2);
- pC->rowidIsValid = 0;
pC->deferredMoveto = 1;
break;
}
@@ -71838,10 +73978,10 @@ case OP_Found: { /* jump, in3 */
}else{
pIdxKey = sqlite3VdbeAllocUnpackedRecord(
pC->pKeyInfo, aTempRec, sizeof(aTempRec), &pFree
- );
+ );
if( pIdxKey==0 ) goto no_mem;
assert( pIn3->flags & MEM_Blob );
- assert( (pIn3->flags & MEM_Zero)==0 ); /* zeroblobs already expanded */
+ ExpandBlob(pIn3);
sqlite3VdbeRecordUnpack(pC->pKeyInfo, pIn3->n, pIn3->z, pIdxKey);
}
pIdxKey->default_rc = 0;
@@ -71849,8 +73989,8 @@ case OP_Found: { /* jump, in3 */
/* For the OP_NoConflict opcode, take the jump if any of the
** input fields are NULL, since any key with a NULL will not
** conflict */
- for(ii=0; ii<r.nField; ii++){
- if( r.aMem[ii].flags & MEM_Null ){
+ for(ii=0; ii<pIdxKey->nField; ii++){
+ if( pIdxKey->aMem[ii].flags & MEM_Null ){
pc = pOp->p2 - 1; VdbeBranchTaken(1,2);
break;
}
@@ -71917,15 +74057,13 @@ case OP_NotExists: { /* jump, in3 */
res = 0;
iKey = pIn3->u.i;
rc = sqlite3BtreeMovetoUnpacked(pCrsr, 0, iKey, 0, &res);
- pC->lastRowid = pIn3->u.i;
- pC->rowidIsValid = res==0 ?1:0;
+ pC->movetoTarget = iKey; /* Used by OP_Delete */
pC->nullRow = 0;
pC->cacheStatus = CACHE_STALE;
pC->deferredMoveto = 0;
VdbeBranchTaken(res!=0,2);
if( res!=0 ){
pc = pOp->p2 - 1;
- assert( pC->rowidIsValid==0 );
}
pC->seekResult = res;
break;
@@ -72059,32 +74197,20 @@ case OP_NewRowid: { /* out2-prerelease */
** it finds one that is not previously used. */
assert( pOp->p3==0 ); /* We cannot be in random rowid mode if this is
** an AUTOINCREMENT table. */
- /* on the first attempt, simply do one more than previous */
- v = lastRowid;
- v &= (MAX_ROWID>>1); /* ensure doesn't go negative */
- v++; /* ensure non-zero */
cnt = 0;
- while( ((rc = sqlite3BtreeMovetoUnpacked(pC->pCursor, 0, (u64)v,
+ do{
+ sqlite3_randomness(sizeof(v), &v);
+ v &= (MAX_ROWID>>1); v++; /* Ensure that v is greater than zero */
+ }while( ((rc = sqlite3BtreeMovetoUnpacked(pC->pCursor, 0, (u64)v,
0, &res))==SQLITE_OK)
&& (res==0)
- && (++cnt<100)){
- /* collision - try another random rowid */
- sqlite3_randomness(sizeof(v), &v);
- if( cnt<5 ){
- /* try "small" random rowids for the initial attempts */
- v &= 0xffffff;
- }else{
- v &= (MAX_ROWID>>1); /* ensure doesn't go negative */
- }
- v++; /* ensure non-zero */
- }
+ && (++cnt<100));
if( rc==SQLITE_OK && res==0 ){
rc = SQLITE_FULL; /* IMP: R-38219-53002 */
goto abort_due_to_error;
}
assert( v>0 ); /* EV: R-40812-03570 */
}
- pC->rowidIsValid = 0;
pC->deferredMoveto = 0;
pC->cacheStatus = CACHE_STALE;
}
@@ -72189,7 +74315,6 @@ case OP_InsertInt: {
pData->z, pData->n, nZero,
(pOp->p5 & OPFLAG_APPEND)!=0, seekResult
);
- pC->rowidIsValid = 0;
pC->deferredMoveto = 0;
pC->cacheStatus = CACHE_STALE;
@@ -72226,33 +74351,32 @@ case OP_InsertInt: {
** using OP_NotFound prior to invoking this opcode.
*/
case OP_Delete: {
- i64 iKey;
VdbeCursor *pC;
assert( pOp->p1>=0 && pOp->p1<p->nCursor );
pC = p->apCsr[pOp->p1];
assert( pC!=0 );
assert( pC->pCursor!=0 ); /* Only valid for real tables, no pseudotables */
- iKey = pC->lastRowid; /* Only used for the update hook */
-
- /* The OP_Delete opcode always follows an OP_NotExists or OP_Last or
- ** OP_Column on the same table without any intervening operations that
- ** might move or invalidate the cursor. Hence cursor pC is always pointing
- ** to the row to be deleted and the sqlite3VdbeCursorMoveto() operation
- ** below is always a no-op and cannot fail. We will run it anyhow, though,
- ** to guard against future changes to the code generator.
- **/
assert( pC->deferredMoveto==0 );
- rc = sqlite3VdbeCursorMoveto(pC);
- if( NEVER(rc!=SQLITE_OK) ) goto abort_due_to_error;
+#ifdef SQLITE_DEBUG
+ /* The seek operation that positioned the cursor prior to OP_Delete will
+ ** have also set the pC->movetoTarget field to the rowid of the row that
+ ** is being deleted */
+ if( pOp->p4.z && pC->isTable ){
+ i64 iKey = 0;
+ sqlite3BtreeKeySize(pC->pCursor, &iKey);
+ assert( pC->movetoTarget==iKey );
+ }
+#endif
+
rc = sqlite3BtreeDelete(pC->pCursor);
pC->cacheStatus = CACHE_STALE;
/* Invoke the update-hook if required. */
if( rc==SQLITE_OK && db->xUpdateCallback && pOp->p4.z && pC->isTable ){
db->xUpdateCallback(db->pUpdateArg, SQLITE_DELETE,
- db->aDb[pC->iDb].zName, pOp->p4.z, iKey);
+ db->aDb[pC->iDb].zName, pOp->p4.z, pC->movetoTarget);
assert( pC->iDb>=0 );
}
if( pOp->p2 & OPFLAG_NCHANGE ) p->nChange++;
@@ -72296,6 +74420,7 @@ case OP_SorterCompare: {
assert( pOp->p4type==P4_INT32 );
pIn3 = &aMem[pOp->p3];
nKeyCol = pOp->p4.i;
+ res = 0;
rc = sqlite3VdbeSorterCompare(pC, pIn3, nKeyCol, &res);
VdbeBranchTaken(res!=0,2);
if( res ){
@@ -72304,10 +74429,17 @@ case OP_SorterCompare: {
break;
};
-/* Opcode: SorterData P1 P2 * * *
+/* Opcode: SorterData P1 P2 P3 * *
** Synopsis: r[P2]=data
**
** Write into register P2 the current sorter data for sorter cursor P1.
+** Then clear the column header cache on cursor P3.
+**
+** This opcode is normally use to move a record out of the sorter and into
+** a register that is the source for a pseudo-table cursor created using
+** OpenPseudo. That pseudo-table cursor is the one that is identified by
+** parameter P3. Clearing the P3 column cache as part of this opcode saves
+** us from having to issue a separate NullRow instruction to clear that cache.
*/
case OP_SorterData: {
VdbeCursor *pC;
@@ -72317,6 +74449,8 @@ case OP_SorterData: {
assert( isSorter(pC) );
rc = sqlite3VdbeSorterRowkey(pC, pOut);
assert( rc!=SQLITE_OK || (pOut->flags & MEM_Blob) );
+ assert( pOp->p1>=0 && pOp->p1<p->nCursor );
+ p->apCsr[pOp->p3]->cacheStatus = CACHE_STALE;
break;
}
@@ -72363,16 +74497,20 @@ case OP_RowData: {
assert( pC->pseudoTableReg==0 );
assert( pC->pCursor!=0 );
pCrsr = pC->pCursor;
- assert( sqlite3BtreeCursorIsValid(pCrsr) );
/* The OP_RowKey and OP_RowData opcodes always follow OP_NotExists or
** OP_Rewind/Op_Next with no intervening instructions that might invalidate
- ** the cursor. Hence the following sqlite3VdbeCursorMoveto() call is always
- ** a no-op and can never fail. But we leave it in place as a safety.
+ ** the cursor. If this where not the case, on of the following assert()s
+ ** would fail. Should this ever change (because of changes in the code
+ ** generator) then the fix would be to insert a call to
+ ** sqlite3VdbeCursorMoveto().
*/
assert( pC->deferredMoveto==0 );
+ assert( sqlite3BtreeCursorIsValid(pCrsr) );
+#if 0 /* Not required due to the previous to assert() statements */
rc = sqlite3VdbeCursorMoveto(pC);
- if( NEVER(rc!=SQLITE_OK) ) goto abort_due_to_error;
+ if( rc!=SQLITE_OK ) goto abort_due_to_error;
+#endif
if( pC->isTable==0 ){
assert( !pC->isTable );
@@ -72389,7 +74527,8 @@ case OP_RowData: {
goto too_big;
}
}
- if( sqlite3VdbeMemGrow(pOut, n, 0) ){
+ testcase( n==0 );
+ if( sqlite3VdbeMemClearAndResize(pOut, MAX(n,32)) ){
goto no_mem;
}
pOut->n = n;
@@ -72440,14 +74579,14 @@ case OP_Rowid: { /* out2-prerelease */
#endif /* SQLITE_OMIT_VIRTUALTABLE */
}else{
assert( pC->pCursor!=0 );
- rc = sqlite3VdbeCursorMoveto(pC);
+ rc = sqlite3VdbeCursorRestore(pC);
if( rc ) goto abort_due_to_error;
- if( pC->rowidIsValid ){
- v = pC->lastRowid;
- }else{
- rc = sqlite3BtreeKeySize(pC->pCursor, &v);
- assert( rc==SQLITE_OK ); /* Always so because of CursorMoveto() above */
+ if( pC->nullRow ){
+ pOut->flags = MEM_Null;
+ break;
}
+ rc = sqlite3BtreeKeySize(pC->pCursor, &v);
+ assert( rc==SQLITE_OK ); /* Always so because of CursorRestore() above */
}
pOut->u.i = v;
break;
@@ -72466,7 +74605,6 @@ case OP_NullRow: {
pC = p->apCsr[pOp->p1];
assert( pC!=0 );
pC->nullRow = 1;
- pC->rowidIsValid = 0;
pC->cacheStatus = CACHE_STALE;
if( pC->pCursor ){
sqlite3BtreeClearCursor(pC->pCursor);
@@ -72500,7 +74638,6 @@ case OP_Last: { /* jump */
rc = sqlite3BtreeLast(pCrsr, &res);
pC->nullRow = (u8)res;
pC->deferredMoveto = 0;
- pC->rowidIsValid = 0;
pC->cacheStatus = CACHE_STALE;
#ifdef SQLITE_DEBUG
pC->seekOp = OP_Last;
@@ -72538,9 +74675,9 @@ case OP_Sort: { /* jump */
**
** The next use of the Rowid or Column or Next instruction for P1
** will refer to the first entry in the database table or index.
-** If the table or index is empty and P2>0, then jump immediately to P2.
-** If P2 is 0 or if the table or index is not empty, fall through
-** to the following instruction.
+** If the table or index is empty, jump immediately to P2.
+** If the table or index is not empty, fall through to the following
+** instruction.
**
** This opcode leaves the cursor configured to move in forward order,
** from the beginning toward the end. In other words, the cursor is
@@ -72560,14 +74697,13 @@ case OP_Rewind: { /* jump */
pC->seekOp = OP_Rewind;
#endif
if( isSorter(pC) ){
- rc = sqlite3VdbeSorterRewind(db, pC, &res);
+ rc = sqlite3VdbeSorterRewind(pC, &res);
}else{
pCrsr = pC->pCursor;
assert( pCrsr );
rc = sqlite3BtreeFirst(pCrsr, &res);
pC->deferredMoveto = 0;
pC->cacheStatus = CACHE_STALE;
- pC->rowidIsValid = 0;
}
pC->nullRow = (u8)res;
assert( pOp->p2>0 && pOp->p2<p->nOp );
@@ -72693,7 +74829,6 @@ next_tail:
}else{
pC->nullRow = 1;
}
- pC->rowidIsValid = 0;
goto check_for_interrupt;
}
@@ -72738,7 +74873,7 @@ case OP_IdxInsert: { /* in2 */
rc = ExpandBlob(pIn2);
if( rc==SQLITE_OK ){
if( isSorter(pC) ){
- rc = sqlite3VdbeSorterWrite(db, pC, pIn2);
+ rc = sqlite3VdbeSorterWrite(pC, pIn2);
}else{
nKey = pIn2->n;
zKey = pIn2->z;
@@ -72809,10 +74944,16 @@ case OP_IdxRowid: { /* out2-prerelease */
pCrsr = pC->pCursor;
assert( pCrsr!=0 );
pOut->flags = MEM_Null;
- rc = sqlite3VdbeCursorMoveto(pC);
- if( NEVER(rc) ) goto abort_due_to_error;
- assert( pC->deferredMoveto==0 );
assert( pC->isTable==0 );
+ assert( pC->deferredMoveto==0 );
+
+ /* sqlite3VbeCursorRestore() can only fail if the record has been deleted
+ ** out from under the cursor. That will never happend for an IdxRowid
+ ** opcode, hence the NEVER() arround the check of the return value.
+ */
+ rc = sqlite3VdbeCursorRestore(pC);
+ if( NEVER(rc!=SQLITE_OK) ) goto abort_due_to_error;
+
if( !pC->nullRow ){
rowid = 0; /* Not needed. Only used to silence a warning. */
rc = sqlite3VdbeIdxRowid(db, pCrsr, &rowid);
@@ -72899,7 +75040,7 @@ case OP_IdxGE: { /* jump */
{ int i; for(i=0; i<r.nField; i++) assert( memIsValid(&r.aMem[i]) ); }
#endif
res = 0; /* Not needed. Only used to silence a warning. */
- rc = sqlite3VdbeIdxKeyCompare(pC, &r, &res);
+ rc = sqlite3VdbeIdxKeyCompare(db, pC, &r, &res);
assert( (OP_IdxLE&1)==(OP_IdxLT&1) && (OP_IdxGE&1)==(OP_IdxGT&1) );
if( (pOp->opcode&1)==(OP_IdxLT&1) ){
assert( pOp->opcode==OP_IdxLE || pOp->opcode==OP_IdxLT );
@@ -73452,6 +75593,9 @@ case OP_Program: { /* jump */
pFrame->token = pProgram->token;
pFrame->aOnceFlag = p->aOnceFlag;
pFrame->nOnceFlag = p->nOnceFlag;
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ pFrame->anExec = p->anExec;
+#endif
pEnd = &VdbeFrameMem(pFrame)[pFrame->nChildMem];
for(pMem=VdbeFrameMem(pFrame); pMem!=pEnd; pMem++){
@@ -73469,6 +75613,7 @@ case OP_Program: { /* jump */
pFrame->pParent = p->pFrame;
pFrame->lastRowid = lastRowid;
pFrame->nChange = p->nChange;
+ pFrame->nDbChange = p->db->nChange;
p->nChange = 0;
p->pFrame = pFrame;
p->aMem = aMem = &VdbeFrameMem(pFrame)[-1];
@@ -73479,6 +75624,9 @@ case OP_Program: { /* jump */
p->nOp = pProgram->nOp;
p->aOnceFlag = (u8 *)&p->apCsr[p->nCursor];
p->nOnceFlag = pProgram->nOnce;
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ p->anExec = 0;
+#endif
pc = -1;
memset(p->aOnceFlag, 0, p->nOnceFlag);
@@ -73651,6 +75799,7 @@ case OP_AggStep: {
int i;
Mem *pMem;
Mem *pRec;
+ Mem t;
sqlite3_context ctx;
sqlite3_value **apVal;
@@ -73668,23 +75817,15 @@ case OP_AggStep: {
assert( pOp->p3>0 && pOp->p3<=(p->nMem-p->nCursor) );
ctx.pMem = pMem = &aMem[pOp->p3];
pMem->n++;
- ctx.s.flags = MEM_Null;
- ctx.s.z = 0;
- ctx.s.zMalloc = 0;
- ctx.s.xDel = 0;
- ctx.s.db = db;
+ sqlite3VdbeMemInit(&t, db, MEM_Null);
+ ctx.pOut = &t;
ctx.isError = 0;
- ctx.pColl = 0;
+ ctx.pVdbe = p;
+ ctx.iOp = pc;
ctx.skipFlag = 0;
- if( ctx.pFunc->funcFlags & SQLITE_FUNC_NEEDCOLL ){
- assert( pOp>p->aOp );
- assert( pOp[-1].p4type==P4_COLLSEQ );
- assert( pOp[-1].opcode==OP_CollSeq );
- ctx.pColl = pOp[-1].p4.pColl;
- }
(ctx.pFunc->xStep)(&ctx, n, apVal); /* IMP: R-24505-23230 */
if( ctx.isError ){
- sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3_value_text(&ctx.s));
+ sqlite3SetString(&p->zErrMsg, db, "%s", sqlite3_value_text(&t));
rc = ctx.isError;
}
if( ctx.skipFlag ){
@@ -73692,9 +75833,7 @@ case OP_AggStep: {
i = pOp[-1].p1;
if( i ) sqlite3VdbeMemSetInt64(&aMem[i], 1);
}
-
- sqlite3VdbeMemRelease(&ctx.s);
-
+ sqlite3VdbeMemRelease(&t);
break;
}
@@ -73732,8 +75871,8 @@ case OP_AggFinal: {
/* Opcode: Checkpoint P1 P2 P3 * *
**
** Checkpoint database P1. This is a no-op if P1 is not currently in
-** WAL mode. Parameter P2 is one of SQLITE_CHECKPOINT_PASSIVE, FULL
-** or RESTART. Write 1 or 0 into mem[P3] if the checkpoint returns
+** WAL mode. Parameter P2 is one of SQLITE_CHECKPOINT_PASSIVE, FULL,
+** RESTART, or TRUNCATE. Write 1 or 0 into mem[P3] if the checkpoint returns
** SQLITE_BUSY or not, respectively. Write the number of pages in the
** WAL after the checkpoint into mem[P3+1] and the number of pages
** in the WAL that have been checkpointed after the checkpoint
@@ -73751,6 +75890,7 @@ case OP_Checkpoint: {
assert( pOp->p2==SQLITE_CHECKPOINT_PASSIVE
|| pOp->p2==SQLITE_CHECKPOINT_FULL
|| pOp->p2==SQLITE_CHECKPOINT_RESTART
+ || pOp->p2==SQLITE_CHECKPOINT_TRUNCATE
);
rc = sqlite3Checkpoint(db, pOp->p1, pOp->p2, &aRes[1], &aRes[2]);
if( rc==SQLITE_BUSY ){
@@ -74144,27 +76284,14 @@ case OP_VColumn: {
pModule = pVtab->pModule;
assert( pModule->xColumn );
memset(&sContext, 0, sizeof(sContext));
-
- /* The output cell may already have a buffer allocated. Move
- ** the current contents to sContext.s so in case the user-function
- ** can use the already allocated buffer instead of allocating a
- ** new one.
- */
- sqlite3VdbeMemMove(&sContext.s, pDest);
- MemSetTypeFlag(&sContext.s, MEM_Null);
-
+ sContext.pOut = pDest;
+ MemSetTypeFlag(pDest, MEM_Null);
rc = pModule->xColumn(pCur->pVtabCursor, &sContext, pOp->p2);
sqlite3VtabImportErrmsg(p, pVtab);
if( sContext.isError ){
rc = sContext.isError;
}
-
- /* Copy the result of the function to the P3 register. We
- ** do this regardless of whether or not an error occurred to ensure any
- ** dynamic allocation in sContext.s (a Mem struct) is released.
- */
- sqlite3VdbeChangeEncoding(&sContext.s, encoding);
- sqlite3VdbeMemMove(pDest, &sContext.s);
+ sqlite3VdbeChangeEncoding(pDest, encoding);
REGISTER_TRACE(pOp->p3, pDest);
UPDATE_MAX_BLOBSIZE(pDest);
@@ -74689,6 +76816,11 @@ SQLITE_API int sqlite3_blob_open(
Parse *pParse = 0;
Incrblob *pBlob = 0;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || ppBlob==0 || zTable==0 ){
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
flags = !!flags; /* flags = (flags ? 1 : 0); */
*ppBlob = 0;
@@ -74854,7 +76986,7 @@ blob_open_out:
if( pBlob && pBlob->pStmt ) sqlite3VdbeFinalize((Vdbe *)pBlob->pStmt);
sqlite3DbFree(db, pBlob);
}
- sqlite3Error(db, rc, (zErr ? "%s" : 0), zErr);
+ sqlite3ErrorWithMsg(db, rc, (zErr ? "%s" : 0), zErr);
sqlite3DbFree(db, zErr);
sqlite3ParserReset(pParse);
sqlite3StackFree(db, pParse);
@@ -74907,7 +77039,6 @@ static int blobReadWrite(
if( n<0 || iOffset<0 || (iOffset+n)>p->nByte ){
/* Request is out of range. Return a transient error. */
rc = SQLITE_ERROR;
- sqlite3Error(db, SQLITE_ERROR, 0);
}else if( v==0 ){
/* If there is no statement handle, then the blob-handle has
** already been invalidated. Return SQLITE_ABORT in this case.
@@ -74925,10 +77056,10 @@ static int blobReadWrite(
sqlite3VdbeFinalize(v);
p->pStmt = 0;
}else{
- db->errCode = rc;
v->rc = rc;
}
}
+ sqlite3Error(db, rc);
rc = sqlite3ApiExit(db, rc);
sqlite3_mutex_leave(db->mutex);
return rc;
@@ -74987,7 +77118,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
char *zErr;
rc = blobSeekToRow(p, iRow, &zErr);
if( rc!=SQLITE_OK ){
- sqlite3Error(db, rc, (zErr ? "%s" : 0), zErr);
+ sqlite3ErrorWithMsg(db, rc, (zErr ? "%s" : 0), zErr);
sqlite3DbFree(db, zErr);
}
assert( rc!=SQLITE_SCHEMA );
@@ -75004,7 +77135,7 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
/************** End of vdbeblob.c ********************************************/
/************** Begin file vdbesort.c ****************************************/
/*
-** 2011 July 9
+** 2011-07-09
**
** The author disclaims copyright to this source code. In place of
** a legal notice, here is a blessing:
@@ -75015,42 +77146,203 @@ SQLITE_API int sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
**
*************************************************************************
** This file contains code for the VdbeSorter object, used in concert with
-** a VdbeCursor to sort large numbers of keys (as may be required, for
-** example, by CREATE INDEX statements on tables too large to fit in main
-** memory).
+** a VdbeCursor to sort large numbers of keys for CREATE INDEX statements
+** or by SELECT statements with ORDER BY clauses that cannot be satisfied
+** using indexes and without LIMIT clauses.
+**
+** The VdbeSorter object implements a multi-threaded external merge sort
+** algorithm that is efficient even if the number of elements being sorted
+** exceeds the available memory.
+**
+** Here is the (internal, non-API) interface between this module and the
+** rest of the SQLite system:
+**
+** sqlite3VdbeSorterInit() Create a new VdbeSorter object.
+**
+** sqlite3VdbeSorterWrite() Add a single new row to the VdbeSorter
+** object. The row is a binary blob in the
+** OP_MakeRecord format that contains both
+** the ORDER BY key columns and result columns
+** in the case of a SELECT w/ ORDER BY, or
+** the complete record for an index entry
+** in the case of a CREATE INDEX.
+**
+** sqlite3VdbeSorterRewind() Sort all content previously added.
+** Position the read cursor on the
+** first sorted element.
+**
+** sqlite3VdbeSorterNext() Advance the read cursor to the next sorted
+** element.
+**
+** sqlite3VdbeSorterRowkey() Return the complete binary blob for the
+** row currently under the read cursor.
+**
+** sqlite3VdbeSorterCompare() Compare the binary blob for the row
+** currently under the read cursor against
+** another binary blob X and report if
+** X is strictly less than the read cursor.
+** Used to enforce uniqueness in a
+** CREATE UNIQUE INDEX statement.
+**
+** sqlite3VdbeSorterClose() Close the VdbeSorter object and reclaim
+** all resources.
+**
+** sqlite3VdbeSorterReset() Refurbish the VdbeSorter for reuse. This
+** is like Close() followed by Init() only
+** much faster.
+**
+** The interfaces above must be called in a particular order. Write() can
+** only occur in between Init()/Reset() and Rewind(). Next(), Rowkey(), and
+** Compare() can only occur in between Rewind() and Close()/Reset(). i.e.
+**
+** Init()
+** for each record: Write()
+** Rewind()
+** Rowkey()/Compare()
+** Next()
+** Close()
+**
+** Algorithm:
+**
+** Records passed to the sorter via calls to Write() are initially held
+** unsorted in main memory. Assuming the amount of memory used never exceeds
+** a threshold, when Rewind() is called the set of records is sorted using
+** an in-memory merge sort. In this case, no temporary files are required
+** and subsequent calls to Rowkey(), Next() and Compare() read records
+** directly from main memory.
+**
+** If the amount of space used to store records in main memory exceeds the
+** threshold, then the set of records currently in memory are sorted and
+** written to a temporary file in "Packed Memory Array" (PMA) format.
+** A PMA created at this point is known as a "level-0 PMA". Higher levels
+** of PMAs may be created by merging existing PMAs together - for example
+** merging two or more level-0 PMAs together creates a level-1 PMA.
+**
+** The threshold for the amount of main memory to use before flushing
+** records to a PMA is roughly the same as the limit configured for the
+** page-cache of the main database. Specifically, the threshold is set to
+** the value returned by "PRAGMA main.page_size" multipled by
+** that returned by "PRAGMA main.cache_size", in bytes.
+**
+** If the sorter is running in single-threaded mode, then all PMAs generated
+** are appended to a single temporary file. Or, if the sorter is running in
+** multi-threaded mode then up to (N+1) temporary files may be opened, where
+** N is the configured number of worker threads. In this case, instead of
+** sorting the records and writing the PMA to a temporary file itself, the
+** calling thread usually launches a worker thread to do so. Except, if
+** there are already N worker threads running, the main thread does the work
+** itself.
+**
+** The sorter is running in multi-threaded mode if (a) the library was built
+** with pre-processor symbol SQLITE_MAX_WORKER_THREADS set to a value greater
+** than zero, and (b) worker threads have been enabled at runtime by calling
+** "PRAGMA threads=N" with some value of N greater than 0.
+**
+** When Rewind() is called, any data remaining in memory is flushed to a
+** final PMA. So at this point the data is stored in some number of sorted
+** PMAs within temporary files on disk.
+**
+** If there are fewer than SORTER_MAX_MERGE_COUNT PMAs in total and the
+** sorter is running in single-threaded mode, then these PMAs are merged
+** incrementally as keys are retreived from the sorter by the VDBE. The
+** MergeEngine object, described in further detail below, performs this
+** merge.
+**
+** Or, if running in multi-threaded mode, then a background thread is
+** launched to merge the existing PMAs. Once the background thread has
+** merged T bytes of data into a single sorted PMA, the main thread
+** begins reading keys from that PMA while the background thread proceeds
+** with merging the next T bytes of data. And so on.
+**
+** Parameter T is set to half the value of the memory threshold used
+** by Write() above to determine when to create a new PMA.
+**
+** If there are more than SORTER_MAX_MERGE_COUNT PMAs in total when
+** Rewind() is called, then a hierarchy of incremental-merges is used.
+** First, T bytes of data from the first SORTER_MAX_MERGE_COUNT PMAs on
+** disk are merged together. Then T bytes of data from the second set, and
+** so on, such that no operation ever merges more than SORTER_MAX_MERGE_COUNT
+** PMAs at a time. This done is to improve locality.
+**
+** If running in multi-threaded mode and there are more than
+** SORTER_MAX_MERGE_COUNT PMAs on disk when Rewind() is called, then more
+** than one background thread may be created. Specifically, there may be
+** one background thread for each temporary file on disk, and one background
+** thread to merge the output of each of the others to a single PMA for
+** the main thread to read from.
*/
+/*
+** If SQLITE_DEBUG_SORTER_THREADS is defined, this module outputs various
+** messages to stderr that may be helpful in understanding the performance
+** characteristics of the sorter in multi-threaded mode.
+*/
+#if 0
+# define SQLITE_DEBUG_SORTER_THREADS 1
+#endif
+
+/*
+** Hard-coded maximum amount of data to accumulate in memory before flushing
+** to a level 0 PMA. The purpose of this limit is to prevent various integer
+** overflows. 512MiB.
+*/
+#define SQLITE_MAX_PMASZ (1<<29)
+/*
+** Private objects used by the sorter
+*/
+typedef struct MergeEngine MergeEngine; /* Merge PMAs together */
+typedef struct PmaReader PmaReader; /* Incrementally read one PMA */
+typedef struct PmaWriter PmaWriter; /* Incrementally write one PMA */
+typedef struct SorterRecord SorterRecord; /* A record being sorted */
+typedef struct SortSubtask SortSubtask; /* A sub-task in the sort process */
+typedef struct SorterFile SorterFile; /* Temporary file object wrapper */
+typedef struct SorterList SorterList; /* In-memory list of records */
+typedef struct IncrMerger IncrMerger; /* Read & merge multiple PMAs */
-typedef struct VdbeSorterIter VdbeSorterIter;
-typedef struct SorterRecord SorterRecord;
-typedef struct FileWriter FileWriter;
+/*
+** A container for a temp file handle and the current amount of data
+** stored in the file.
+*/
+struct SorterFile {
+ sqlite3_file *pFd; /* File handle */
+ i64 iEof; /* Bytes of data stored in pFd */
+};
/*
-** NOTES ON DATA STRUCTURE USED FOR N-WAY MERGES:
+** An in-memory list of objects to be sorted.
**
-** As keys are added to the sorter, they are written to disk in a series
-** of sorted packed-memory-arrays (PMAs). The size of each PMA is roughly
-** the same as the cache-size allowed for temporary databases. In order
-** to allow the caller to extract keys from the sorter in sorted order,
-** all PMAs currently stored on disk must be merged together. This comment
-** describes the data structure used to do so. The structure supports
-** merging any number of arrays in a single pass with no redundant comparison
-** operations.
+** If aMemory==0 then each object is allocated separately and the objects
+** are connected using SorterRecord.u.pNext. If aMemory!=0 then all objects
+** are stored in the aMemory[] bulk memory, one right after the other, and
+** are connected using SorterRecord.u.iNext.
+*/
+struct SorterList {
+ SorterRecord *pList; /* Linked list of records */
+ u8 *aMemory; /* If non-NULL, bulk memory to hold pList */
+ int szPMA; /* Size of pList as PMA in bytes */
+};
+
+/*
+** The MergeEngine object is used to combine two or more smaller PMAs into
+** one big PMA using a merge operation. Separate PMAs all need to be
+** combined into one big PMA in order to be able to step through the sorted
+** records in order.
**
-** The aIter[] array contains an iterator for each of the PMAs being merged.
-** An aIter[] iterator either points to a valid key or else is at EOF. For
-** the purposes of the paragraphs below, we assume that the array is actually
-** N elements in size, where N is the smallest power of 2 greater to or equal
-** to the number of iterators being merged. The extra aIter[] elements are
-** treated as if they are empty (always at EOF).
+** The aReadr[] array contains a PmaReader object for each of the PMAs being
+** merged. An aReadr[] object either points to a valid key or else is at EOF.
+** ("EOF" means "End Of File". When aReadr[] is at EOF there is no more data.)
+** For the purposes of the paragraphs below, we assume that the array is
+** actually N elements in size, where N is the smallest power of 2 greater
+** to or equal to the number of PMAs being merged. The extra aReadr[] elements
+** are treated as if they are empty (always at EOF).
**
** The aTree[] array is also N elements in size. The value of N is stored in
-** the VdbeSorter.nTree variable.
+** the MergeEngine.nTree variable.
**
** The final (N/2) elements of aTree[] contain the results of comparing
-** pairs of iterator keys together. Element i contains the result of
-** comparing aIter[2*i-N] and aIter[2*i-N+1]. Whichever key is smaller, the
+** pairs of PMA keys together. Element i contains the result of
+** comparing aReadr[2*i-N] and aReadr[2*i-N+1]. Whichever key is smaller, the
** aTree element is set to the index of it.
**
** For the purposes of this comparison, EOF is considered greater than any
@@ -75058,34 +77350,34 @@ typedef struct FileWriter FileWriter;
** values), it doesn't matter which index is stored.
**
** The (N/4) elements of aTree[] that precede the final (N/2) described
-** above contains the index of the smallest of each block of 4 iterators.
-** And so on. So that aTree[1] contains the index of the iterator that
+** above contains the index of the smallest of each block of 4 PmaReaders
+** And so on. So that aTree[1] contains the index of the PmaReader that
** currently points to the smallest key value. aTree[0] is unused.
**
** Example:
**
-** aIter[0] -> Banana
-** aIter[1] -> Feijoa
-** aIter[2] -> Elderberry
-** aIter[3] -> Currant
-** aIter[4] -> Grapefruit
-** aIter[5] -> Apple
-** aIter[6] -> Durian
-** aIter[7] -> EOF
+** aReadr[0] -> Banana
+** aReadr[1] -> Feijoa
+** aReadr[2] -> Elderberry
+** aReadr[3] -> Currant
+** aReadr[4] -> Grapefruit
+** aReadr[5] -> Apple
+** aReadr[6] -> Durian
+** aReadr[7] -> EOF
**
** aTree[] = { X, 5 0, 5 0, 3, 5, 6 }
**
** The current element is "Apple" (the value of the key indicated by
-** iterator 5). When the Next() operation is invoked, iterator 5 will
+** PmaReader 5). When the Next() operation is invoked, PmaReader 5 will
** be advanced to the next key in its segment. Say the next key is
** "Eggplant":
**
-** aIter[5] -> Eggplant
+** aReadr[5] -> Eggplant
**
-** The contents of aTree[] are updated first by comparing the new iterator
-** 5 key to the current key of iterator 4 (still "Grapefruit"). The iterator
+** The contents of aTree[] are updated first by comparing the new PmaReader
+** 5 key to the current key of PmaReader 4 (still "Grapefruit"). The PmaReader
** 5 value is still smaller, so aTree[6] is set to 5. And so on up the tree.
-** The value of iterator 6 - "Durian" - is now smaller than that of iterator
+** The value of PmaReader 6 - "Durian" - is now smaller than that of PmaReader
** 5, so aTree[3] is set to 6. Key 0 is smaller than key 6 (Banana<Durian),
** so the value written into element 1 of the array is 0. As follows:
**
@@ -75095,97 +77387,243 @@ typedef struct FileWriter FileWriter;
** key comparison operations are required, where N is the number of segments
** being merged (rounded up to the next power of 2).
*/
+struct MergeEngine {
+ int nTree; /* Used size of aTree/aReadr (power of 2) */
+ SortSubtask *pTask; /* Used by this thread only */
+ int *aTree; /* Current state of incremental merge */
+ PmaReader *aReadr; /* Array of PmaReaders to merge data from */
+};
+
+/*
+** This object represents a single thread of control in a sort operation.
+** Exactly VdbeSorter.nTask instances of this object are allocated
+** as part of each VdbeSorter object. Instances are never allocated any
+** other way. VdbeSorter.nTask is set to the number of worker threads allowed
+** (see SQLITE_CONFIG_WORKER_THREADS) plus one (the main thread). Thus for
+** single-threaded operation, there is exactly one instance of this object
+** and for multi-threaded operation there are two or more instances.
+**
+** Essentially, this structure contains all those fields of the VdbeSorter
+** structure for which each thread requires a separate instance. For example,
+** each thread requries its own UnpackedRecord object to unpack records in
+** as part of comparison operations.
+**
+** Before a background thread is launched, variable bDone is set to 0. Then,
+** right before it exits, the thread itself sets bDone to 1. This is used for
+** two purposes:
+**
+** 1. When flushing the contents of memory to a level-0 PMA on disk, to
+** attempt to select a SortSubtask for which there is not already an
+** active background thread (since doing so causes the main thread
+** to block until it finishes).
+**
+** 2. If SQLITE_DEBUG_SORTER_THREADS is defined, to determine if a call
+** to sqlite3ThreadJoin() is likely to block. Cases that are likely to
+** block provoke debugging output.
+**
+** In both cases, the effects of the main thread seeing (bDone==0) even
+** after the thread has finished are not dire. So we don't worry about
+** memory barriers and such here.
+*/
+struct SortSubtask {
+ SQLiteThread *pThread; /* Background thread, if any */
+ int bDone; /* Set if thread is finished but not joined */
+ VdbeSorter *pSorter; /* Sorter that owns this sub-task */
+ UnpackedRecord *pUnpacked; /* Space to unpack a record */
+ SorterList list; /* List for thread to write to a PMA */
+ int nPMA; /* Number of PMAs currently in file */
+ SorterFile file; /* Temp file for level-0 PMAs */
+ SorterFile file2; /* Space for other PMAs */
+};
+
+/*
+** Main sorter structure. A single instance of this is allocated for each
+** sorter cursor created by the VDBE.
+**
+** mxKeysize:
+** As records are added to the sorter by calls to sqlite3VdbeSorterWrite(),
+** this variable is updated so as to be set to the size on disk of the
+** largest record in the sorter.
+*/
struct VdbeSorter {
- i64 iWriteOff; /* Current write offset within file pTemp1 */
- i64 iReadOff; /* Current read offset within file pTemp1 */
- int nInMemory; /* Current size of pRecord list as PMA */
- int nTree; /* Used size of aTree/aIter (power of 2) */
- int nPMA; /* Number of PMAs stored in pTemp1 */
int mnPmaSize; /* Minimum PMA size, in bytes */
int mxPmaSize; /* Maximum PMA size, in bytes. 0==no limit */
- VdbeSorterIter *aIter; /* Array of iterators to merge */
- int *aTree; /* Current state of incremental merge */
- sqlite3_file *pTemp1; /* PMA file 1 */
- SorterRecord *pRecord; /* Head of in-memory record list */
- UnpackedRecord *pUnpacked; /* Used to unpack keys */
+ int mxKeysize; /* Largest serialized key seen so far */
+ int pgsz; /* Main database page size */
+ PmaReader *pReader; /* Readr data from here after Rewind() */
+ MergeEngine *pMerger; /* Or here, if bUseThreads==0 */
+ sqlite3 *db; /* Database connection */
+ KeyInfo *pKeyInfo; /* How to compare records */
+ UnpackedRecord *pUnpacked; /* Used by VdbeSorterCompare() */
+ SorterList list; /* List of in-memory records */
+ int iMemory; /* Offset of free space in list.aMemory */
+ int nMemory; /* Size of list.aMemory allocation in bytes */
+ u8 bUsePMA; /* True if one or more PMAs created */
+ u8 bUseThreads; /* True to use background threads */
+ u8 iPrev; /* Previous thread used to flush PMA */
+ u8 nTask; /* Size of aTask[] array */
+ SortSubtask aTask[1]; /* One or more subtasks */
};
/*
-** The following type is an iterator for a PMA. It caches the current key in
-** variables nKey/aKey. If the iterator is at EOF, pFile==0.
-*/
-struct VdbeSorterIter {
- i64 iReadOff; /* Current read offset */
- i64 iEof; /* 1 byte past EOF for this iterator */
- int nAlloc; /* Bytes of space at aAlloc */
- int nKey; /* Number of bytes in key */
- sqlite3_file *pFile; /* File iterator is reading from */
- u8 *aAlloc; /* Allocated space */
- u8 *aKey; /* Pointer to current key */
- u8 *aBuffer; /* Current read buffer */
- int nBuffer; /* Size of read buffer in bytes */
+** An instance of the following object is used to read records out of a
+** PMA, in sorted order. The next key to be read is cached in nKey/aKey.
+** aKey might point into aMap or into aBuffer. If neither of those locations
+** contain a contiguous representation of the key, then aAlloc is allocated
+** and the key is copied into aAlloc and aKey is made to poitn to aAlloc.
+**
+** pFd==0 at EOF.
+*/
+struct PmaReader {
+ i64 iReadOff; /* Current read offset */
+ i64 iEof; /* 1 byte past EOF for this PmaReader */
+ int nAlloc; /* Bytes of space at aAlloc */
+ int nKey; /* Number of bytes in key */
+ sqlite3_file *pFd; /* File handle we are reading from */
+ u8 *aAlloc; /* Space for aKey if aBuffer and pMap wont work */
+ u8 *aKey; /* Pointer to current key */
+ u8 *aBuffer; /* Current read buffer */
+ int nBuffer; /* Size of read buffer in bytes */
+ u8 *aMap; /* Pointer to mapping of entire file */
+ IncrMerger *pIncr; /* Incremental merger */
+};
+
+/*
+** Normally, a PmaReader object iterates through an existing PMA stored
+** within a temp file. However, if the PmaReader.pIncr variable points to
+** an object of the following type, it may be used to iterate/merge through
+** multiple PMAs simultaneously.
+**
+** There are two types of IncrMerger object - single (bUseThread==0) and
+** multi-threaded (bUseThread==1).
+**
+** A multi-threaded IncrMerger object uses two temporary files - aFile[0]
+** and aFile[1]. Neither file is allowed to grow to more than mxSz bytes in
+** size. When the IncrMerger is initialized, it reads enough data from
+** pMerger to populate aFile[0]. It then sets variables within the
+** corresponding PmaReader object to read from that file and kicks off
+** a background thread to populate aFile[1] with the next mxSz bytes of
+** sorted record data from pMerger.
+**
+** When the PmaReader reaches the end of aFile[0], it blocks until the
+** background thread has finished populating aFile[1]. It then exchanges
+** the contents of the aFile[0] and aFile[1] variables within this structure,
+** sets the PmaReader fields to read from the new aFile[0] and kicks off
+** another background thread to populate the new aFile[1]. And so on, until
+** the contents of pMerger are exhausted.
+**
+** A single-threaded IncrMerger does not open any temporary files of its
+** own. Instead, it has exclusive access to mxSz bytes of space beginning
+** at offset iStartOff of file pTask->file2. And instead of using a
+** background thread to prepare data for the PmaReader, with a single
+** threaded IncrMerger the allocate part of pTask->file2 is "refilled" with
+** keys from pMerger by the calling thread whenever the PmaReader runs out
+** of data.
+*/
+struct IncrMerger {
+ SortSubtask *pTask; /* Task that owns this merger */
+ MergeEngine *pMerger; /* Merge engine thread reads data from */
+ i64 iStartOff; /* Offset to start writing file at */
+ int mxSz; /* Maximum bytes of data to store */
+ int bEof; /* Set to true when merge is finished */
+ int bUseThread; /* True to use a bg thread for this object */
+ SorterFile aFile[2]; /* aFile[0] for reading, [1] for writing */
};
/*
-** An instance of this structure is used to organize the stream of records
-** being written to files by the merge-sort code into aligned, page-sized
-** blocks. Doing all I/O in aligned page-sized blocks helps I/O to go
-** faster on many operating systems.
+** An instance of this object is used for writing a PMA.
+**
+** The PMA is written one record at a time. Each record is of an arbitrary
+** size. But I/O is more efficient if it occurs in page-sized blocks where
+** each block is aligned on a page boundary. This object caches writes to
+** the PMA so that aligned, page-size blocks are written.
*/
-struct FileWriter {
+struct PmaWriter {
int eFWErr; /* Non-zero if in an error state */
u8 *aBuffer; /* Pointer to write buffer */
int nBuffer; /* Size of write buffer in bytes */
int iBufStart; /* First byte of buffer to write */
int iBufEnd; /* Last byte of buffer to write */
i64 iWriteOff; /* Offset of start of buffer in file */
- sqlite3_file *pFile; /* File to write to */
+ sqlite3_file *pFd; /* File handle to write to */
};
/*
-** A structure to store a single record. All in-memory records are connected
-** together into a linked list headed at VdbeSorter.pRecord using the
-** SorterRecord.pNext pointer.
+** This object is the header on a single record while that record is being
+** held in memory and prior to being written out as part of a PMA.
+**
+** How the linked list is connected depends on how memory is being managed
+** by this module. If using a separate allocation for each in-memory record
+** (VdbeSorter.list.aMemory==0), then the list is always connected using the
+** SorterRecord.u.pNext pointers.
+**
+** Or, if using the single large allocation method (VdbeSorter.list.aMemory!=0),
+** then while records are being accumulated the list is linked using the
+** SorterRecord.u.iNext offset. This is because the aMemory[] array may
+** be sqlite3Realloc()ed while records are being accumulated. Once the VM
+** has finished passing records to the sorter, or when the in-memory buffer
+** is full, the list is sorted. As part of the sorting process, it is
+** converted to use the SorterRecord.u.pNext pointers. See function
+** vdbeSorterSort() for details.
*/
struct SorterRecord {
- void *pVal;
- int nVal;
- SorterRecord *pNext;
+ int nVal; /* Size of the record in bytes */
+ union {
+ SorterRecord *pNext; /* Pointer to next record in list */
+ int iNext; /* Offset within aMemory of next record */
+ } u;
+ /* The data for the record immediately follows this header */
};
-/* Minimum allowable value for the VdbeSorter.nWorking variable */
-#define SORTER_MIN_WORKING 10
+/* Return a pointer to the buffer containing the record data for SorterRecord
+** object p. Should be used as if:
+**
+** void *SRVAL(SorterRecord *p) { return (void*)&p[1]; }
+*/
+#define SRVAL(p) ((void*)((SorterRecord*)(p) + 1))
+
-/* Maximum number of segments to merge in a single pass. */
+/* Maximum number of PMAs that a single MergeEngine can merge */
#define SORTER_MAX_MERGE_COUNT 16
+static int vdbeIncrSwap(IncrMerger*);
+static void vdbeIncrFree(IncrMerger *);
+
/*
-** Free all memory belonging to the VdbeSorterIter object passed as the second
+** Free all memory belonging to the PmaReader object passed as the
** argument. All structure fields are set to zero before returning.
*/
-static void vdbeSorterIterZero(sqlite3 *db, VdbeSorterIter *pIter){
- sqlite3DbFree(db, pIter->aAlloc);
- sqlite3DbFree(db, pIter->aBuffer);
- memset(pIter, 0, sizeof(VdbeSorterIter));
+static void vdbePmaReaderClear(PmaReader *pReadr){
+ sqlite3_free(pReadr->aAlloc);
+ sqlite3_free(pReadr->aBuffer);
+ if( pReadr->aMap ) sqlite3OsUnfetch(pReadr->pFd, 0, pReadr->aMap);
+ vdbeIncrFree(pReadr->pIncr);
+ memset(pReadr, 0, sizeof(PmaReader));
}
/*
-** Read nByte bytes of data from the stream of data iterated by object p.
+** Read the next nByte bytes of data from the PMA p.
** If successful, set *ppOut to point to a buffer containing the data
** and return SQLITE_OK. Otherwise, if an error occurs, return an SQLite
** error code.
**
-** The buffer indicated by *ppOut may only be considered valid until the
+** The buffer returned in *ppOut is only valid until the
** next call to this function.
*/
-static int vdbeSorterIterRead(
- sqlite3 *db, /* Database handle (for malloc) */
- VdbeSorterIter *p, /* Iterator */
+static int vdbePmaReadBlob(
+ PmaReader *p, /* PmaReader from which to take the blob */
int nByte, /* Bytes of data to read */
u8 **ppOut /* OUT: Pointer to buffer containing data */
){
int iBuf; /* Offset within buffer to read from */
int nAvail; /* Bytes of data available in buffer */
+
+ if( p->aMap ){
+ *ppOut = &p->aMap[p->iReadOff];
+ p->iReadOff += nByte;
+ return SQLITE_OK;
+ }
+
assert( p->aBuffer );
/* If there is no more data to be read from the buffer, read the next
@@ -75204,8 +77642,8 @@ static int vdbeSorterIterRead(
}
assert( nRead>0 );
- /* Read data from the file. Return early if an error occurs. */
- rc = sqlite3OsRead(p->pFile, p->aBuffer, nRead, p->iReadOff);
+ /* Readr data from the file. Return early if an error occurs. */
+ rc = sqlite3OsRead(p->pFd, p->aBuffer, nRead, p->iReadOff);
assert( rc!=SQLITE_IOERR_SHORT_READ );
if( rc!=SQLITE_OK ) return rc;
}
@@ -75225,11 +77663,13 @@ static int vdbeSorterIterRead(
/* Extend the p->aAlloc[] allocation if required. */
if( p->nAlloc<nByte ){
- int nNew = p->nAlloc*2;
+ u8 *aNew;
+ int nNew = MAX(128, p->nAlloc*2);
while( nByte>nNew ) nNew = nNew*2;
- p->aAlloc = sqlite3DbReallocOrFree(db, p->aAlloc, nNew);
- if( !p->aAlloc ) return SQLITE_NOMEM;
+ aNew = sqlite3Realloc(p->aAlloc, nNew);
+ if( !aNew ) return SQLITE_NOMEM;
p->nAlloc = nNew;
+ p->aAlloc = aNew;
}
/* Copy as much data as is available in the buffer into the start of
@@ -75241,13 +77681,13 @@ static int vdbeSorterIterRead(
/* The following loop copies up to p->nBuffer bytes per iteration into
** the p->aAlloc[] buffer. */
while( nRem>0 ){
- int rc; /* vdbeSorterIterRead() return code */
+ int rc; /* vdbePmaReadBlob() return code */
int nCopy; /* Number of bytes to copy */
u8 *aNext; /* Pointer to buffer to copy data from */
nCopy = nRem;
if( nRem>p->nBuffer ) nCopy = p->nBuffer;
- rc = vdbeSorterIterRead(db, p, nCopy, &aNext);
+ rc = vdbePmaReadBlob(p, nCopy, &aNext);
if( rc!=SQLITE_OK ) return rc;
assert( aNext!=p->aAlloc );
memcpy(&p->aAlloc[nByte - nRem], aNext, nCopy);
@@ -75264,108 +77704,174 @@ static int vdbeSorterIterRead(
** Read a varint from the stream of data accessed by p. Set *pnOut to
** the value read.
*/
-static int vdbeSorterIterVarint(sqlite3 *db, VdbeSorterIter *p, u64 *pnOut){
+static int vdbePmaReadVarint(PmaReader *p, u64 *pnOut){
int iBuf;
- iBuf = p->iReadOff % p->nBuffer;
- if( iBuf && (p->nBuffer-iBuf)>=9 ){
- p->iReadOff += sqlite3GetVarint(&p->aBuffer[iBuf], pnOut);
+ if( p->aMap ){
+ p->iReadOff += sqlite3GetVarint(&p->aMap[p->iReadOff], pnOut);
}else{
- u8 aVarint[16], *a;
- int i = 0, rc;
- do{
- rc = vdbeSorterIterRead(db, p, 1, &a);
- if( rc ) return rc;
- aVarint[(i++)&0xf] = a[0];
- }while( (a[0]&0x80)!=0 );
- sqlite3GetVarint(aVarint, pnOut);
+ iBuf = p->iReadOff % p->nBuffer;
+ if( iBuf && (p->nBuffer-iBuf)>=9 ){
+ p->iReadOff += sqlite3GetVarint(&p->aBuffer[iBuf], pnOut);
+ }else{
+ u8 aVarint[16], *a;
+ int i = 0, rc;
+ do{
+ rc = vdbePmaReadBlob(p, 1, &a);
+ if( rc ) return rc;
+ aVarint[(i++)&0xf] = a[0];
+ }while( (a[0]&0x80)!=0 );
+ sqlite3GetVarint(aVarint, pnOut);
+ }
}
return SQLITE_OK;
}
+/*
+** Attempt to memory map file pFile. If successful, set *pp to point to the
+** new mapping and return SQLITE_OK. If the mapping is not attempted
+** (because the file is too large or the VFS layer is configured not to use
+** mmap), return SQLITE_OK and set *pp to NULL.
+**
+** Or, if an error occurs, return an SQLite error code. The final value of
+** *pp is undefined in this case.
+*/
+static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){
+ int rc = SQLITE_OK;
+ if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){
+ sqlite3_file *pFd = pFile->pFd;
+ if( pFd->pMethods->iVersion>=3 ){
+ rc = sqlite3OsFetch(pFd, 0, (int)pFile->iEof, (void**)pp);
+ testcase( rc!=SQLITE_OK );
+ }
+ }
+ return rc;
+}
/*
-** Advance iterator pIter to the next key in its PMA. Return SQLITE_OK if
-** no error occurs, or an SQLite error code if one does.
+** Attach PmaReader pReadr to file pFile (if it is not already attached to
+** that file) and seek it to offset iOff within the file. Return SQLITE_OK
+** if successful, or an SQLite error code if an error occurs.
*/
-static int vdbeSorterIterNext(
- sqlite3 *db, /* Database handle (for sqlite3DbMalloc() ) */
- VdbeSorterIter *pIter /* Iterator to advance */
+static int vdbePmaReaderSeek(
+ SortSubtask *pTask, /* Task context */
+ PmaReader *pReadr, /* Reader whose cursor is to be moved */
+ SorterFile *pFile, /* Sorter file to read from */
+ i64 iOff /* Offset in pFile */
){
- int rc; /* Return Code */
+ int rc = SQLITE_OK;
+
+ assert( pReadr->pIncr==0 || pReadr->pIncr->bEof==0 );
+
+ if( sqlite3FaultSim(201) ) return SQLITE_IOERR_READ;
+ if( pReadr->aMap ){
+ sqlite3OsUnfetch(pReadr->pFd, 0, pReadr->aMap);
+ pReadr->aMap = 0;
+ }
+ pReadr->iReadOff = iOff;
+ pReadr->iEof = pFile->iEof;
+ pReadr->pFd = pFile->pFd;
+
+ rc = vdbeSorterMapFile(pTask, pFile, &pReadr->aMap);
+ if( rc==SQLITE_OK && pReadr->aMap==0 ){
+ int pgsz = pTask->pSorter->pgsz;
+ int iBuf = pReadr->iReadOff % pgsz;
+ if( pReadr->aBuffer==0 ){
+ pReadr->aBuffer = (u8*)sqlite3Malloc(pgsz);
+ if( pReadr->aBuffer==0 ) rc = SQLITE_NOMEM;
+ pReadr->nBuffer = pgsz;
+ }
+ if( rc==SQLITE_OK && iBuf ){
+ int nRead = pgsz - iBuf;
+ if( (pReadr->iReadOff + nRead) > pReadr->iEof ){
+ nRead = (int)(pReadr->iEof - pReadr->iReadOff);
+ }
+ rc = sqlite3OsRead(
+ pReadr->pFd, &pReadr->aBuffer[iBuf], nRead, pReadr->iReadOff
+ );
+ testcase( rc!=SQLITE_OK );
+ }
+ }
+
+ return rc;
+}
+
+/*
+** Advance PmaReader pReadr to the next key in its PMA. Return SQLITE_OK if
+** no error occurs, or an SQLite error code if one does.
+*/
+static int vdbePmaReaderNext(PmaReader *pReadr){
+ int rc = SQLITE_OK; /* Return Code */
u64 nRec = 0; /* Size of record in bytes */
- if( pIter->iReadOff>=pIter->iEof ){
- /* This is an EOF condition */
- vdbeSorterIterZero(db, pIter);
- return SQLITE_OK;
+
+ if( pReadr->iReadOff>=pReadr->iEof ){
+ IncrMerger *pIncr = pReadr->pIncr;
+ int bEof = 1;
+ if( pIncr ){
+ rc = vdbeIncrSwap(pIncr);
+ if( rc==SQLITE_OK && pIncr->bEof==0 ){
+ rc = vdbePmaReaderSeek(
+ pIncr->pTask, pReadr, &pIncr->aFile[0], pIncr->iStartOff
+ );
+ bEof = 0;
+ }
+ }
+
+ if( bEof ){
+ /* This is an EOF condition */
+ vdbePmaReaderClear(pReadr);
+ testcase( rc!=SQLITE_OK );
+ return rc;
+ }
}
- rc = vdbeSorterIterVarint(db, pIter, &nRec);
if( rc==SQLITE_OK ){
- pIter->nKey = (int)nRec;
- rc = vdbeSorterIterRead(db, pIter, (int)nRec, &pIter->aKey);
+ rc = vdbePmaReadVarint(pReadr, &nRec);
+ }
+ if( rc==SQLITE_OK ){
+ pReadr->nKey = (int)nRec;
+ rc = vdbePmaReadBlob(pReadr, (int)nRec, &pReadr->aKey);
+ testcase( rc!=SQLITE_OK );
}
return rc;
}
/*
-** Initialize iterator pIter to scan through the PMA stored in file pFile
+** Initialize PmaReader pReadr to scan through the PMA stored in file pFile
** starting at offset iStart and ending at offset iEof-1. This function
-** leaves the iterator pointing to the first key in the PMA (or EOF if the
+** leaves the PmaReader pointing to the first key in the PMA (or EOF if the
** PMA is empty).
+**
+** If the pnByte parameter is NULL, then it is assumed that the file
+** contains a single PMA, and that that PMA omits the initial length varint.
*/
-static int vdbeSorterIterInit(
- sqlite3 *db, /* Database handle */
- const VdbeSorter *pSorter, /* Sorter object */
+static int vdbePmaReaderInit(
+ SortSubtask *pTask, /* Task context */
+ SorterFile *pFile, /* Sorter file to read from */
i64 iStart, /* Start offset in pFile */
- VdbeSorterIter *pIter, /* Iterator to populate */
+ PmaReader *pReadr, /* PmaReader to populate */
i64 *pnByte /* IN/OUT: Increment this value by PMA size */
){
- int rc = SQLITE_OK;
- int nBuf;
-
- nBuf = sqlite3BtreeGetPageSize(db->aDb[0].pBt);
-
- assert( pSorter->iWriteOff>iStart );
- assert( pIter->aAlloc==0 );
- assert( pIter->aBuffer==0 );
- pIter->pFile = pSorter->pTemp1;
- pIter->iReadOff = iStart;
- pIter->nAlloc = 128;
- pIter->aAlloc = (u8 *)sqlite3DbMallocRaw(db, pIter->nAlloc);
- pIter->nBuffer = nBuf;
- pIter->aBuffer = (u8 *)sqlite3DbMallocRaw(db, nBuf);
-
- if( !pIter->aBuffer ){
- rc = SQLITE_NOMEM;
- }else{
- int iBuf;
+ int rc;
- iBuf = iStart % nBuf;
- if( iBuf ){
- int nRead = nBuf - iBuf;
- if( (iStart + nRead) > pSorter->iWriteOff ){
- nRead = (int)(pSorter->iWriteOff - iStart);
- }
- rc = sqlite3OsRead(
- pSorter->pTemp1, &pIter->aBuffer[iBuf], nRead, iStart
- );
- }
+ assert( pFile->iEof>iStart );
+ assert( pReadr->aAlloc==0 && pReadr->nAlloc==0 );
+ assert( pReadr->aBuffer==0 );
+ assert( pReadr->aMap==0 );
- if( rc==SQLITE_OK ){
- u64 nByte; /* Size of PMA in bytes */
- pIter->iEof = pSorter->iWriteOff;
- rc = vdbeSorterIterVarint(db, pIter, &nByte);
- pIter->iEof = pIter->iReadOff + nByte;
- *pnByte += nByte;
- }
+ rc = vdbePmaReaderSeek(pTask, pReadr, pFile, iStart);
+ if( rc==SQLITE_OK ){
+ u64 nByte; /* Size of PMA in bytes */
+ rc = vdbePmaReadVarint(pReadr, &nByte);
+ pReadr->iEof = pReadr->iReadOff + nByte;
+ *pnByte += nByte;
}
if( rc==SQLITE_OK ){
- rc = vdbeSorterIterNext(db, pIter);
+ rc = vdbePmaReaderNext(pReadr);
}
return rc;
}
@@ -75373,135 +77879,329 @@ static int vdbeSorterIterInit(
/*
** Compare key1 (buffer pKey1, size nKey1 bytes) with key2 (buffer pKey2,
-** size nKey2 bytes). Argument pKeyInfo supplies the collation functions
-** used by the comparison. If an error occurs, return an SQLite error code.
-** Otherwise, return SQLITE_OK and set *pRes to a negative, zero or positive
-** value, depending on whether key1 is smaller, equal to or larger than key2.
-**
-** If the bOmitRowid argument is non-zero, assume both keys end in a rowid
-** field. For the purposes of the comparison, ignore it. Also, if bOmitRowid
-** is true and key1 contains even a single NULL value, it is considered to
-** be less than key2. Even if key2 also contains NULL values.
-**
-** If pKey2 is passed a NULL pointer, then it is assumed that the pCsr->aSpace
-** has been allocated and contains an unpacked record that is used as key2.
-*/
-static void vdbeSorterCompare(
- const VdbeCursor *pCsr, /* Cursor object (for pKeyInfo) */
- int nKeyCol, /* Num of columns. 0 means "all" */
+** size nKey2 bytes). Use (pTask->pKeyInfo) for the collation sequences
+** used by the comparison. Return the result of the comparison.
+**
+** Before returning, object (pTask->pUnpacked) is populated with the
+** unpacked version of key2. Or, if pKey2 is passed a NULL pointer, then it
+** is assumed that the (pTask->pUnpacked) structure already contains the
+** unpacked key to use as key2.
+**
+** If an OOM error is encountered, (pTask->pUnpacked->error_rc) is set
+** to SQLITE_NOMEM.
+*/
+static int vdbeSorterCompare(
+ SortSubtask *pTask, /* Subtask context (for pKeyInfo) */
const void *pKey1, int nKey1, /* Left side of comparison */
- const void *pKey2, int nKey2, /* Right side of comparison */
- int *pRes /* OUT: Result of comparison */
+ const void *pKey2, int nKey2 /* Right side of comparison */
){
- KeyInfo *pKeyInfo = pCsr->pKeyInfo;
- VdbeSorter *pSorter = pCsr->pSorter;
- UnpackedRecord *r2 = pSorter->pUnpacked;
- int i;
-
+ UnpackedRecord *r2 = pTask->pUnpacked;
if( pKey2 ){
- sqlite3VdbeRecordUnpack(pKeyInfo, nKey2, pKey2, r2);
+ sqlite3VdbeRecordUnpack(pTask->pSorter->pKeyInfo, nKey2, pKey2, r2);
}
+ return sqlite3VdbeRecordCompare(nKey1, pKey1, r2);
+}
- if( nKeyCol ){
- r2->nField = nKeyCol;
- for(i=0; i<nKeyCol; i++){
- if( r2->aMem[i].flags & MEM_Null ){
- *pRes = -1;
- return;
+/*
+** Initialize the temporary index cursor just opened as a sorter cursor.
+**
+** Usually, the sorter module uses the value of (pCsr->pKeyInfo->nField)
+** to determine the number of fields that should be compared from the
+** records being sorted. However, if the value passed as argument nField
+** is non-zero and the sorter is able to guarantee a stable sort, nField
+** is used instead. This is used when sorting records for a CREATE INDEX
+** statement. In this case, keys are always delivered to the sorter in
+** order of the primary key, which happens to be make up the final part
+** of the records being sorted. So if the sort is stable, there is never
+** any reason to compare PK fields and they can be ignored for a small
+** performance boost.
+**
+** The sorter can guarantee a stable sort when running in single-threaded
+** mode, but not in multi-threaded mode.
+**
+** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+*/
+SQLITE_PRIVATE int sqlite3VdbeSorterInit(
+ sqlite3 *db, /* Database connection (for malloc()) */
+ int nField, /* Number of key fields in each record */
+ VdbeCursor *pCsr /* Cursor that holds the new sorter */
+){
+ int pgsz; /* Page size of main database */
+ int i; /* Used to iterate through aTask[] */
+ int mxCache; /* Cache size */
+ VdbeSorter *pSorter; /* The new sorter */
+ KeyInfo *pKeyInfo; /* Copy of pCsr->pKeyInfo with db==0 */
+ int szKeyInfo; /* Size of pCsr->pKeyInfo in bytes */
+ int sz; /* Size of pSorter in bytes */
+ int rc = SQLITE_OK;
+#if SQLITE_MAX_WORKER_THREADS==0
+# define nWorker 0
+#else
+ int nWorker;
+#endif
+
+ /* Initialize the upper limit on the number of worker threads */
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( sqlite3TempInMemory(db) || sqlite3GlobalConfig.bCoreMutex==0 ){
+ nWorker = 0;
+ }else{
+ nWorker = db->aLimit[SQLITE_LIMIT_WORKER_THREADS];
+ }
+#endif
+
+ /* Do not allow the total number of threads (main thread + all workers)
+ ** to exceed the maximum merge count */
+#if SQLITE_MAX_WORKER_THREADS>=SORTER_MAX_MERGE_COUNT
+ if( nWorker>=SORTER_MAX_MERGE_COUNT ){
+ nWorker = SORTER_MAX_MERGE_COUNT-1;
+ }
+#endif
+
+ assert( pCsr->pKeyInfo && pCsr->pBt==0 );
+ szKeyInfo = sizeof(KeyInfo) + (pCsr->pKeyInfo->nField-1)*sizeof(CollSeq*);
+ sz = sizeof(VdbeSorter) + nWorker * sizeof(SortSubtask);
+
+ pSorter = (VdbeSorter*)sqlite3DbMallocZero(db, sz + szKeyInfo);
+ pCsr->pSorter = pSorter;
+ if( pSorter==0 ){
+ rc = SQLITE_NOMEM;
+ }else{
+ pSorter->pKeyInfo = pKeyInfo = (KeyInfo*)((u8*)pSorter + sz);
+ memcpy(pKeyInfo, pCsr->pKeyInfo, szKeyInfo);
+ pKeyInfo->db = 0;
+ if( nField && nWorker==0 ) pKeyInfo->nField = nField;
+ pSorter->pgsz = pgsz = sqlite3BtreeGetPageSize(db->aDb[0].pBt);
+ pSorter->nTask = nWorker + 1;
+ pSorter->bUseThreads = (pSorter->nTask>1);
+ pSorter->db = db;
+ for(i=0; i<pSorter->nTask; i++){
+ SortSubtask *pTask = &pSorter->aTask[i];
+ pTask->pSorter = pSorter;
+ }
+
+ if( !sqlite3TempInMemory(db) ){
+ u32 szPma = sqlite3GlobalConfig.szPma;
+ pSorter->mnPmaSize = szPma * pgsz;
+ mxCache = db->aDb[0].pSchema->cache_size;
+ if( mxCache<(int)szPma ) mxCache = (int)szPma;
+ pSorter->mxPmaSize = MIN((i64)mxCache*pgsz, SQLITE_MAX_PMASZ);
+
+ /* EVIDENCE-OF: R-26747-61719 When the application provides any amount of
+ ** scratch memory using SQLITE_CONFIG_SCRATCH, SQLite avoids unnecessary
+ ** large heap allocations.
+ */
+ if( sqlite3GlobalConfig.pScratch==0 ){
+ assert( pSorter->iMemory==0 );
+ pSorter->nMemory = pgsz;
+ pSorter->list.aMemory = (u8*)sqlite3Malloc(pgsz);
+ if( !pSorter->list.aMemory ) rc = SQLITE_NOMEM;
}
}
- assert( r2->default_rc==0 );
}
- *pRes = sqlite3VdbeRecordCompare(nKey1, pKey1, r2, 0);
+ return rc;
}
+#undef nWorker /* Defined at the top of this function */
/*
-** This function is called to compare two iterator keys when merging
-** multiple b-tree segments. Parameter iOut is the index of the aTree[]
-** value to recalculate.
+** Free the list of sorted records starting at pRecord.
*/
-static int vdbeSorterDoCompare(const VdbeCursor *pCsr, int iOut){
- VdbeSorter *pSorter = pCsr->pSorter;
- int i1;
- int i2;
- int iRes;
- VdbeSorterIter *p1;
- VdbeSorterIter *p2;
-
- assert( iOut<pSorter->nTree && iOut>0 );
+static void vdbeSorterRecordFree(sqlite3 *db, SorterRecord *pRecord){
+ SorterRecord *p;
+ SorterRecord *pNext;
+ for(p=pRecord; p; p=pNext){
+ pNext = p->u.pNext;
+ sqlite3DbFree(db, p);
+ }
+}
- if( iOut>=(pSorter->nTree/2) ){
- i1 = (iOut - pSorter->nTree/2) * 2;
- i2 = i1 + 1;
- }else{
- i1 = pSorter->aTree[iOut*2];
- i2 = pSorter->aTree[iOut*2+1];
+/*
+** Free all resources owned by the object indicated by argument pTask. All
+** fields of *pTask are zeroed before returning.
+*/
+static void vdbeSortSubtaskCleanup(sqlite3 *db, SortSubtask *pTask){
+ sqlite3DbFree(db, pTask->pUnpacked);
+ pTask->pUnpacked = 0;
+#if SQLITE_MAX_WORKER_THREADS>0
+ /* pTask->list.aMemory can only be non-zero if it was handed memory
+ ** from the main thread. That only occurs SQLITE_MAX_WORKER_THREADS>0 */
+ if( pTask->list.aMemory ){
+ sqlite3_free(pTask->list.aMemory);
+ pTask->list.aMemory = 0;
+ }else
+#endif
+ {
+ assert( pTask->list.aMemory==0 );
+ vdbeSorterRecordFree(0, pTask->list.pList);
+ }
+ pTask->list.pList = 0;
+ if( pTask->file.pFd ){
+ sqlite3OsCloseFree(pTask->file.pFd);
+ pTask->file.pFd = 0;
+ pTask->file.iEof = 0;
+ }
+ if( pTask->file2.pFd ){
+ sqlite3OsCloseFree(pTask->file2.pFd);
+ pTask->file2.pFd = 0;
+ pTask->file2.iEof = 0;
}
+}
- p1 = &pSorter->aIter[i1];
- p2 = &pSorter->aIter[i2];
+#ifdef SQLITE_DEBUG_SORTER_THREADS
+static void vdbeSorterWorkDebug(SortSubtask *pTask, const char *zEvent){
+ i64 t;
+ int iTask = (pTask - pTask->pSorter->aTask);
+ sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
+ fprintf(stderr, "%lld:%d %s\n", t, iTask, zEvent);
+}
+static void vdbeSorterRewindDebug(const char *zEvent){
+ i64 t;
+ sqlite3OsCurrentTimeInt64(sqlite3_vfs_find(0), &t);
+ fprintf(stderr, "%lld:X %s\n", t, zEvent);
+}
+static void vdbeSorterPopulateDebug(
+ SortSubtask *pTask,
+ const char *zEvent
+){
+ i64 t;
+ int iTask = (pTask - pTask->pSorter->aTask);
+ sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
+ fprintf(stderr, "%lld:bg%d %s\n", t, iTask, zEvent);
+}
+static void vdbeSorterBlockDebug(
+ SortSubtask *pTask,
+ int bBlocked,
+ const char *zEvent
+){
+ if( bBlocked ){
+ i64 t;
+ sqlite3OsCurrentTimeInt64(pTask->pSorter->db->pVfs, &t);
+ fprintf(stderr, "%lld:main %s\n", t, zEvent);
+ }
+}
+#else
+# define vdbeSorterWorkDebug(x,y)
+# define vdbeSorterRewindDebug(y)
+# define vdbeSorterPopulateDebug(x,y)
+# define vdbeSorterBlockDebug(x,y,z)
+#endif
- if( p1->pFile==0 ){
- iRes = i2;
- }else if( p2->pFile==0 ){
- iRes = i1;
- }else{
- int res;
- assert( pCsr->pSorter->pUnpacked!=0 ); /* allocated in vdbeSorterMerge() */
- vdbeSorterCompare(
- pCsr, 0, p1->aKey, p1->nKey, p2->aKey, p2->nKey, &res
- );
- if( res<=0 ){
- iRes = i1;
- }else{
- iRes = i2;
- }
+#if SQLITE_MAX_WORKER_THREADS>0
+/*
+** Join thread pTask->thread.
+*/
+static int vdbeSorterJoinThread(SortSubtask *pTask){
+ int rc = SQLITE_OK;
+ if( pTask->pThread ){
+#ifdef SQLITE_DEBUG_SORTER_THREADS
+ int bDone = pTask->bDone;
+#endif
+ void *pRet = SQLITE_INT_TO_PTR(SQLITE_ERROR);
+ vdbeSorterBlockDebug(pTask, !bDone, "enter");
+ (void)sqlite3ThreadJoin(pTask->pThread, &pRet);
+ vdbeSorterBlockDebug(pTask, !bDone, "exit");
+ rc = SQLITE_PTR_TO_INT(pRet);
+ assert( pTask->bDone==1 );
+ pTask->bDone = 0;
+ pTask->pThread = 0;
}
+ return rc;
+}
- pSorter->aTree[iOut] = iRes;
- return SQLITE_OK;
+/*
+** Launch a background thread to run xTask(pIn).
+*/
+static int vdbeSorterCreateThread(
+ SortSubtask *pTask, /* Thread will use this task object */
+ void *(*xTask)(void*), /* Routine to run in a separate thread */
+ void *pIn /* Argument passed into xTask() */
+){
+ assert( pTask->pThread==0 && pTask->bDone==0 );
+ return sqlite3ThreadCreate(&pTask->pThread, xTask, pIn);
}
/*
-** Initialize the temporary index cursor just opened as a sorter cursor.
+** Join all outstanding threads launched by SorterWrite() to create
+** level-0 PMAs.
*/
-SQLITE_PRIVATE int sqlite3VdbeSorterInit(sqlite3 *db, VdbeCursor *pCsr){
- int pgsz; /* Page size of main database */
- int mxCache; /* Cache size */
- VdbeSorter *pSorter; /* The new sorter */
- char *d; /* Dummy */
+static int vdbeSorterJoinAll(VdbeSorter *pSorter, int rcin){
+ int rc = rcin;
+ int i;
- assert( pCsr->pKeyInfo && pCsr->pBt==0 );
- pCsr->pSorter = pSorter = sqlite3DbMallocZero(db, sizeof(VdbeSorter));
- if( pSorter==0 ){
- return SQLITE_NOMEM;
+ /* This function is always called by the main user thread.
+ **
+ ** If this function is being called after SorterRewind() has been called,
+ ** it is possible that thread pSorter->aTask[pSorter->nTask-1].pThread
+ ** is currently attempt to join one of the other threads. To avoid a race
+ ** condition where this thread also attempts to join the same object, join
+ ** thread pSorter->aTask[pSorter->nTask-1].pThread first. */
+ for(i=pSorter->nTask-1; i>=0; i--){
+ SortSubtask *pTask = &pSorter->aTask[i];
+ int rc2 = vdbeSorterJoinThread(pTask);
+ if( rc==SQLITE_OK ) rc = rc2;
}
-
- pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pCsr->pKeyInfo, 0, 0, &d);
- if( pSorter->pUnpacked==0 ) return SQLITE_NOMEM;
- assert( pSorter->pUnpacked==(UnpackedRecord *)d );
+ return rc;
+}
+#else
+# define vdbeSorterJoinAll(x,rcin) (rcin)
+# define vdbeSorterJoinThread(pTask) SQLITE_OK
+#endif
+
+/*
+** Allocate a new MergeEngine object capable of handling up to
+** nReader PmaReader inputs.
+**
+** nReader is automatically rounded up to the next power of two.
+** nReader may not exceed SORTER_MAX_MERGE_COUNT even after rounding up.
+*/
+static MergeEngine *vdbeMergeEngineNew(int nReader){
+ int N = 2; /* Smallest power of two >= nReader */
+ int nByte; /* Total bytes of space to allocate */
+ MergeEngine *pNew; /* Pointer to allocated object to return */
+
+ assert( nReader<=SORTER_MAX_MERGE_COUNT );
- if( !sqlite3TempInMemory(db) ){
- pgsz = sqlite3BtreeGetPageSize(db->aDb[0].pBt);
- pSorter->mnPmaSize = SORTER_MIN_WORKING * pgsz;
- mxCache = db->aDb[0].pSchema->cache_size;
- if( mxCache<SORTER_MIN_WORKING ) mxCache = SORTER_MIN_WORKING;
- pSorter->mxPmaSize = mxCache * pgsz;
+ while( N<nReader ) N += N;
+ nByte = sizeof(MergeEngine) + N * (sizeof(int) + sizeof(PmaReader));
+
+ pNew = sqlite3FaultSim(100) ? 0 : (MergeEngine*)sqlite3MallocZero(nByte);
+ if( pNew ){
+ pNew->nTree = N;
+ pNew->pTask = 0;
+ pNew->aReadr = (PmaReader*)&pNew[1];
+ pNew->aTree = (int*)&pNew->aReadr[N];
}
+ return pNew;
+}
- return SQLITE_OK;
+/*
+** Free the MergeEngine object passed as the only argument.
+*/
+static void vdbeMergeEngineFree(MergeEngine *pMerger){
+ int i;
+ if( pMerger ){
+ for(i=0; i<pMerger->nTree; i++){
+ vdbePmaReaderClear(&pMerger->aReadr[i]);
+ }
+ }
+ sqlite3_free(pMerger);
}
/*
-** Free the list of sorted records starting at pRecord.
+** Free all resources associated with the IncrMerger object indicated by
+** the first argument.
*/
-static void vdbeSorterRecordFree(sqlite3 *db, SorterRecord *pRecord){
- SorterRecord *p;
- SorterRecord *pNext;
- for(p=pRecord; p; p=pNext){
- pNext = p->pNext;
- sqlite3DbFree(db, p);
+static void vdbeIncrFree(IncrMerger *pIncr){
+ if( pIncr ){
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pIncr->bUseThread ){
+ vdbeSorterJoinThread(pIncr->pTask);
+ if( pIncr->aFile[0].pFd ) sqlite3OsCloseFree(pIncr->aFile[0].pFd);
+ if( pIncr->aFile[1].pFd ) sqlite3OsCloseFree(pIncr->aFile[1].pFd);
+ }
+#endif
+ vdbeMergeEngineFree(pIncr->pMerger);
+ sqlite3_free(pIncr);
}
}
@@ -75509,29 +78209,34 @@ static void vdbeSorterRecordFree(sqlite3 *db, SorterRecord *pRecord){
** Reset a sorting cursor back to its original empty state.
*/
SQLITE_PRIVATE void sqlite3VdbeSorterReset(sqlite3 *db, VdbeSorter *pSorter){
- if( pSorter->aIter ){
- int i;
- for(i=0; i<pSorter->nTree; i++){
- vdbeSorterIterZero(db, &pSorter->aIter[i]);
- }
- sqlite3DbFree(db, pSorter->aIter);
- pSorter->aIter = 0;
+ int i;
+ (void)vdbeSorterJoinAll(pSorter, SQLITE_OK);
+ assert( pSorter->bUseThreads || pSorter->pReader==0 );
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pSorter->pReader ){
+ vdbePmaReaderClear(pSorter->pReader);
+ sqlite3DbFree(db, pSorter->pReader);
+ pSorter->pReader = 0;
+ }
+#endif
+ vdbeMergeEngineFree(pSorter->pMerger);
+ pSorter->pMerger = 0;
+ for(i=0; i<pSorter->nTask; i++){
+ SortSubtask *pTask = &pSorter->aTask[i];
+ vdbeSortSubtaskCleanup(db, pTask);
}
- if( pSorter->pTemp1 ){
- sqlite3OsCloseFree(pSorter->pTemp1);
- pSorter->pTemp1 = 0;
+ if( pSorter->list.aMemory==0 ){
+ vdbeSorterRecordFree(0, pSorter->list.pList);
}
- vdbeSorterRecordFree(db, pSorter->pRecord);
- pSorter->pRecord = 0;
- pSorter->iWriteOff = 0;
- pSorter->iReadOff = 0;
- pSorter->nInMemory = 0;
- pSorter->nTree = 0;
- pSorter->nPMA = 0;
- pSorter->aTree = 0;
+ pSorter->list.pList = 0;
+ pSorter->list.szPMA = 0;
+ pSorter->bUsePMA = 0;
+ pSorter->iMemory = 0;
+ pSorter->mxKeysize = 0;
+ sqlite3DbFree(db, pSorter->pUnpacked);
+ pSorter->pUnpacked = 0;
}
-
/*
** Free any cursor components allocated by sqlite3VdbeSorterXXX routines.
*/
@@ -75539,54 +78244,110 @@ SQLITE_PRIVATE void sqlite3VdbeSorterClose(sqlite3 *db, VdbeCursor *pCsr){
VdbeSorter *pSorter = pCsr->pSorter;
if( pSorter ){
sqlite3VdbeSorterReset(db, pSorter);
- sqlite3DbFree(db, pSorter->pUnpacked);
+ sqlite3_free(pSorter->list.aMemory);
sqlite3DbFree(db, pSorter);
pCsr->pSorter = 0;
}
}
+#if SQLITE_MAX_MMAP_SIZE>0
+/*
+** The first argument is a file-handle open on a temporary file. The file
+** is guaranteed to be nByte bytes or smaller in size. This function
+** attempts to extend the file to nByte bytes in size and to ensure that
+** the VFS has memory mapped it.
+**
+** Whether or not the file does end up memory mapped of course depends on
+** the specific VFS implementation.
+*/
+static void vdbeSorterExtendFile(sqlite3 *db, sqlite3_file *pFd, i64 nByte){
+ if( nByte<=(i64)(db->nMaxSorterMmap) && pFd->pMethods->iVersion>=3 ){
+ void *p = 0;
+ int chunksize = 4*1024;
+ sqlite3OsFileControlHint(pFd, SQLITE_FCNTL_CHUNK_SIZE, &chunksize);
+ sqlite3OsFileControlHint(pFd, SQLITE_FCNTL_SIZE_HINT, &nByte);
+ sqlite3OsFetch(pFd, 0, (int)nByte, &p);
+ sqlite3OsUnfetch(pFd, 0, p);
+ }
+}
+#else
+# define vdbeSorterExtendFile(x,y,z)
+#endif
+
/*
** Allocate space for a file-handle and open a temporary file. If successful,
-** set *ppFile to point to the malloc'd file-handle and return SQLITE_OK.
-** Otherwise, set *ppFile to 0 and return an SQLite error code.
+** set *ppFd to point to the malloc'd file-handle and return SQLITE_OK.
+** Otherwise, set *ppFd to 0 and return an SQLite error code.
*/
-static int vdbeSorterOpenTempFile(sqlite3 *db, sqlite3_file **ppFile){
- int dummy;
- return sqlite3OsOpenMalloc(db->pVfs, 0, ppFile,
+static int vdbeSorterOpenTempFile(
+ sqlite3 *db, /* Database handle doing sort */
+ i64 nExtend, /* Attempt to extend file to this size */
+ sqlite3_file **ppFd
+){
+ int rc;
+ rc = sqlite3OsOpenMalloc(db->pVfs, 0, ppFd,
SQLITE_OPEN_TEMP_JOURNAL |
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE |
- SQLITE_OPEN_EXCLUSIVE | SQLITE_OPEN_DELETEONCLOSE, &dummy
+ SQLITE_OPEN_EXCLUSIVE | SQLITE_OPEN_DELETEONCLOSE, &rc
);
+ if( rc==SQLITE_OK ){
+ i64 max = SQLITE_MAX_MMAP_SIZE;
+ sqlite3OsFileControlHint(*ppFd, SQLITE_FCNTL_MMAP_SIZE, (void*)&max);
+ if( nExtend>0 ){
+ vdbeSorterExtendFile(db, *ppFd, nExtend);
+ }
+ }
+ return rc;
+}
+
+/*
+** If it has not already been allocated, allocate the UnpackedRecord
+** structure at pTask->pUnpacked. Return SQLITE_OK if successful (or
+** if no allocation was required), or SQLITE_NOMEM otherwise.
+*/
+static int vdbeSortAllocUnpacked(SortSubtask *pTask){
+ if( pTask->pUnpacked==0 ){
+ char *pFree;
+ pTask->pUnpacked = sqlite3VdbeAllocUnpackedRecord(
+ pTask->pSorter->pKeyInfo, 0, 0, &pFree
+ );
+ assert( pTask->pUnpacked==(UnpackedRecord*)pFree );
+ if( pFree==0 ) return SQLITE_NOMEM;
+ pTask->pUnpacked->nField = pTask->pSorter->pKeyInfo->nField;
+ pTask->pUnpacked->errCode = 0;
+ }
+ return SQLITE_OK;
}
+
/*
** Merge the two sorted lists p1 and p2 into a single list.
** Set *ppOut to the head of the new list.
*/
static void vdbeSorterMerge(
- const VdbeCursor *pCsr, /* For pKeyInfo */
+ SortSubtask *pTask, /* Calling thread context */
SorterRecord *p1, /* First list to merge */
SorterRecord *p2, /* Second list to merge */
SorterRecord **ppOut /* OUT: Head of merged list */
){
SorterRecord *pFinal = 0;
SorterRecord **pp = &pFinal;
- void *pVal2 = p2 ? p2->pVal : 0;
+ void *pVal2 = p2 ? SRVAL(p2) : 0;
while( p1 && p2 ){
int res;
- vdbeSorterCompare(pCsr, 0, p1->pVal, p1->nVal, pVal2, p2->nVal, &res);
+ res = vdbeSorterCompare(pTask, SRVAL(p1), p1->nVal, pVal2, p2->nVal);
if( res<=0 ){
*pp = p1;
- pp = &p1->pNext;
- p1 = p1->pNext;
+ pp = &p1->u.pNext;
+ p1 = p1->u.pNext;
pVal2 = 0;
}else{
*pp = p2;
- pp = &p2->pNext;
- p2 = p2->pNext;
+ pp = &p2->u.pNext;
+ p2 = p2->u.pNext;
if( p2==0 ) break;
- pVal2 = p2->pVal;
+ pVal2 = SRVAL(p2);
}
}
*pp = p1 ? p1 : p2;
@@ -75594,27 +78355,41 @@ static void vdbeSorterMerge(
}
/*
-** Sort the linked list of records headed at pCsr->pRecord. Return SQLITE_OK
-** if successful, or an SQLite error code (i.e. SQLITE_NOMEM) if an error
-** occurs.
+** Sort the linked list of records headed at pTask->pList. Return
+** SQLITE_OK if successful, or an SQLite error code (i.e. SQLITE_NOMEM) if
+** an error occurs.
*/
-static int vdbeSorterSort(const VdbeCursor *pCsr){
+static int vdbeSorterSort(SortSubtask *pTask, SorterList *pList){
int i;
SorterRecord **aSlot;
SorterRecord *p;
- VdbeSorter *pSorter = pCsr->pSorter;
+ int rc;
+
+ rc = vdbeSortAllocUnpacked(pTask);
+ if( rc!=SQLITE_OK ) return rc;
aSlot = (SorterRecord **)sqlite3MallocZero(64 * sizeof(SorterRecord *));
if( !aSlot ){
return SQLITE_NOMEM;
}
- p = pSorter->pRecord;
+ p = pList->pList;
while( p ){
- SorterRecord *pNext = p->pNext;
- p->pNext = 0;
+ SorterRecord *pNext;
+ if( pList->aMemory ){
+ if( (u8*)p==pList->aMemory ){
+ pNext = 0;
+ }else{
+ assert( p->u.iNext<sqlite3MallocSize(pList->aMemory) );
+ pNext = (SorterRecord*)&pList->aMemory[p->u.iNext];
+ }
+ }else{
+ pNext = p->u.pNext;
+ }
+
+ p->u.pNext = 0;
for(i=0; aSlot[i]; i++){
- vdbeSorterMerge(pCsr, p, aSlot[i], &p);
+ vdbeSorterMerge(pTask, p, aSlot[i], &p);
aSlot[i] = 0;
}
aSlot[i] = p;
@@ -75623,42 +78398,43 @@ static int vdbeSorterSort(const VdbeCursor *pCsr){
p = 0;
for(i=0; i<64; i++){
- vdbeSorterMerge(pCsr, p, aSlot[i], &p);
+ vdbeSorterMerge(pTask, p, aSlot[i], &p);
}
- pSorter->pRecord = p;
+ pList->pList = p;
sqlite3_free(aSlot);
- return SQLITE_OK;
+ assert( pTask->pUnpacked->errCode==SQLITE_OK
+ || pTask->pUnpacked->errCode==SQLITE_NOMEM
+ );
+ return pTask->pUnpacked->errCode;
}
/*
-** Initialize a file-writer object.
+** Initialize a PMA-writer object.
*/
-static void fileWriterInit(
- sqlite3 *db, /* Database (for malloc) */
- sqlite3_file *pFile, /* File to write to */
- FileWriter *p, /* Object to populate */
- i64 iStart /* Offset of pFile to begin writing at */
+static void vdbePmaWriterInit(
+ sqlite3_file *pFd, /* File handle to write to */
+ PmaWriter *p, /* Object to populate */
+ int nBuf, /* Buffer size */
+ i64 iStart /* Offset of pFd to begin writing at */
){
- int nBuf = sqlite3BtreeGetPageSize(db->aDb[0].pBt);
-
- memset(p, 0, sizeof(FileWriter));
- p->aBuffer = (u8 *)sqlite3DbMallocRaw(db, nBuf);
+ memset(p, 0, sizeof(PmaWriter));
+ p->aBuffer = (u8*)sqlite3Malloc(nBuf);
if( !p->aBuffer ){
p->eFWErr = SQLITE_NOMEM;
}else{
p->iBufEnd = p->iBufStart = (iStart % nBuf);
p->iWriteOff = iStart - p->iBufStart;
p->nBuffer = nBuf;
- p->pFile = pFile;
+ p->pFd = pFd;
}
}
/*
-** Write nData bytes of data to the file-write object. Return SQLITE_OK
+** Write nData bytes of data to the PMA. Return SQLITE_OK
** if successful, or an SQLite error code if an error occurs.
*/
-static void fileWriterWrite(FileWriter *p, u8 *pData, int nData){
+static void vdbePmaWriteBlob(PmaWriter *p, u8 *pData, int nData){
int nRem = nData;
while( nRem>0 && p->eFWErr==0 ){
int nCopy = nRem;
@@ -75669,7 +78445,7 @@ static void fileWriterWrite(FileWriter *p, u8 *pData, int nData){
memcpy(&p->aBuffer[p->iBufEnd], &pData[nData-nRem], nCopy);
p->iBufEnd += nCopy;
if( p->iBufEnd==p->nBuffer ){
- p->eFWErr = sqlite3OsWrite(p->pFile,
+ p->eFWErr = sqlite3OsWrite(p->pFd,
&p->aBuffer[p->iBufStart], p->iBufEnd - p->iBufStart,
p->iWriteOff + p->iBufStart
);
@@ -75683,43 +78459,44 @@ static void fileWriterWrite(FileWriter *p, u8 *pData, int nData){
}
/*
-** Flush any buffered data to disk and clean up the file-writer object.
-** The results of using the file-writer after this call are undefined.
+** Flush any buffered data to disk and clean up the PMA-writer object.
+** The results of using the PMA-writer after this call are undefined.
** Return SQLITE_OK if flushing the buffered data succeeds or is not
** required. Otherwise, return an SQLite error code.
**
** Before returning, set *piEof to the offset immediately following the
** last byte written to the file.
*/
-static int fileWriterFinish(sqlite3 *db, FileWriter *p, i64 *piEof){
+static int vdbePmaWriterFinish(PmaWriter *p, i64 *piEof){
int rc;
if( p->eFWErr==0 && ALWAYS(p->aBuffer) && p->iBufEnd>p->iBufStart ){
- p->eFWErr = sqlite3OsWrite(p->pFile,
+ p->eFWErr = sqlite3OsWrite(p->pFd,
&p->aBuffer[p->iBufStart], p->iBufEnd - p->iBufStart,
p->iWriteOff + p->iBufStart
);
}
*piEof = (p->iWriteOff + p->iBufEnd);
- sqlite3DbFree(db, p->aBuffer);
+ sqlite3_free(p->aBuffer);
rc = p->eFWErr;
- memset(p, 0, sizeof(FileWriter));
+ memset(p, 0, sizeof(PmaWriter));
return rc;
}
/*
-** Write value iVal encoded as a varint to the file-write object. Return
+** Write value iVal encoded as a varint to the PMA. Return
** SQLITE_OK if successful, or an SQLite error code if an error occurs.
*/
-static void fileWriterWriteVarint(FileWriter *p, u64 iVal){
+static void vdbePmaWriteVarint(PmaWriter *p, u64 iVal){
int nByte;
u8 aByte[10];
nByte = sqlite3PutVarint(aByte, iVal);
- fileWriterWrite(p, aByte, nByte);
+ vdbePmaWriteBlob(p, aByte, nByte);
}
/*
-** Write the current contents of the in-memory linked-list to a PMA. Return
-** SQLITE_OK if successful, or an SQLite error code otherwise.
+** Write the current contents of in-memory linked-list pList to a level-0
+** PMA in the temp file belonging to sub-task pTask. Return SQLITE_OK if
+** successful, or an SQLite error code otherwise.
**
** The format of a PMA is:
**
@@ -75730,76 +78507,246 @@ static void fileWriterWriteVarint(FileWriter *p, u64 iVal){
** Each record consists of a varint followed by a blob of data (the
** key). The varint is the number of bytes in the blob of data.
*/
-static int vdbeSorterListToPMA(sqlite3 *db, const VdbeCursor *pCsr){
+static int vdbeSorterListToPMA(SortSubtask *pTask, SorterList *pList){
+ sqlite3 *db = pTask->pSorter->db;
int rc = SQLITE_OK; /* Return code */
- VdbeSorter *pSorter = pCsr->pSorter;
- FileWriter writer;
+ PmaWriter writer; /* Object used to write to the file */
- memset(&writer, 0, sizeof(FileWriter));
+#ifdef SQLITE_DEBUG
+ /* Set iSz to the expected size of file pTask->file after writing the PMA.
+ ** This is used by an assert() statement at the end of this function. */
+ i64 iSz = pList->szPMA + sqlite3VarintLen(pList->szPMA) + pTask->file.iEof;
+#endif
- if( pSorter->nInMemory==0 ){
- assert( pSorter->pRecord==0 );
- return rc;
+ vdbeSorterWorkDebug(pTask, "enter");
+ memset(&writer, 0, sizeof(PmaWriter));
+ assert( pList->szPMA>0 );
+
+ /* If the first temporary PMA file has not been opened, open it now. */
+ if( pTask->file.pFd==0 ){
+ rc = vdbeSorterOpenTempFile(db, 0, &pTask->file.pFd);
+ assert( rc!=SQLITE_OK || pTask->file.pFd );
+ assert( pTask->file.iEof==0 );
+ assert( pTask->nPMA==0 );
}
- rc = vdbeSorterSort(pCsr);
+ /* Try to get the file to memory map */
+ if( rc==SQLITE_OK ){
+ vdbeSorterExtendFile(db, pTask->file.pFd, pTask->file.iEof+pList->szPMA+9);
+ }
- /* If the first temporary PMA file has not been opened, open it now. */
- if( rc==SQLITE_OK && pSorter->pTemp1==0 ){
- rc = vdbeSorterOpenTempFile(db, &pSorter->pTemp1);
- assert( rc!=SQLITE_OK || pSorter->pTemp1 );
- assert( pSorter->iWriteOff==0 );
- assert( pSorter->nPMA==0 );
+ /* Sort the list */
+ if( rc==SQLITE_OK ){
+ rc = vdbeSorterSort(pTask, pList);
}
if( rc==SQLITE_OK ){
SorterRecord *p;
SorterRecord *pNext = 0;
- fileWriterInit(db, pSorter->pTemp1, &writer, pSorter->iWriteOff);
- pSorter->nPMA++;
- fileWriterWriteVarint(&writer, pSorter->nInMemory);
- for(p=pSorter->pRecord; p; p=pNext){
- pNext = p->pNext;
- fileWriterWriteVarint(&writer, p->nVal);
- fileWriterWrite(&writer, p->pVal, p->nVal);
- sqlite3DbFree(db, p);
+ vdbePmaWriterInit(pTask->file.pFd, &writer, pTask->pSorter->pgsz,
+ pTask->file.iEof);
+ pTask->nPMA++;
+ vdbePmaWriteVarint(&writer, pList->szPMA);
+ for(p=pList->pList; p; p=pNext){
+ pNext = p->u.pNext;
+ vdbePmaWriteVarint(&writer, p->nVal);
+ vdbePmaWriteBlob(&writer, SRVAL(p), p->nVal);
+ if( pList->aMemory==0 ) sqlite3_free(p);
+ }
+ pList->pList = p;
+ rc = vdbePmaWriterFinish(&writer, &pTask->file.iEof);
+ }
+
+ vdbeSorterWorkDebug(pTask, "exit");
+ assert( rc!=SQLITE_OK || pList->pList==0 );
+ assert( rc!=SQLITE_OK || pTask->file.iEof==iSz );
+ return rc;
+}
+
+/*
+** Advance the MergeEngine to its next entry.
+** Set *pbEof to true there is no next entry because
+** the MergeEngine has reached the end of all its inputs.
+**
+** Return SQLITE_OK if successful or an error code if an error occurs.
+*/
+static int vdbeMergeEngineStep(
+ MergeEngine *pMerger, /* The merge engine to advance to the next row */
+ int *pbEof /* Set TRUE at EOF. Set false for more content */
+){
+ int rc;
+ int iPrev = pMerger->aTree[1];/* Index of PmaReader to advance */
+ SortSubtask *pTask = pMerger->pTask;
+
+ /* Advance the current PmaReader */
+ rc = vdbePmaReaderNext(&pMerger->aReadr[iPrev]);
+
+ /* Update contents of aTree[] */
+ if( rc==SQLITE_OK ){
+ int i; /* Index of aTree[] to recalculate */
+ PmaReader *pReadr1; /* First PmaReader to compare */
+ PmaReader *pReadr2; /* Second PmaReader to compare */
+ u8 *pKey2; /* To pReadr2->aKey, or 0 if record cached */
+
+ /* Find the first two PmaReaders to compare. The one that was just
+ ** advanced (iPrev) and the one next to it in the array. */
+ pReadr1 = &pMerger->aReadr[(iPrev & 0xFFFE)];
+ pReadr2 = &pMerger->aReadr[(iPrev | 0x0001)];
+ pKey2 = pReadr2->aKey;
+
+ for(i=(pMerger->nTree+iPrev)/2; i>0; i=i/2){
+ /* Compare pReadr1 and pReadr2. Store the result in variable iRes. */
+ int iRes;
+ if( pReadr1->pFd==0 ){
+ iRes = +1;
+ }else if( pReadr2->pFd==0 ){
+ iRes = -1;
+ }else{
+ iRes = vdbeSorterCompare(pTask,
+ pReadr1->aKey, pReadr1->nKey, pKey2, pReadr2->nKey
+ );
+ }
+
+ /* If pReadr1 contained the smaller value, set aTree[i] to its index.
+ ** Then set pReadr2 to the next PmaReader to compare to pReadr1. In this
+ ** case there is no cache of pReadr2 in pTask->pUnpacked, so set
+ ** pKey2 to point to the record belonging to pReadr2.
+ **
+ ** Alternatively, if pReadr2 contains the smaller of the two values,
+ ** set aTree[i] to its index and update pReadr1. If vdbeSorterCompare()
+ ** was actually called above, then pTask->pUnpacked now contains
+ ** a value equivalent to pReadr2. So set pKey2 to NULL to prevent
+ ** vdbeSorterCompare() from decoding pReadr2 again.
+ **
+ ** If the two values were equal, then the value from the oldest
+ ** PMA should be considered smaller. The VdbeSorter.aReadr[] array
+ ** is sorted from oldest to newest, so pReadr1 contains older values
+ ** than pReadr2 iff (pReadr1<pReadr2). */
+ if( iRes<0 || (iRes==0 && pReadr1<pReadr2) ){
+ pMerger->aTree[i] = (int)(pReadr1 - pMerger->aReadr);
+ pReadr2 = &pMerger->aReadr[ pMerger->aTree[i ^ 0x0001] ];
+ pKey2 = pReadr2->aKey;
+ }else{
+ if( pReadr1->pFd ) pKey2 = 0;
+ pMerger->aTree[i] = (int)(pReadr2 - pMerger->aReadr);
+ pReadr1 = &pMerger->aReadr[ pMerger->aTree[i ^ 0x0001] ];
+ }
+ }
+ *pbEof = (pMerger->aReadr[pMerger->aTree[1]].pFd==0);
+ }
+
+ return (rc==SQLITE_OK ? pTask->pUnpacked->errCode : rc);
+}
+
+#if SQLITE_MAX_WORKER_THREADS>0
+/*
+** The main routine for background threads that write level-0 PMAs.
+*/
+static void *vdbeSorterFlushThread(void *pCtx){
+ SortSubtask *pTask = (SortSubtask*)pCtx;
+ int rc; /* Return code */
+ assert( pTask->bDone==0 );
+ rc = vdbeSorterListToPMA(pTask, &pTask->list);
+ pTask->bDone = 1;
+ return SQLITE_INT_TO_PTR(rc);
+}
+#endif /* SQLITE_MAX_WORKER_THREADS>0 */
+
+/*
+** Flush the current contents of VdbeSorter.list to a new PMA, possibly
+** using a background thread.
+*/
+static int vdbeSorterFlushPMA(VdbeSorter *pSorter){
+#if SQLITE_MAX_WORKER_THREADS==0
+ pSorter->bUsePMA = 1;
+ return vdbeSorterListToPMA(&pSorter->aTask[0], &pSorter->list);
+#else
+ int rc = SQLITE_OK;
+ int i;
+ SortSubtask *pTask = 0; /* Thread context used to create new PMA */
+ int nWorker = (pSorter->nTask-1);
+
+ /* Set the flag to indicate that at least one PMA has been written.
+ ** Or will be, anyhow. */
+ pSorter->bUsePMA = 1;
+
+ /* Select a sub-task to sort and flush the current list of in-memory
+ ** records to disk. If the sorter is running in multi-threaded mode,
+ ** round-robin between the first (pSorter->nTask-1) tasks. Except, if
+ ** the background thread from a sub-tasks previous turn is still running,
+ ** skip it. If the first (pSorter->nTask-1) sub-tasks are all still busy,
+ ** fall back to using the final sub-task. The first (pSorter->nTask-1)
+ ** sub-tasks are prefered as they use background threads - the final
+ ** sub-task uses the main thread. */
+ for(i=0; i<nWorker; i++){
+ int iTest = (pSorter->iPrev + i + 1) % nWorker;
+ pTask = &pSorter->aTask[iTest];
+ if( pTask->bDone ){
+ rc = vdbeSorterJoinThread(pTask);
+ }
+ if( rc!=SQLITE_OK || pTask->pThread==0 ) break;
+ }
+
+ if( rc==SQLITE_OK ){
+ if( i==nWorker ){
+ /* Use the foreground thread for this operation */
+ rc = vdbeSorterListToPMA(&pSorter->aTask[nWorker], &pSorter->list);
+ }else{
+ /* Launch a background thread for this operation */
+ u8 *aMem = pTask->list.aMemory;
+ void *pCtx = (void*)pTask;
+
+ assert( pTask->pThread==0 && pTask->bDone==0 );
+ assert( pTask->list.pList==0 );
+ assert( pTask->list.aMemory==0 || pSorter->list.aMemory!=0 );
+
+ pSorter->iPrev = (u8)(pTask - pSorter->aTask);
+ pTask->list = pSorter->list;
+ pSorter->list.pList = 0;
+ pSorter->list.szPMA = 0;
+ if( aMem ){
+ pSorter->list.aMemory = aMem;
+ pSorter->nMemory = sqlite3MallocSize(aMem);
+ }else if( pSorter->list.aMemory ){
+ pSorter->list.aMemory = sqlite3Malloc(pSorter->nMemory);
+ if( !pSorter->list.aMemory ) return SQLITE_NOMEM;
+ }
+
+ rc = vdbeSorterCreateThread(pTask, vdbeSorterFlushThread, pCtx);
}
- pSorter->pRecord = p;
- rc = fileWriterFinish(db, &writer, &pSorter->iWriteOff);
}
return rc;
+#endif /* SQLITE_MAX_WORKER_THREADS!=0 */
}
/*
** Add a record to the sorter.
*/
SQLITE_PRIVATE int sqlite3VdbeSorterWrite(
- sqlite3 *db, /* Database handle */
- const VdbeCursor *pCsr, /* Sorter cursor */
+ const VdbeCursor *pCsr, /* Sorter cursor */
Mem *pVal /* Memory cell containing record */
){
VdbeSorter *pSorter = pCsr->pSorter;
int rc = SQLITE_OK; /* Return Code */
SorterRecord *pNew; /* New list element */
- assert( pSorter );
- pSorter->nInMemory += sqlite3VarintLen(pVal->n) + pVal->n;
+ int bFlush; /* True to flush contents of memory to PMA */
+ int nReq; /* Bytes of memory required */
+ int nPMA; /* Bytes of PMA space required */
- pNew = (SorterRecord *)sqlite3DbMallocRaw(db, pVal->n + sizeof(SorterRecord));
- if( pNew==0 ){
- rc = SQLITE_NOMEM;
- }else{
- pNew->pVal = (void *)&pNew[1];
- memcpy(pNew->pVal, pVal->z, pVal->n);
- pNew->nVal = pVal->n;
- pNew->pNext = pSorter->pRecord;
- pSorter->pRecord = pNew;
- }
+ assert( pSorter );
- /* See if the contents of the sorter should now be written out. They
- ** are written out when either of the following are true:
+ /* Figure out whether or not the current contents of memory should be
+ ** flushed to a PMA before continuing. If so, do so.
+ **
+ ** If using the single large allocation mode (pSorter->aMemory!=0), then
+ ** flush the contents of memory to a new PMA if (a) at least one value is
+ ** already in memory and (b) the new value will not fit in memory.
+ **
+ ** Or, if using separate allocations for each record, flush the contents
+ ** of memory to a PMA if either of the following are true:
**
** * The total memory allocated for the in-memory list is greater
** than (page-size * cache-size), or
@@ -75807,161 +78754,778 @@ SQLITE_PRIVATE int sqlite3VdbeSorterWrite(
** * The total memory allocated for the in-memory list is greater
** than (page-size * 10) and sqlite3HeapNearlyFull() returns true.
*/
- if( rc==SQLITE_OK && pSorter->mxPmaSize>0 && (
- (pSorter->nInMemory>pSorter->mxPmaSize)
- || (pSorter->nInMemory>pSorter->mnPmaSize && sqlite3HeapNearlyFull())
- )){
-#ifdef SQLITE_DEBUG
- i64 nExpect = pSorter->iWriteOff
- + sqlite3VarintLen(pSorter->nInMemory)
- + pSorter->nInMemory;
+ nReq = pVal->n + sizeof(SorterRecord);
+ nPMA = pVal->n + sqlite3VarintLen(pVal->n);
+ if( pSorter->mxPmaSize ){
+ if( pSorter->list.aMemory ){
+ bFlush = pSorter->iMemory && (pSorter->iMemory+nReq) > pSorter->mxPmaSize;
+ }else{
+ bFlush = (
+ (pSorter->list.szPMA > pSorter->mxPmaSize)
+ || (pSorter->list.szPMA > pSorter->mnPmaSize && sqlite3HeapNearlyFull())
+ );
+ }
+ if( bFlush ){
+ rc = vdbeSorterFlushPMA(pSorter);
+ pSorter->list.szPMA = 0;
+ pSorter->iMemory = 0;
+ assert( rc!=SQLITE_OK || pSorter->list.pList==0 );
+ }
+ }
+
+ pSorter->list.szPMA += nPMA;
+ if( nPMA>pSorter->mxKeysize ){
+ pSorter->mxKeysize = nPMA;
+ }
+
+ if( pSorter->list.aMemory ){
+ int nMin = pSorter->iMemory + nReq;
+
+ if( nMin>pSorter->nMemory ){
+ u8 *aNew;
+ int nNew = pSorter->nMemory * 2;
+ while( nNew < nMin ) nNew = nNew*2;
+ if( nNew > pSorter->mxPmaSize ) nNew = pSorter->mxPmaSize;
+ if( nNew < nMin ) nNew = nMin;
+
+ aNew = sqlite3Realloc(pSorter->list.aMemory, nNew);
+ if( !aNew ) return SQLITE_NOMEM;
+ pSorter->list.pList = (SorterRecord*)(
+ aNew + ((u8*)pSorter->list.pList - pSorter->list.aMemory)
+ );
+ pSorter->list.aMemory = aNew;
+ pSorter->nMemory = nNew;
+ }
+
+ pNew = (SorterRecord*)&pSorter->list.aMemory[pSorter->iMemory];
+ pSorter->iMemory += ROUND8(nReq);
+ pNew->u.iNext = (int)((u8*)(pSorter->list.pList) - pSorter->list.aMemory);
+ }else{
+ pNew = (SorterRecord *)sqlite3Malloc(nReq);
+ if( pNew==0 ){
+ return SQLITE_NOMEM;
+ }
+ pNew->u.pNext = pSorter->list.pList;
+ }
+
+ memcpy(SRVAL(pNew), pVal->z, pVal->n);
+ pNew->nVal = pVal->n;
+ pSorter->list.pList = pNew;
+
+ return rc;
+}
+
+/*
+** Read keys from pIncr->pMerger and populate pIncr->aFile[1]. The format
+** of the data stored in aFile[1] is the same as that used by regular PMAs,
+** except that the number-of-bytes varint is omitted from the start.
+*/
+static int vdbeIncrPopulate(IncrMerger *pIncr){
+ int rc = SQLITE_OK;
+ int rc2;
+ i64 iStart = pIncr->iStartOff;
+ SorterFile *pOut = &pIncr->aFile[1];
+ SortSubtask *pTask = pIncr->pTask;
+ MergeEngine *pMerger = pIncr->pMerger;
+ PmaWriter writer;
+ assert( pIncr->bEof==0 );
+
+ vdbeSorterPopulateDebug(pTask, "enter");
+
+ vdbePmaWriterInit(pOut->pFd, &writer, pTask->pSorter->pgsz, iStart);
+ while( rc==SQLITE_OK ){
+ int dummy;
+ PmaReader *pReader = &pMerger->aReadr[ pMerger->aTree[1] ];
+ int nKey = pReader->nKey;
+ i64 iEof = writer.iWriteOff + writer.iBufEnd;
+
+ /* Check if the output file is full or if the input has been exhausted.
+ ** In either case exit the loop. */
+ if( pReader->pFd==0 ) break;
+ if( (iEof + nKey + sqlite3VarintLen(nKey))>(iStart + pIncr->mxSz) ) break;
+
+ /* Write the next key to the output. */
+ vdbePmaWriteVarint(&writer, nKey);
+ vdbePmaWriteBlob(&writer, pReader->aKey, nKey);
+ assert( pIncr->pMerger->pTask==pTask );
+ rc = vdbeMergeEngineStep(pIncr->pMerger, &dummy);
+ }
+
+ rc2 = vdbePmaWriterFinish(&writer, &pOut->iEof);
+ if( rc==SQLITE_OK ) rc = rc2;
+ vdbeSorterPopulateDebug(pTask, "exit");
+ return rc;
+}
+
+#if SQLITE_MAX_WORKER_THREADS>0
+/*
+** The main routine for background threads that populate aFile[1] of
+** multi-threaded IncrMerger objects.
+*/
+static void *vdbeIncrPopulateThread(void *pCtx){
+ IncrMerger *pIncr = (IncrMerger*)pCtx;
+ void *pRet = SQLITE_INT_TO_PTR( vdbeIncrPopulate(pIncr) );
+ pIncr->pTask->bDone = 1;
+ return pRet;
+}
+
+/*
+** Launch a background thread to populate aFile[1] of pIncr.
+*/
+static int vdbeIncrBgPopulate(IncrMerger *pIncr){
+ void *p = (void*)pIncr;
+ assert( pIncr->bUseThread );
+ return vdbeSorterCreateThread(pIncr->pTask, vdbeIncrPopulateThread, p);
+}
+#endif
+
+/*
+** This function is called when the PmaReader corresponding to pIncr has
+** finished reading the contents of aFile[0]. Its purpose is to "refill"
+** aFile[0] such that the PmaReader should start rereading it from the
+** beginning.
+**
+** For single-threaded objects, this is accomplished by literally reading
+** keys from pIncr->pMerger and repopulating aFile[0].
+**
+** For multi-threaded objects, all that is required is to wait until the
+** background thread is finished (if it is not already) and then swap
+** aFile[0] and aFile[1] in place. If the contents of pMerger have not
+** been exhausted, this function also launches a new background thread
+** to populate the new aFile[1].
+**
+** SQLITE_OK is returned on success, or an SQLite error code otherwise.
+*/
+static int vdbeIncrSwap(IncrMerger *pIncr){
+ int rc = SQLITE_OK;
+
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pIncr->bUseThread ){
+ rc = vdbeSorterJoinThread(pIncr->pTask);
+
+ if( rc==SQLITE_OK ){
+ SorterFile f0 = pIncr->aFile[0];
+ pIncr->aFile[0] = pIncr->aFile[1];
+ pIncr->aFile[1] = f0;
+ }
+
+ if( rc==SQLITE_OK ){
+ if( pIncr->aFile[0].iEof==pIncr->iStartOff ){
+ pIncr->bEof = 1;
+ }else{
+ rc = vdbeIncrBgPopulate(pIncr);
+ }
+ }
+ }else
#endif
- rc = vdbeSorterListToPMA(db, pCsr);
- pSorter->nInMemory = 0;
- assert( rc!=SQLITE_OK || (nExpect==pSorter->iWriteOff) );
+ {
+ rc = vdbeIncrPopulate(pIncr);
+ pIncr->aFile[0] = pIncr->aFile[1];
+ if( pIncr->aFile[0].iEof==pIncr->iStartOff ){
+ pIncr->bEof = 1;
+ }
}
return rc;
}
/*
-** Helper function for sqlite3VdbeSorterRewind().
+** Allocate and return a new IncrMerger object to read data from pMerger.
+**
+** If an OOM condition is encountered, return NULL. In this case free the
+** pMerger argument before returning.
*/
-static int vdbeSorterInitMerge(
- sqlite3 *db, /* Database handle */
- const VdbeCursor *pCsr, /* Cursor handle for this sorter */
- i64 *pnByte /* Sum of bytes in all opened PMAs */
+static int vdbeIncrMergerNew(
+ SortSubtask *pTask, /* The thread that will be using the new IncrMerger */
+ MergeEngine *pMerger, /* The MergeEngine that the IncrMerger will control */
+ IncrMerger **ppOut /* Write the new IncrMerger here */
){
- VdbeSorter *pSorter = pCsr->pSorter;
- int rc = SQLITE_OK; /* Return code */
- int i; /* Used to iterator through aIter[] */
- i64 nByte = 0; /* Total bytes in all opened PMAs */
+ int rc = SQLITE_OK;
+ IncrMerger *pIncr = *ppOut = (IncrMerger*)
+ (sqlite3FaultSim(100) ? 0 : sqlite3MallocZero(sizeof(*pIncr)));
+ if( pIncr ){
+ pIncr->pMerger = pMerger;
+ pIncr->pTask = pTask;
+ pIncr->mxSz = MAX(pTask->pSorter->mxKeysize+9,pTask->pSorter->mxPmaSize/2);
+ pTask->file2.iEof += pIncr->mxSz;
+ }else{
+ vdbeMergeEngineFree(pMerger);
+ rc = SQLITE_NOMEM;
+ }
+ return rc;
+}
+
+#if SQLITE_MAX_WORKER_THREADS>0
+/*
+** Set the "use-threads" flag on object pIncr.
+*/
+static void vdbeIncrMergerSetThreads(IncrMerger *pIncr){
+ pIncr->bUseThread = 1;
+ pIncr->pTask->file2.iEof -= pIncr->mxSz;
+}
+#endif /* SQLITE_MAX_WORKER_THREADS>0 */
+
+
+
+/*
+** Recompute pMerger->aTree[iOut] by comparing the next keys on the
+** two PmaReaders that feed that entry. Neither of the PmaReaders
+** are advanced. This routine merely does the comparison.
+*/
+static void vdbeMergeEngineCompare(
+ MergeEngine *pMerger, /* Merge engine containing PmaReaders to compare */
+ int iOut /* Store the result in pMerger->aTree[iOut] */
+){
+ int i1;
+ int i2;
+ int iRes;
+ PmaReader *p1;
+ PmaReader *p2;
- /* Initialize the iterators. */
- for(i=0; i<SORTER_MAX_MERGE_COUNT; i++){
- VdbeSorterIter *pIter = &pSorter->aIter[i];
- rc = vdbeSorterIterInit(db, pSorter, pSorter->iReadOff, pIter, &nByte);
- pSorter->iReadOff = pIter->iEof;
- assert( rc!=SQLITE_OK || pSorter->iReadOff<=pSorter->iWriteOff );
- if( rc!=SQLITE_OK || pSorter->iReadOff>=pSorter->iWriteOff ) break;
+ assert( iOut<pMerger->nTree && iOut>0 );
+
+ if( iOut>=(pMerger->nTree/2) ){
+ i1 = (iOut - pMerger->nTree/2) * 2;
+ i2 = i1 + 1;
+ }else{
+ i1 = pMerger->aTree[iOut*2];
+ i2 = pMerger->aTree[iOut*2+1];
}
- /* Initialize the aTree[] array. */
- for(i=pSorter->nTree-1; rc==SQLITE_OK && i>0; i--){
- rc = vdbeSorterDoCompare(pCsr, i);
+ p1 = &pMerger->aReadr[i1];
+ p2 = &pMerger->aReadr[i2];
+
+ if( p1->pFd==0 ){
+ iRes = i2;
+ }else if( p2->pFd==0 ){
+ iRes = i1;
+ }else{
+ int res;
+ assert( pMerger->pTask->pUnpacked!=0 ); /* from vdbeSortSubtaskMain() */
+ res = vdbeSorterCompare(
+ pMerger->pTask, p1->aKey, p1->nKey, p2->aKey, p2->nKey
+ );
+ if( res<=0 ){
+ iRes = i1;
+ }else{
+ iRes = i2;
+ }
}
- *pnByte = nByte;
- return rc;
+ pMerger->aTree[iOut] = iRes;
}
/*
-** Once the sorter has been populated, this function is called to prepare
-** for iterating through its contents in sorted order.
+** Allowed values for the eMode parameter to vdbeMergeEngineInit()
+** and vdbePmaReaderIncrMergeInit().
+**
+** Only INCRINIT_NORMAL is valid in single-threaded builds (when
+** SQLITE_MAX_WORKER_THREADS==0). The other values are only used
+** when there exists one or more separate worker threads.
*/
-SQLITE_PRIVATE int sqlite3VdbeSorterRewind(sqlite3 *db, const VdbeCursor *pCsr, int *pbEof){
- VdbeSorter *pSorter = pCsr->pSorter;
- int rc; /* Return code */
- sqlite3_file *pTemp2 = 0; /* Second temp file to use */
- i64 iWrite2 = 0; /* Write offset for pTemp2 */
- int nIter; /* Number of iterators used */
- int nByte; /* Bytes of space required for aIter/aTree */
- int N = 2; /* Power of 2 >= nIter */
+#define INCRINIT_NORMAL 0
+#define INCRINIT_TASK 1
+#define INCRINIT_ROOT 2
- assert( pSorter );
+/* Forward reference.
+** The vdbeIncrMergeInit() and vdbePmaReaderIncrMergeInit() routines call each
+** other (when building a merge tree).
+*/
+static int vdbePmaReaderIncrMergeInit(PmaReader *pReadr, int eMode);
- /* If no data has been written to disk, then do not do so now. Instead,
- ** sort the VdbeSorter.pRecord list. The vdbe layer will read data directly
- ** from the in-memory list. */
- if( pSorter->nPMA==0 ){
- *pbEof = !pSorter->pRecord;
- assert( pSorter->aTree==0 );
- return vdbeSorterSort(pCsr);
+/*
+** Initialize the MergeEngine object passed as the second argument. Once this
+** function returns, the first key of merged data may be read from the
+** MergeEngine object in the usual fashion.
+**
+** If argument eMode is INCRINIT_ROOT, then it is assumed that any IncrMerge
+** objects attached to the PmaReader objects that the merger reads from have
+** already been populated, but that they have not yet populated aFile[0] and
+** set the PmaReader objects up to read from it. In this case all that is
+** required is to call vdbePmaReaderNext() on each PmaReader to point it at
+** its first key.
+**
+** Otherwise, if eMode is any value other than INCRINIT_ROOT, then use
+** vdbePmaReaderIncrMergeInit() to initialize each PmaReader that feeds data
+** to pMerger.
+**
+** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+*/
+static int vdbeMergeEngineInit(
+ SortSubtask *pTask, /* Thread that will run pMerger */
+ MergeEngine *pMerger, /* MergeEngine to initialize */
+ int eMode /* One of the INCRINIT_XXX constants */
+){
+ int rc = SQLITE_OK; /* Return code */
+ int i; /* For looping over PmaReader objects */
+ int nTree = pMerger->nTree;
+
+ /* eMode is always INCRINIT_NORMAL in single-threaded mode */
+ assert( SQLITE_MAX_WORKER_THREADS>0 || eMode==INCRINIT_NORMAL );
+
+ /* Verify that the MergeEngine is assigned to a single thread */
+ assert( pMerger->pTask==0 );
+ pMerger->pTask = pTask;
+
+ for(i=0; i<nTree; i++){
+ if( SQLITE_MAX_WORKER_THREADS>0 && eMode==INCRINIT_ROOT ){
+ /* PmaReaders should be normally initialized in order, as if they are
+ ** reading from the same temp file this makes for more linear file IO.
+ ** However, in the INCRINIT_ROOT case, if PmaReader aReadr[nTask-1] is
+ ** in use it will block the vdbePmaReaderNext() call while it uses
+ ** the main thread to fill its buffer. So calling PmaReaderNext()
+ ** on this PmaReader before any of the multi-threaded PmaReaders takes
+ ** better advantage of multi-processor hardware. */
+ rc = vdbePmaReaderNext(&pMerger->aReadr[nTree-i-1]);
+ }else{
+ rc = vdbePmaReaderIncrMergeInit(&pMerger->aReadr[i], INCRINIT_NORMAL);
+ }
+ if( rc!=SQLITE_OK ) return rc;
}
- /* Write the current in-memory list to a PMA. */
- rc = vdbeSorterListToPMA(db, pCsr);
- if( rc!=SQLITE_OK ) return rc;
+ for(i=pMerger->nTree-1; i>0; i--){
+ vdbeMergeEngineCompare(pMerger, i);
+ }
+ return pTask->pUnpacked->errCode;
+}
+
+/*
+** Initialize the IncrMerge field of a PmaReader.
+**
+** If the PmaReader passed as the first argument is not an incremental-reader
+** (if pReadr->pIncr==0), then this function is a no-op. Otherwise, it serves
+** to open and/or initialize the temp file related fields of the IncrMerge
+** object at (pReadr->pIncr).
+**
+** If argument eMode is set to INCRINIT_NORMAL, then all PmaReaders
+** in the sub-tree headed by pReadr are also initialized. Data is then loaded
+** into the buffers belonging to pReadr and it is set to
+** point to the first key in its range.
+**
+** If argument eMode is set to INCRINIT_TASK, then pReadr is guaranteed
+** to be a multi-threaded PmaReader and this function is being called in a
+** background thread. In this case all PmaReaders in the sub-tree are
+** initialized as for INCRINIT_NORMAL and the aFile[1] buffer belonging to
+** pReadr is populated. However, pReadr itself is not set up to point
+** to its first key. A call to vdbePmaReaderNext() is still required to do
+** that.
+**
+** The reason this function does not call vdbePmaReaderNext() immediately
+** in the INCRINIT_TASK case is that vdbePmaReaderNext() assumes that it has
+** to block on thread (pTask->thread) before accessing aFile[1]. But, since
+** this entire function is being run by thread (pTask->thread), that will
+** lead to the current background thread attempting to join itself.
+**
+** Finally, if argument eMode is set to INCRINIT_ROOT, it may be assumed
+** that pReadr->pIncr is a multi-threaded IncrMerge objects, and that all
+** child-trees have already been initialized using IncrInit(INCRINIT_TASK).
+** In this case vdbePmaReaderNext() is called on all child PmaReaders and
+** the current PmaReader set to point to the first key in its range.
+**
+** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+*/
+static int vdbePmaReaderIncrMergeInit(PmaReader *pReadr, int eMode){
+ int rc = SQLITE_OK;
+ IncrMerger *pIncr = pReadr->pIncr;
- /* Allocate space for aIter[] and aTree[]. */
- nIter = pSorter->nPMA;
- if( nIter>SORTER_MAX_MERGE_COUNT ) nIter = SORTER_MAX_MERGE_COUNT;
- assert( nIter>0 );
- while( N<nIter ) N += N;
- nByte = N * (sizeof(int) + sizeof(VdbeSorterIter));
- pSorter->aIter = (VdbeSorterIter *)sqlite3DbMallocZero(db, nByte);
- if( !pSorter->aIter ) return SQLITE_NOMEM;
- pSorter->aTree = (int *)&pSorter->aIter[N];
- pSorter->nTree = N;
+ /* eMode is always INCRINIT_NORMAL in single-threaded mode */
+ assert( SQLITE_MAX_WORKER_THREADS>0 || eMode==INCRINIT_NORMAL );
- do {
- int iNew; /* Index of new, merged, PMA */
+ if( pIncr ){
+ SortSubtask *pTask = pIncr->pTask;
+ sqlite3 *db = pTask->pSorter->db;
+
+ rc = vdbeMergeEngineInit(pTask, pIncr->pMerger, eMode);
+
+ /* Set up the required files for pIncr. A multi-theaded IncrMerge object
+ ** requires two temp files to itself, whereas a single-threaded object
+ ** only requires a region of pTask->file2. */
+ if( rc==SQLITE_OK ){
+ int mxSz = pIncr->mxSz;
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pIncr->bUseThread ){
+ rc = vdbeSorterOpenTempFile(db, mxSz, &pIncr->aFile[0].pFd);
+ if( rc==SQLITE_OK ){
+ rc = vdbeSorterOpenTempFile(db, mxSz, &pIncr->aFile[1].pFd);
+ }
+ }else
+#endif
+ /*if( !pIncr->bUseThread )*/{
+ if( pTask->file2.pFd==0 ){
+ assert( pTask->file2.iEof>0 );
+ rc = vdbeSorterOpenTempFile(db, pTask->file2.iEof, &pTask->file2.pFd);
+ pTask->file2.iEof = 0;
+ }
+ if( rc==SQLITE_OK ){
+ pIncr->aFile[1].pFd = pTask->file2.pFd;
+ pIncr->iStartOff = pTask->file2.iEof;
+ pTask->file2.iEof += mxSz;
+ }
+ }
+ }
- for(iNew=0;
- rc==SQLITE_OK && iNew*SORTER_MAX_MERGE_COUNT<pSorter->nPMA;
- iNew++
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( rc==SQLITE_OK && pIncr->bUseThread ){
+ /* Use the current thread to populate aFile[1], even though this
+ ** PmaReader is multi-threaded. The reason being that this function
+ ** is already running in background thread pIncr->pTask->thread. */
+ assert( eMode==INCRINIT_ROOT || eMode==INCRINIT_TASK );
+ rc = vdbeIncrPopulate(pIncr);
+ }
+#endif
+
+ if( rc==SQLITE_OK
+ && (SQLITE_MAX_WORKER_THREADS==0 || eMode!=INCRINIT_TASK)
){
- int rc2; /* Return code from fileWriterFinish() */
- FileWriter writer; /* Object used to write to disk */
- i64 nWrite; /* Number of bytes in new PMA */
+ rc = vdbePmaReaderNext(pReadr);
+ }
+ }
+ return rc;
+}
- memset(&writer, 0, sizeof(FileWriter));
+#if SQLITE_MAX_WORKER_THREADS>0
+/*
+** The main routine for vdbePmaReaderIncrMergeInit() operations run in
+** background threads.
+*/
+static void *vdbePmaReaderBgInit(void *pCtx){
+ PmaReader *pReader = (PmaReader*)pCtx;
+ void *pRet = SQLITE_INT_TO_PTR(
+ vdbePmaReaderIncrMergeInit(pReader,INCRINIT_TASK)
+ );
+ pReader->pIncr->pTask->bDone = 1;
+ return pRet;
+}
- /* If there are SORTER_MAX_MERGE_COUNT or less PMAs in file pTemp1,
- ** initialize an iterator for each of them and break out of the loop.
- ** These iterators will be incrementally merged as the VDBE layer calls
- ** sqlite3VdbeSorterNext().
- **
- ** Otherwise, if pTemp1 contains more than SORTER_MAX_MERGE_COUNT PMAs,
- ** initialize interators for SORTER_MAX_MERGE_COUNT of them. These PMAs
- ** are merged into a single PMA that is written to file pTemp2.
- */
- rc = vdbeSorterInitMerge(db, pCsr, &nWrite);
- assert( rc!=SQLITE_OK || pSorter->aIter[ pSorter->aTree[1] ].pFile );
- if( rc!=SQLITE_OK || pSorter->nPMA<=SORTER_MAX_MERGE_COUNT ){
- break;
+/*
+** Use a background thread to invoke vdbePmaReaderIncrMergeInit(INCRINIT_TASK)
+** on the PmaReader object passed as the first argument.
+**
+** This call will initialize the various fields of the pReadr->pIncr
+** structure and, if it is a multi-threaded IncrMerger, launch a
+** background thread to populate aFile[1].
+*/
+static int vdbePmaReaderBgIncrInit(PmaReader *pReadr){
+ void *pCtx = (void*)pReadr;
+ return vdbeSorterCreateThread(pReadr->pIncr->pTask, vdbePmaReaderBgInit, pCtx);
+}
+#endif
+
+/*
+** Allocate a new MergeEngine object to merge the contents of nPMA level-0
+** PMAs from pTask->file. If no error occurs, set *ppOut to point to
+** the new object and return SQLITE_OK. Or, if an error does occur, set *ppOut
+** to NULL and return an SQLite error code.
+**
+** When this function is called, *piOffset is set to the offset of the
+** first PMA to read from pTask->file. Assuming no error occurs, it is
+** set to the offset immediately following the last byte of the last
+** PMA before returning. If an error does occur, then the final value of
+** *piOffset is undefined.
+*/
+static int vdbeMergeEngineLevel0(
+ SortSubtask *pTask, /* Sorter task to read from */
+ int nPMA, /* Number of PMAs to read */
+ i64 *piOffset, /* IN/OUT: Readr offset in pTask->file */
+ MergeEngine **ppOut /* OUT: New merge-engine */
+){
+ MergeEngine *pNew; /* Merge engine to return */
+ i64 iOff = *piOffset;
+ int i;
+ int rc = SQLITE_OK;
+
+ *ppOut = pNew = vdbeMergeEngineNew(nPMA);
+ if( pNew==0 ) rc = SQLITE_NOMEM;
+
+ for(i=0; i<nPMA && rc==SQLITE_OK; i++){
+ i64 nDummy;
+ PmaReader *pReadr = &pNew->aReadr[i];
+ rc = vdbePmaReaderInit(pTask, &pTask->file, iOff, pReadr, &nDummy);
+ iOff = pReadr->iEof;
+ }
+
+ if( rc!=SQLITE_OK ){
+ vdbeMergeEngineFree(pNew);
+ *ppOut = 0;
+ }
+ *piOffset = iOff;
+ return rc;
+}
+
+/*
+** Return the depth of a tree comprising nPMA PMAs, assuming a fanout of
+** SORTER_MAX_MERGE_COUNT. The returned value does not include leaf nodes.
+**
+** i.e.
+**
+** nPMA<=16 -> TreeDepth() == 0
+** nPMA<=256 -> TreeDepth() == 1
+** nPMA<=65536 -> TreeDepth() == 2
+*/
+static int vdbeSorterTreeDepth(int nPMA){
+ int nDepth = 0;
+ i64 nDiv = SORTER_MAX_MERGE_COUNT;
+ while( nDiv < (i64)nPMA ){
+ nDiv = nDiv * SORTER_MAX_MERGE_COUNT;
+ nDepth++;
+ }
+ return nDepth;
+}
+
+/*
+** pRoot is the root of an incremental merge-tree with depth nDepth (according
+** to vdbeSorterTreeDepth()). pLeaf is the iSeq'th leaf to be added to the
+** tree, counting from zero. This function adds pLeaf to the tree.
+**
+** If successful, SQLITE_OK is returned. If an error occurs, an SQLite error
+** code is returned and pLeaf is freed.
+*/
+static int vdbeSorterAddToTree(
+ SortSubtask *pTask, /* Task context */
+ int nDepth, /* Depth of tree according to TreeDepth() */
+ int iSeq, /* Sequence number of leaf within tree */
+ MergeEngine *pRoot, /* Root of tree */
+ MergeEngine *pLeaf /* Leaf to add to tree */
+){
+ int rc = SQLITE_OK;
+ int nDiv = 1;
+ int i;
+ MergeEngine *p = pRoot;
+ IncrMerger *pIncr;
+
+ rc = vdbeIncrMergerNew(pTask, pLeaf, &pIncr);
+
+ for(i=1; i<nDepth; i++){
+ nDiv = nDiv * SORTER_MAX_MERGE_COUNT;
+ }
+
+ for(i=1; i<nDepth && rc==SQLITE_OK; i++){
+ int iIter = (iSeq / nDiv) % SORTER_MAX_MERGE_COUNT;
+ PmaReader *pReadr = &p->aReadr[iIter];
+
+ if( pReadr->pIncr==0 ){
+ MergeEngine *pNew = vdbeMergeEngineNew(SORTER_MAX_MERGE_COUNT);
+ if( pNew==0 ){
+ rc = SQLITE_NOMEM;
+ }else{
+ rc = vdbeIncrMergerNew(pTask, pNew, &pReadr->pIncr);
}
+ }
+ if( rc==SQLITE_OK ){
+ p = pReadr->pIncr->pMerger;
+ nDiv = nDiv / SORTER_MAX_MERGE_COUNT;
+ }
+ }
+
+ if( rc==SQLITE_OK ){
+ p->aReadr[iSeq % SORTER_MAX_MERGE_COUNT].pIncr = pIncr;
+ }else{
+ vdbeIncrFree(pIncr);
+ }
+ return rc;
+}
+
+/*
+** This function is called as part of a SorterRewind() operation on a sorter
+** that has already written two or more level-0 PMAs to one or more temp
+** files. It builds a tree of MergeEngine/IncrMerger/PmaReader objects that
+** can be used to incrementally merge all PMAs on disk.
+**
+** If successful, SQLITE_OK is returned and *ppOut set to point to the
+** MergeEngine object at the root of the tree before returning. Or, if an
+** error occurs, an SQLite error code is returned and the final value
+** of *ppOut is undefined.
+*/
+static int vdbeSorterMergeTreeBuild(
+ VdbeSorter *pSorter, /* The VDBE cursor that implements the sort */
+ MergeEngine **ppOut /* Write the MergeEngine here */
+){
+ MergeEngine *pMain = 0;
+ int rc = SQLITE_OK;
+ int iTask;
+
+#if SQLITE_MAX_WORKER_THREADS>0
+ /* If the sorter uses more than one task, then create the top-level
+ ** MergeEngine here. This MergeEngine will read data from exactly
+ ** one PmaReader per sub-task. */
+ assert( pSorter->bUseThreads || pSorter->nTask==1 );
+ if( pSorter->nTask>1 ){
+ pMain = vdbeMergeEngineNew(pSorter->nTask);
+ if( pMain==0 ) rc = SQLITE_NOMEM;
+ }
+#endif
- /* Open the second temp file, if it is not already open. */
- if( pTemp2==0 ){
- assert( iWrite2==0 );
- rc = vdbeSorterOpenTempFile(db, &pTemp2);
+ for(iTask=0; rc==SQLITE_OK && iTask<pSorter->nTask; iTask++){
+ SortSubtask *pTask = &pSorter->aTask[iTask];
+ assert( pTask->nPMA>0 || SQLITE_MAX_WORKER_THREADS>0 );
+ if( SQLITE_MAX_WORKER_THREADS==0 || pTask->nPMA ){
+ MergeEngine *pRoot = 0; /* Root node of tree for this task */
+ int nDepth = vdbeSorterTreeDepth(pTask->nPMA);
+ i64 iReadOff = 0;
+
+ if( pTask->nPMA<=SORTER_MAX_MERGE_COUNT ){
+ rc = vdbeMergeEngineLevel0(pTask, pTask->nPMA, &iReadOff, &pRoot);
+ }else{
+ int i;
+ int iSeq = 0;
+ pRoot = vdbeMergeEngineNew(SORTER_MAX_MERGE_COUNT);
+ if( pRoot==0 ) rc = SQLITE_NOMEM;
+ for(i=0; i<pTask->nPMA && rc==SQLITE_OK; i += SORTER_MAX_MERGE_COUNT){
+ MergeEngine *pMerger = 0; /* New level-0 PMA merger */
+ int nReader; /* Number of level-0 PMAs to merge */
+
+ nReader = MIN(pTask->nPMA - i, SORTER_MAX_MERGE_COUNT);
+ rc = vdbeMergeEngineLevel0(pTask, nReader, &iReadOff, &pMerger);
+ if( rc==SQLITE_OK ){
+ rc = vdbeSorterAddToTree(pTask, nDepth, iSeq++, pRoot, pMerger);
+ }
+ }
}
if( rc==SQLITE_OK ){
- int bEof = 0;
- fileWriterInit(db, pTemp2, &writer, iWrite2);
- fileWriterWriteVarint(&writer, nWrite);
- while( rc==SQLITE_OK && bEof==0 ){
- VdbeSorterIter *pIter = &pSorter->aIter[ pSorter->aTree[1] ];
- assert( pIter->pFile );
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pMain!=0 ){
+ rc = vdbeIncrMergerNew(pTask, pRoot, &pMain->aReadr[iTask].pIncr);
+ }else
+#endif
+ {
+ assert( pMain==0 );
+ pMain = pRoot;
+ }
+ }else{
+ vdbeMergeEngineFree(pRoot);
+ }
+ }
+ }
+
+ if( rc!=SQLITE_OK ){
+ vdbeMergeEngineFree(pMain);
+ pMain = 0;
+ }
+ *ppOut = pMain;
+ return rc;
+}
+
+/*
+** This function is called as part of an sqlite3VdbeSorterRewind() operation
+** on a sorter that has written two or more PMAs to temporary files. It sets
+** up either VdbeSorter.pMerger (for single threaded sorters) or pReader
+** (for multi-threaded sorters) so that it can be used to iterate through
+** all records stored in the sorter.
+**
+** SQLITE_OK is returned if successful, or an SQLite error code otherwise.
+*/
+static int vdbeSorterSetupMerge(VdbeSorter *pSorter){
+ int rc; /* Return code */
+ SortSubtask *pTask0 = &pSorter->aTask[0];
+ MergeEngine *pMain = 0;
+#if SQLITE_MAX_WORKER_THREADS
+ sqlite3 *db = pTask0->pSorter->db;
+#endif
- fileWriterWriteVarint(&writer, pIter->nKey);
- fileWriterWrite(&writer, pIter->aKey, pIter->nKey);
- rc = sqlite3VdbeSorterNext(db, pCsr, &bEof);
+ rc = vdbeSorterMergeTreeBuild(pSorter, &pMain);
+ if( rc==SQLITE_OK ){
+#if SQLITE_MAX_WORKER_THREADS
+ assert( pSorter->bUseThreads==0 || pSorter->nTask>1 );
+ if( pSorter->bUseThreads ){
+ int iTask;
+ PmaReader *pReadr = 0;
+ SortSubtask *pLast = &pSorter->aTask[pSorter->nTask-1];
+ rc = vdbeSortAllocUnpacked(pLast);
+ if( rc==SQLITE_OK ){
+ pReadr = (PmaReader*)sqlite3DbMallocZero(db, sizeof(PmaReader));
+ pSorter->pReader = pReadr;
+ if( pReadr==0 ) rc = SQLITE_NOMEM;
+ }
+ if( rc==SQLITE_OK ){
+ rc = vdbeIncrMergerNew(pLast, pMain, &pReadr->pIncr);
+ if( rc==SQLITE_OK ){
+ vdbeIncrMergerSetThreads(pReadr->pIncr);
+ for(iTask=0; iTask<(pSorter->nTask-1); iTask++){
+ IncrMerger *pIncr;
+ if( (pIncr = pMain->aReadr[iTask].pIncr) ){
+ vdbeIncrMergerSetThreads(pIncr);
+ assert( pIncr->pTask!=pLast );
+ }
+ }
+ for(iTask=0; rc==SQLITE_OK && iTask<pSorter->nTask; iTask++){
+ PmaReader *p = &pMain->aReadr[iTask];
+ assert( p->pIncr==0 || p->pIncr->pTask==&pSorter->aTask[iTask] );
+ if( p->pIncr ){
+ if( iTask==pSorter->nTask-1 ){
+ rc = vdbePmaReaderIncrMergeInit(p, INCRINIT_TASK);
+ }else{
+ rc = vdbePmaReaderBgIncrInit(p);
+ }
+ }
+ }
}
- rc2 = fileWriterFinish(db, &writer, &iWrite2);
- if( rc==SQLITE_OK ) rc = rc2;
+ pMain = 0;
+ }
+ if( rc==SQLITE_OK ){
+ rc = vdbePmaReaderIncrMergeInit(pReadr, INCRINIT_ROOT);
}
+ }else
+#endif
+ {
+ rc = vdbeMergeEngineInit(pTask0, pMain, INCRINIT_NORMAL);
+ pSorter->pMerger = pMain;
+ pMain = 0;
}
+ }
- if( pSorter->nPMA<=SORTER_MAX_MERGE_COUNT ){
- break;
+ if( rc!=SQLITE_OK ){
+ vdbeMergeEngineFree(pMain);
+ }
+ return rc;
+}
+
+
+/*
+** Once the sorter has been populated by calls to sqlite3VdbeSorterWrite,
+** this function is called to prepare for iterating through the records
+** in sorted order.
+*/
+SQLITE_PRIVATE int sqlite3VdbeSorterRewind(const VdbeCursor *pCsr, int *pbEof){
+ VdbeSorter *pSorter = pCsr->pSorter;
+ int rc = SQLITE_OK; /* Return code */
+
+ assert( pSorter );
+
+ /* If no data has been written to disk, then do not do so now. Instead,
+ ** sort the VdbeSorter.pRecord list. The vdbe layer will read data directly
+ ** from the in-memory list. */
+ if( pSorter->bUsePMA==0 ){
+ if( pSorter->list.pList ){
+ *pbEof = 0;
+ rc = vdbeSorterSort(&pSorter->aTask[0], &pSorter->list);
}else{
- sqlite3_file *pTmp = pSorter->pTemp1;
- pSorter->nPMA = iNew;
- pSorter->pTemp1 = pTemp2;
- pTemp2 = pTmp;
- pSorter->iWriteOff = iWrite2;
- pSorter->iReadOff = 0;
- iWrite2 = 0;
+ *pbEof = 1;
}
- }while( rc==SQLITE_OK );
+ return rc;
+ }
+
+ /* Write the current in-memory list to a PMA. When the VdbeSorterWrite()
+ ** function flushes the contents of memory to disk, it immediately always
+ ** creates a new list consisting of a single key immediately afterwards.
+ ** So the list is never empty at this point. */
+ assert( pSorter->list.pList );
+ rc = vdbeSorterFlushPMA(pSorter);
+
+ /* Join all threads */
+ rc = vdbeSorterJoinAll(pSorter, rc);
+
+ vdbeSorterRewindDebug("rewind");
- if( pTemp2 ){
- sqlite3OsCloseFree(pTemp2);
+ /* Assuming no errors have occurred, set up a merger structure to
+ ** incrementally read and merge all remaining PMAs. */
+ assert( pSorter->pReader==0 );
+ if( rc==SQLITE_OK ){
+ rc = vdbeSorterSetupMerge(pSorter);
+ *pbEof = 0;
}
- *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0);
+
+ vdbeSorterRewindDebug("rewinddone");
return rc;
}
@@ -75972,63 +79536,28 @@ SQLITE_PRIVATE int sqlite3VdbeSorterNext(sqlite3 *db, const VdbeCursor *pCsr, in
VdbeSorter *pSorter = pCsr->pSorter;
int rc; /* Return code */
- if( pSorter->aTree ){
- int iPrev = pSorter->aTree[1];/* Index of iterator to advance */
- rc = vdbeSorterIterNext(db, &pSorter->aIter[iPrev]);
- if( rc==SQLITE_OK ){
- int i; /* Index of aTree[] to recalculate */
- VdbeSorterIter *pIter1; /* First iterator to compare */
- VdbeSorterIter *pIter2; /* Second iterator to compare */
- u8 *pKey2; /* To pIter2->aKey, or 0 if record cached */
-
- /* Find the first two iterators to compare. The one that was just
- ** advanced (iPrev) and the one next to it in the array. */
- pIter1 = &pSorter->aIter[(iPrev & 0xFFFE)];
- pIter2 = &pSorter->aIter[(iPrev | 0x0001)];
- pKey2 = pIter2->aKey;
-
- for(i=(pSorter->nTree+iPrev)/2; i>0; i=i/2){
- /* Compare pIter1 and pIter2. Store the result in variable iRes. */
- int iRes;
- if( pIter1->pFile==0 ){
- iRes = +1;
- }else if( pIter2->pFile==0 ){
- iRes = -1;
- }else{
- vdbeSorterCompare(pCsr, 0,
- pIter1->aKey, pIter1->nKey, pKey2, pIter2->nKey, &iRes
- );
- }
-
- /* If pIter1 contained the smaller value, set aTree[i] to its index.
- ** Then set pIter2 to the next iterator to compare to pIter1. In this
- ** case there is no cache of pIter2 in pSorter->pUnpacked, so set
- ** pKey2 to point to the record belonging to pIter2.
- **
- ** Alternatively, if pIter2 contains the smaller of the two values,
- ** set aTree[i] to its index and update pIter1. If vdbeSorterCompare()
- ** was actually called above, then pSorter->pUnpacked now contains
- ** a value equivalent to pIter2. So set pKey2 to NULL to prevent
- ** vdbeSorterCompare() from decoding pIter2 again. */
- if( iRes<=0 ){
- pSorter->aTree[i] = (int)(pIter1 - pSorter->aIter);
- pIter2 = &pSorter->aIter[ pSorter->aTree[i ^ 0x0001] ];
- pKey2 = pIter2->aKey;
- }else{
- if( pIter1->pFile ) pKey2 = 0;
- pSorter->aTree[i] = (int)(pIter2 - pSorter->aIter);
- pIter1 = &pSorter->aIter[ pSorter->aTree[i ^ 0x0001] ];
- }
-
- }
- *pbEof = (pSorter->aIter[pSorter->aTree[1]].pFile==0);
+ assert( pSorter->bUsePMA || (pSorter->pReader==0 && pSorter->pMerger==0) );
+ if( pSorter->bUsePMA ){
+ assert( pSorter->pReader==0 || pSorter->pMerger==0 );
+ assert( pSorter->bUseThreads==0 || pSorter->pReader );
+ assert( pSorter->bUseThreads==1 || pSorter->pMerger );
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pSorter->bUseThreads ){
+ rc = vdbePmaReaderNext(pSorter->pReader);
+ *pbEof = (pSorter->pReader->pFd==0);
+ }else
+#endif
+ /*if( !pSorter->bUseThreads )*/ {
+ assert( pSorter->pMerger!=0 );
+ assert( pSorter->pMerger->pTask==(&pSorter->aTask[0]) );
+ rc = vdbeMergeEngineStep(pSorter->pMerger, pbEof);
}
}else{
- SorterRecord *pFree = pSorter->pRecord;
- pSorter->pRecord = pFree->pNext;
- pFree->pNext = 0;
- vdbeSorterRecordFree(db, pFree);
- *pbEof = !pSorter->pRecord;
+ SorterRecord *pFree = pSorter->list.pList;
+ pSorter->list.pList = pFree->u.pNext;
+ pFree->u.pNext = 0;
+ if( pSorter->list.aMemory==0 ) vdbeSorterRecordFree(db, pFree);
+ *pbEof = !pSorter->list.pList;
rc = SQLITE_OK;
}
return rc;
@@ -76043,14 +79572,21 @@ static void *vdbeSorterRowkey(
int *pnKey /* OUT: Size of current key in bytes */
){
void *pKey;
- if( pSorter->aTree ){
- VdbeSorterIter *pIter;
- pIter = &pSorter->aIter[ pSorter->aTree[1] ];
- *pnKey = pIter->nKey;
- pKey = pIter->aKey;
+ if( pSorter->bUsePMA ){
+ PmaReader *pReader;
+#if SQLITE_MAX_WORKER_THREADS>0
+ if( pSorter->bUseThreads ){
+ pReader = pSorter->pReader;
+ }else
+#endif
+ /*if( !pSorter->bUseThreads )*/{
+ pReader = &pSorter->pMerger->aReadr[pSorter->pMerger->aTree[1]];
+ }
+ *pnKey = pReader->nKey;
+ pKey = pReader->aKey;
}else{
- *pnKey = pSorter->pRecord->nVal;
- pKey = pSorter->pRecord->pVal;
+ *pnKey = pSorter->list.pList->nVal;
+ pKey = SRVAL(pSorter->list.pList);
}
return pKey;
}
@@ -76063,7 +79599,7 @@ SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *pCsr, Mem *pOut){
void *pKey; int nKey; /* Sorter key to copy into pOut */
pKey = vdbeSorterRowkey(pSorter, &nKey);
- if( sqlite3VdbeMemGrow(pOut, nKey, 0) ){
+ if( sqlite3VdbeMemClearAndResize(pOut, nKey) ){
return SQLITE_NOMEM;
}
pOut->n = nKey;
@@ -76078,22 +79614,48 @@ SQLITE_PRIVATE int sqlite3VdbeSorterRowkey(const VdbeCursor *pCsr, Mem *pOut){
** passed as the first argument currently points to. For the purposes of
** the comparison, ignore the rowid field at the end of each record.
**
+** If the sorter cursor key contains any NULL values, consider it to be
+** less than pVal. Even if pVal also contains NULL values.
+**
** If an error occurs, return an SQLite error code (i.e. SQLITE_NOMEM).
** Otherwise, set *pRes to a negative, zero or positive value if the
** key in pVal is smaller than, equal to or larger than the current sorter
** key.
+**
+** This routine forms the core of the OP_SorterCompare opcode, which in
+** turn is used to verify uniqueness when constructing a UNIQUE INDEX.
*/
SQLITE_PRIVATE int sqlite3VdbeSorterCompare(
const VdbeCursor *pCsr, /* Sorter cursor */
Mem *pVal, /* Value to compare to current sorter key */
- int nKeyCol, /* Only compare this many fields */
+ int nKeyCol, /* Compare this many columns */
int *pRes /* OUT: Result of comparison */
){
VdbeSorter *pSorter = pCsr->pSorter;
+ UnpackedRecord *r2 = pSorter->pUnpacked;
+ KeyInfo *pKeyInfo = pCsr->pKeyInfo;
+ int i;
void *pKey; int nKey; /* Sorter key to compare pVal with */
+ if( r2==0 ){
+ char *p;
+ r2 = pSorter->pUnpacked = sqlite3VdbeAllocUnpackedRecord(pKeyInfo,0,0,&p);
+ assert( pSorter->pUnpacked==(UnpackedRecord*)p );
+ if( r2==0 ) return SQLITE_NOMEM;
+ r2->nField = nKeyCol;
+ }
+ assert( r2->nField==nKeyCol );
+
pKey = vdbeSorterRowkey(pSorter, &nKey);
- vdbeSorterCompare(pCsr, nKeyCol, pVal->z, pVal->n, pKey, nKey, pRes);
+ sqlite3VdbeRecordUnpack(pKeyInfo, nKey, pKey, r2);
+ for(i=0; i<nKeyCol; i++){
+ if( r2->aMem[i].flags & MEM_Null ){
+ *pRes = -1;
+ return SQLITE_OK;
+ }
+ }
+
+ *pRes = sqlite3VdbeRecordCompare(pVal->n, pVal->z, r2);
return SQLITE_OK;
}
@@ -76384,7 +79946,7 @@ typedef struct FileChunk FileChunk;
**
** The size chosen is a little less than a power of two. That way,
** the FileChunk object will have a size that almost exactly fills
-** a power-of-two allocation. This mimimizes wasted space in power-of-two
+** a power-of-two allocation. This minimizes wasted space in power-of-two
** memory allocators.
*/
#define JOURNAL_CHUNKSIZE ((int)(1024-sizeof(FileChunk*)))
@@ -76634,7 +80196,7 @@ SQLITE_PRIVATE int sqlite3MemJournalSize(void){
/*
** Walk an expression tree. Invoke the callback once for each node
-** of the expression, while decending. (In other words, the callback
+** of the expression, while descending. (In other words, the callback
** is invoked before visiting children.)
**
** The return value from the callback should be one of the WRC_*
@@ -76799,7 +80361,7 @@ SQLITE_PRIVATE int sqlite3WalkSelect(Walker *pWalker, Select *p){
** is a helper function - a callback for the tree walker.
*/
static int incrAggDepth(Walker *pWalker, Expr *pExpr){
- if( pExpr->op==TK_AGG_FUNCTION ) pExpr->op2 += pWalker->u.i;
+ if( pExpr->op==TK_AGG_FUNCTION ) pExpr->op2 += pWalker->u.n;
return WRC_Continue;
}
static void incrAggFunctionDepth(Expr *pExpr, int N){
@@ -76807,7 +80369,7 @@ static void incrAggFunctionDepth(Expr *pExpr, int N){
Walker w;
memset(&w, 0, sizeof(w));
w.xExprCallback = incrAggDepth;
- w.u.i = N;
+ w.u.n = N;
sqlite3WalkExpr(&w, pExpr);
}
}
@@ -77091,6 +80653,10 @@ static int lookupName(
if( pMatch ){
pExpr->iTable = pMatch->iCursor;
pExpr->pTab = pMatch->pTab;
+ assert( (pMatch->jointype & JT_RIGHT)==0 ); /* RIGHT JOIN not (yet) supported */
+ if( (pMatch->jointype & JT_LEFT)!=0 ){
+ ExprSetProperty(pExpr, EP_CanBeNull);
+ }
pSchema = pExpr->pTab->pSchema;
}
} /* if( pSrcList ) */
@@ -77355,7 +80921,7 @@ static int exprProbability(Expr *p){
sqlite3AtoF(p->u.zToken, &r, sqlite3Strlen30(p->u.zToken), SQLITE_UTF8);
assert( r>=0.0 );
if( r>1.0 ) return -1;
- return (int)(r*1000.0);
+ return (int)(r*134217728.0);
}
/*
@@ -77487,12 +81053,10 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
** EVIDENCE-OF: R-53436-40973 The likely(X) function is equivalent to
** likelihood(X,0.9375). */
/* TUNING: unlikely() probability is 0.0625. likely() is 0.9375 */
- pExpr->iTable = pDef->zName[0]=='u' ? 62 : 938;
+ pExpr->iTable = pDef->zName[0]=='u' ? 8388608 : 125829120;
}
}
- }
#ifndef SQLITE_OMIT_AUTHORIZATION
- if( pDef ){
auth = sqlite3AuthCheck(pParse, SQLITE_FUNCTION, 0, pDef->zName, 0);
if( auth!=SQLITE_OK ){
if( auth==SQLITE_DENY ){
@@ -77503,9 +81067,9 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
pExpr->op = TK_NULL;
return WRC_Prune;
}
+#endif
if( pDef->funcFlags & SQLITE_FUNC_CONSTANT ) ExprSetProperty(pExpr,EP_Constant);
}
-#endif
if( is_agg && (pNC->ncFlags & NC_AllowAgg)==0 ){
sqlite3ErrorMsg(pParse, "misuse of aggregate function %.*s()", nId,zId);
pNC->nErr++;
@@ -77528,7 +81092,13 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
pExpr->op2++;
pNC2 = pNC2->pNext;
}
- if( pNC2 ) pNC2->ncFlags |= NC_HasAgg;
+ assert( pDef!=0 );
+ if( pNC2 ){
+ assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
+ testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
+ pNC2->ncFlags |= NC_HasAgg | (pDef->funcFlags & SQLITE_FUNC_MINMAX);
+
+ }
pNC->ncFlags |= NC_AllowAgg;
}
/* FIX ME: Compute pExpr->affinity based on the expected return
@@ -77889,7 +81459,7 @@ static int resolveOrderGroupBy(
}
/*
-** Resolve names in the SELECT statement p and all of its descendents.
+** Resolve names in the SELECT statement p and all of its descendants.
*/
static int resolveSelectStep(Walker *pWalker, Select *p){
NameContext *pOuterNC; /* Context that contains this SELECT */
@@ -77993,7 +81563,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
assert( (p->selFlags & SF_Aggregate)==0 );
pGroupBy = p->pGroupBy;
if( pGroupBy || (sNC.ncFlags & NC_HasAgg)!=0 ){
- p->selFlags |= SF_Aggregate;
+ assert( NC_MinMaxAgg==SF_MinMaxAgg );
+ p->selFlags |= SF_Aggregate | (sNC.ncFlags&NC_MinMaxAgg);
}else{
sNC.ncFlags &= ~NC_AllowAgg;
}
@@ -78121,7 +81692,7 @@ SQLITE_PRIVATE int sqlite3ResolveExprNames(
NameContext *pNC, /* Namespace to resolve expressions in. */
Expr *pExpr /* The expression to be analyzed. */
){
- u8 savedHasAgg;
+ u16 savedHasAgg;
Walker w;
if( pExpr==0 ) return 0;
@@ -78134,8 +81705,8 @@ SQLITE_PRIVATE int sqlite3ResolveExprNames(
pParse->nHeight += pExpr->nHeight;
}
#endif
- savedHasAgg = pNC->ncFlags & NC_HasAgg;
- pNC->ncFlags &= ~NC_HasAgg;
+ savedHasAgg = pNC->ncFlags & (NC_HasAgg|NC_MinMaxAgg);
+ pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg);
memset(&w, 0, sizeof(w));
w.xExprCallback = resolveExprStep;
w.xSelectCallback = resolveSelectStep;
@@ -78150,9 +81721,8 @@ SQLITE_PRIVATE int sqlite3ResolveExprNames(
}
if( pNC->ncFlags & NC_HasAgg ){
ExprSetProperty(pExpr, EP_Agg);
- }else if( savedHasAgg ){
- pNC->ncFlags |= NC_HasAgg;
}
+ pNC->ncFlags |= savedHasAgg;
return ExprHasProperty(pExpr, EP_Error);
}
@@ -78252,7 +81822,7 @@ SQLITE_PRIVATE void sqlite3ResolveSelfReference(
** affinity of that column is returned. Otherwise, 0x00 is returned,
** indicating no affinity for the expression.
**
-** i.e. the WHERE clause expresssions in the following statements all
+** i.e. the WHERE clause expressions in the following statements all
** have an affinity:
**
** CREATE TABLE t1(a);
@@ -78731,7 +82301,7 @@ SQLITE_PRIVATE void sqlite3ExprAttachSubtrees(
}
/*
-** Allocate a Expr node which joins as many as two subtrees.
+** Allocate an Expr node which joins as many as two subtrees.
**
** One or both of the subtrees can be NULL. Return a pointer to the new
** Expr node. Or, if an OOM error occurs, set pParse->db->mallocFailed,
@@ -78745,7 +82315,7 @@ SQLITE_PRIVATE Expr *sqlite3PExpr(
const Token *pToken /* Argument token */
){
Expr *p;
- if( op==TK_AND && pLeft && pRight ){
+ if( op==TK_AND && pLeft && pRight && pParse->nErr==0 ){
/* Take advantage of short-circuit false optimization for AND */
p = sqlite3ExprAnd(pParse->db, pLeft, pRight);
}else{
@@ -78841,7 +82411,7 @@ SQLITE_PRIVATE Expr *sqlite3ExprFunction(Parse *pParse, ExprList *pList, Token *
**
** Wildcards of the form ":aaa", "@aaa", or "$aaa" are assigned the same number
** as the previous instance of the same wildcard. Or if this is the first
-** instance of the wildcard, the next sequenial variable number is
+** instance of the wildcard, the next sequential variable number is
** assigned.
*/
SQLITE_PRIVATE void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr){
@@ -78976,7 +82546,7 @@ static int exprStructSize(Expr *p){
** During expression analysis, extra information is computed and moved into
** later parts of teh Expr object and that extra information might get chopped
** off if the expression is reduced. Note also that it does not work to
-** make a EXPRDUP_REDUCE copy of a reduced expression. It is only legal
+** make an EXPRDUP_REDUCE copy of a reduced expression. It is only legal
** to reduce a pristine expression tree from the parser. The implementation
** of dupedExprStructSize() contain multiple assert() statements that attempt
** to enforce this constraint.
@@ -79045,7 +82615,7 @@ static int dupedExprSize(Expr *p, int flags){
** is not NULL then *pzBuffer is assumed to point to a buffer large enough
** to store the copy of expression p, the copies of p->u.zToken
** (if applicable), and the copies of the p->pLeft and p->pRight expressions,
-** if any. Before returning, *pzBuffer is set to the first byte passed the
+** if any. Before returning, *pzBuffer is set to the first byte past the
** portion of the buffer copied into by this function.
*/
static Expr *exprDup(sqlite3 *db, Expr *p, int flags, u8 **pzBuffer){
@@ -79299,6 +82869,7 @@ SQLITE_PRIVATE Select *sqlite3SelectDup(sqlite3 *db, Select *p, int flags){
pNew->addrOpenEphm[1] = -1;
pNew->nSelectRow = p->nSelectRow;
pNew->pWith = withDup(db, p->pWith);
+ sqlite3SelectSetName(pNew, p->zSelName);
return pNew;
}
#else
@@ -79439,37 +83010,51 @@ SQLITE_PRIVATE void sqlite3ExprListDelete(sqlite3 *db, ExprList *pList){
}
/*
-** These routines are Walker callbacks. Walker.u.pi is a pointer
-** to an integer. These routines are checking an expression to see
-** if it is a constant. Set *Walker.u.pi to 0 if the expression is
-** not constant.
+** These routines are Walker callbacks used to check expressions to
+** see if they are "constant" for some definition of constant. The
+** Walker.eCode value determines the type of "constant" we are looking
+** for.
**
** These callback routines are used to implement the following:
**
-** sqlite3ExprIsConstant()
-** sqlite3ExprIsConstantNotJoin()
-** sqlite3ExprIsConstantOrFunction()
+** sqlite3ExprIsConstant() pWalker->eCode==1
+** sqlite3ExprIsConstantNotJoin() pWalker->eCode==2
+** sqlite3ExprRefOneTableOnly() pWalker->eCode==3
+** sqlite3ExprIsConstantOrFunction() pWalker->eCode==4 or 5
**
+** In all cases, the callbacks set Walker.eCode=0 and abort if the expression
+** is found to not be a constant.
+**
+** The sqlite3ExprIsConstantOrFunction() is used for evaluating expressions
+** in a CREATE TABLE statement. The Walker.eCode value is 5 when parsing
+** an existing schema and 4 when processing a new statement. A bound
+** parameter raises an error for new statements, but is silently converted
+** to NULL for existing schemas. This allows sqlite_master tables that
+** contain a bound parameter because they were generated by older versions
+** of SQLite to be parsed by newer versions of SQLite without raising a
+** malformed schema error.
*/
static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
- /* If pWalker->u.i is 3 then any term of the expression that comes from
- ** the ON or USING clauses of a join disqualifies the expression
+ /* If pWalker->eCode is 2 then any term of the expression that comes from
+ ** the ON or USING clauses of a left join disqualifies the expression
** from being considered constant. */
- if( pWalker->u.i==3 && ExprHasProperty(pExpr, EP_FromJoin) ){
- pWalker->u.i = 0;
+ if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_FromJoin) ){
+ pWalker->eCode = 0;
return WRC_Abort;
}
switch( pExpr->op ){
/* Consider functions to be constant if all their arguments are constant
- ** and either pWalker->u.i==2 or the function as the SQLITE_FUNC_CONST
- ** flag. */
+ ** and either pWalker->eCode==4 or 5 or the function has the
+ ** SQLITE_FUNC_CONST flag. */
case TK_FUNCTION:
- if( pWalker->u.i==2 || ExprHasProperty(pExpr,EP_Constant) ){
+ if( pWalker->eCode>=4 || ExprHasProperty(pExpr,EP_Constant) ){
return WRC_Continue;
+ }else{
+ pWalker->eCode = 0;
+ return WRC_Abort;
}
- /* Fall through */
case TK_ID:
case TK_COLUMN:
case TK_AGG_FUNCTION:
@@ -79478,8 +83063,25 @@ static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
testcase( pExpr->op==TK_COLUMN );
testcase( pExpr->op==TK_AGG_FUNCTION );
testcase( pExpr->op==TK_AGG_COLUMN );
- pWalker->u.i = 0;
- return WRC_Abort;
+ if( pWalker->eCode==3 && pExpr->iTable==pWalker->u.iCur ){
+ return WRC_Continue;
+ }else{
+ pWalker->eCode = 0;
+ return WRC_Abort;
+ }
+ case TK_VARIABLE:
+ if( pWalker->eCode==5 ){
+ /* Silently convert bound parameters that appear inside of CREATE
+ ** statements into a NULL when parsing the CREATE statement text out
+ ** of the sqlite_master table */
+ pExpr->op = TK_NULL;
+ }else if( pWalker->eCode==4 ){
+ /* A bound parameter in a CREATE statement that originates from
+ ** sqlite3_prepare() causes an error */
+ pWalker->eCode = 0;
+ return WRC_Abort;
+ }
+ /* Fall through */
default:
testcase( pExpr->op==TK_SELECT ); /* selectNodeIsConstant will disallow */
testcase( pExpr->op==TK_EXISTS ); /* selectNodeIsConstant will disallow */
@@ -79488,21 +83090,22 @@ static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){
}
static int selectNodeIsConstant(Walker *pWalker, Select *NotUsed){
UNUSED_PARAMETER(NotUsed);
- pWalker->u.i = 0;
+ pWalker->eCode = 0;
return WRC_Abort;
}
-static int exprIsConst(Expr *p, int initFlag){
+static int exprIsConst(Expr *p, int initFlag, int iCur){
Walker w;
memset(&w, 0, sizeof(w));
- w.u.i = initFlag;
+ w.eCode = initFlag;
w.xExprCallback = exprNodeIsConstant;
w.xSelectCallback = selectNodeIsConstant;
+ w.u.iCur = iCur;
sqlite3WalkExpr(&w, p);
- return w.u.i;
+ return w.eCode;
}
/*
-** Walk an expression tree. Return 1 if the expression is constant
+** Walk an expression tree. Return non-zero if the expression is constant
** and 0 if it involves variables or function calls.
**
** For the purposes of this function, a double-quoted string (ex: "abc")
@@ -79510,21 +83113,31 @@ static int exprIsConst(Expr *p, int initFlag){
** a constant.
*/
SQLITE_PRIVATE int sqlite3ExprIsConstant(Expr *p){
- return exprIsConst(p, 1);
+ return exprIsConst(p, 1, 0);
}
/*
-** Walk an expression tree. Return 1 if the expression is constant
+** Walk an expression tree. Return non-zero if the expression is constant
** that does no originate from the ON or USING clauses of a join.
** Return 0 if it involves variables or function calls or terms from
** an ON or USING clause.
*/
SQLITE_PRIVATE int sqlite3ExprIsConstantNotJoin(Expr *p){
- return exprIsConst(p, 3);
+ return exprIsConst(p, 2, 0);
}
/*
-** Walk an expression tree. Return 1 if the expression is constant
+** Walk an expression tree. Return non-zero if the expression constant
+** for any single row of the table with cursor iCur. In other words, the
+** expression must not refer to any non-deterministic function nor any
+** table other than iCur.
+*/
+SQLITE_PRIVATE int sqlite3ExprIsTableConstant(Expr *p, int iCur){
+ return exprIsConst(p, 3, iCur);
+}
+
+/*
+** Walk an expression tree. Return non-zero if the expression is constant
** or a function call with constant arguments. Return and 0 if there
** are any variables.
**
@@ -79532,8 +83145,9 @@ SQLITE_PRIVATE int sqlite3ExprIsConstantNotJoin(Expr *p){
** is considered a variable but a single-quoted string (ex: 'abc') is
** a constant.
*/
-SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr *p){
- return exprIsConst(p, 2);
+SQLITE_PRIVATE int sqlite3ExprIsConstantOrFunction(Expr *p, u8 isInit){
+ assert( isInit==0 || isInit==1 );
+ return exprIsConst(p, 4+isInit, 0);
}
/*
@@ -79600,7 +83214,8 @@ SQLITE_PRIVATE int sqlite3ExprCanBeNull(const Expr *p){
return 0;
case TK_COLUMN:
assert( p->pTab!=0 );
- return p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0;
+ return ExprHasProperty(p, EP_CanBeNull) ||
+ (p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0);
default:
return 1;
}
@@ -79771,7 +83386,7 @@ static int sqlite3InRhsIsConstant(Expr *pIn){
**
** If the RHS of the IN operator is a list or a more complex subquery, then
** an ephemeral table might need to be generated from the RHS and then
-** pX->iTable made to point to the ephermeral table instead of an
+** pX->iTable made to point to the ephemeral table instead of an
** existing table.
**
** The inFlags parameter must contain exactly one of the bits
@@ -79901,7 +83516,7 @@ SQLITE_PRIVATE int sqlite3FindInIndex(Parse *pParse, Expr *pX, u32 inFlags, int
** and IN_INDEX_NOOP is an allowed reply
** and the RHS of the IN operator is a list, not a subquery
** and the RHS is not contant or has two or fewer terms,
- ** then it is not worth creating an ephermeral table to evaluate
+ ** then it is not worth creating an ephemeral table to evaluate
** the IN operator so return IN_INDEX_NOOP.
*/
if( eType==0
@@ -80043,7 +83658,6 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(
assert( (pExpr->iTable&0x0000FFFF)==pExpr->iTable );
pSelect->iLimit = 0;
testcase( pSelect->selFlags & SF_Distinct );
- pSelect->selFlags &= ~SF_Distinct;
testcase( pKeyInfo==0 ); /* Caused by OOM in sqlite3KeyInfoAlloc() */
if( sqlite3Select(pParse, pSelect, &dest) ){
sqlite3KeyInfoUnref(pKeyInfo);
@@ -80142,6 +83756,7 @@ SQLITE_PRIVATE int sqlite3CodeSubselect(
sqlite3SelectDestInit(&dest, 0, ++pParse->nMem);
if( pExpr->op==TK_SELECT ){
dest.eDest = SRT_Mem;
+ dest.iSdst = dest.iSDParm;
sqlite3VdbeAddOp2(v, OP_Null, 0, dest.iSDParm);
VdbeComment((v, "Init subquery result"));
}else{
@@ -80661,16 +84276,9 @@ SQLITE_PRIVATE void sqlite3ExprCacheAffinityChange(Parse *pParse, int iStart, in
** over to iTo..iTo+nReg-1. Keep the column cache up-to-date.
*/
SQLITE_PRIVATE void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int nReg){
- int i;
- struct yColCache *p;
assert( iFrom>=iTo+nReg || iFrom+nReg<=iTo );
sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg);
- for(i=0, p=pParse->aColCache; i<SQLITE_N_COLCACHE; i++, p++){
- int x = p->iReg;
- if( x>=iFrom && x<iFrom+nReg ){
- p->iReg += iTo-iFrom;
- }
- }
+ sqlite3ExprCacheRemove(pParse, iFrom, nReg);
}
#if defined(SQLITE_DEBUG) || defined(SQLITE_COVERAGE_TEST)
@@ -80825,26 +84433,13 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
#ifndef SQLITE_OMIT_CAST
case TK_CAST: {
/* Expressions of the form: CAST(pLeft AS token) */
- int aff, to_op;
inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target);
- assert( !ExprHasProperty(pExpr, EP_IntValue) );
- aff = sqlite3AffinityType(pExpr->u.zToken, 0);
- to_op = aff - SQLITE_AFF_TEXT + OP_ToText;
- assert( to_op==OP_ToText || aff!=SQLITE_AFF_TEXT );
- assert( to_op==OP_ToBlob || aff!=SQLITE_AFF_NONE );
- assert( to_op==OP_ToNumeric || aff!=SQLITE_AFF_NUMERIC );
- assert( to_op==OP_ToInt || aff!=SQLITE_AFF_INTEGER );
- assert( to_op==OP_ToReal || aff!=SQLITE_AFF_REAL );
- testcase( to_op==OP_ToText );
- testcase( to_op==OP_ToBlob );
- testcase( to_op==OP_ToNumeric );
- testcase( to_op==OP_ToInt );
- testcase( to_op==OP_ToReal );
if( inReg!=target ){
sqlite3VdbeAddOp2(v, OP_SCopy, inReg, target);
inReg = target;
}
- sqlite3VdbeAddOp1(v, to_op, inReg);
+ sqlite3VdbeAddOp2(v, OP_Cast, target,
+ sqlite3AffinityType(pExpr->u.zToken, 0));
testcase( usedAsColumnCache(pParse, inReg, inReg) );
sqlite3ExprCacheAffinityChange(pParse, inReg, 1);
break;
@@ -81000,7 +84595,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
}
/* Attempt a direct implementation of the built-in COALESCE() and
- ** IFNULL() functions. This avoids unnecessary evalation of
+ ** IFNULL() functions. This avoids unnecessary evaluation of
** arguments past the first non-NULL argument.
*/
if( pDef->funcFlags & SQLITE_FUNC_COALESCE ){
@@ -81209,7 +84804,10 @@ SQLITE_PRIVATE int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target)
#ifndef SQLITE_OMIT_FLOATING_POINT
/* If the column has REAL affinity, it may currently be stored as an
- ** integer. Use OP_RealAffinity to make sure it is really real. */
+ ** integer. Use OP_RealAffinity to make sure it is really real.
+ **
+ ** EVIDENCE-OF: R-60985-57662 SQLite will convert the value back to
+ ** floating point when extracting it from the record. */
if( pExpr->iColumn>=0
&& pTab->aCol[pExpr->iColumn].affinity==SQLITE_AFF_REAL
){
@@ -81439,7 +85037,7 @@ SQLITE_PRIVATE void sqlite3ExprCodeFactorable(Parse *pParse, Expr *pExpr, int ta
}
/*
-** Generate code that evalutes the given expression and puts the result
+** Generate code that evaluates the given expression and puts the result
** in register target.
**
** Also make a copy of the expression results into another "cache" register
@@ -81462,90 +85060,86 @@ SQLITE_PRIVATE void sqlite3ExprCodeAndCache(Parse *pParse, Expr *pExpr, int targ
exprToRegister(pExpr, iMem);
}
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
+#ifdef SQLITE_DEBUG
/*
** Generate a human-readable explanation of an expression tree.
*/
-SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
- int op; /* The opcode being coded */
+SQLITE_PRIVATE void sqlite3TreeViewExpr(TreeView *pView, const Expr *pExpr, u8 moreToFollow){
const char *zBinOp = 0; /* Binary operator */
const char *zUniOp = 0; /* Unary operator */
+ pView = sqlite3TreeViewPush(pView, moreToFollow);
if( pExpr==0 ){
- op = TK_NULL;
- }else{
- op = pExpr->op;
+ sqlite3TreeViewLine(pView, "nil");
+ sqlite3TreeViewPop(pView);
+ return;
}
- switch( op ){
+ switch( pExpr->op ){
case TK_AGG_COLUMN: {
- sqlite3ExplainPrintf(pOut, "AGG{%d:%d}",
+ sqlite3TreeViewLine(pView, "AGG{%d:%d}",
pExpr->iTable, pExpr->iColumn);
break;
}
case TK_COLUMN: {
if( pExpr->iTable<0 ){
/* This only happens when coding check constraints */
- sqlite3ExplainPrintf(pOut, "COLUMN(%d)", pExpr->iColumn);
+ sqlite3TreeViewLine(pView, "COLUMN(%d)", pExpr->iColumn);
}else{
- sqlite3ExplainPrintf(pOut, "{%d:%d}",
+ sqlite3TreeViewLine(pView, "{%d:%d}",
pExpr->iTable, pExpr->iColumn);
}
break;
}
case TK_INTEGER: {
if( pExpr->flags & EP_IntValue ){
- sqlite3ExplainPrintf(pOut, "%d", pExpr->u.iValue);
+ sqlite3TreeViewLine(pView, "%d", pExpr->u.iValue);
}else{
- sqlite3ExplainPrintf(pOut, "%s", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "%s", pExpr->u.zToken);
}
break;
}
#ifndef SQLITE_OMIT_FLOATING_POINT
case TK_FLOAT: {
- sqlite3ExplainPrintf(pOut,"%s", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
break;
}
#endif
case TK_STRING: {
- sqlite3ExplainPrintf(pOut,"%Q", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView,"%Q", pExpr->u.zToken);
break;
}
case TK_NULL: {
- sqlite3ExplainPrintf(pOut,"NULL");
+ sqlite3TreeViewLine(pView,"NULL");
break;
}
#ifndef SQLITE_OMIT_BLOB_LITERAL
case TK_BLOB: {
- sqlite3ExplainPrintf(pOut,"%s", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView,"%s", pExpr->u.zToken);
break;
}
#endif
case TK_VARIABLE: {
- sqlite3ExplainPrintf(pOut,"VARIABLE(%s,%d)",
- pExpr->u.zToken, pExpr->iColumn);
+ sqlite3TreeViewLine(pView,"VARIABLE(%s,%d)",
+ pExpr->u.zToken, pExpr->iColumn);
break;
}
case TK_REGISTER: {
- sqlite3ExplainPrintf(pOut,"REGISTER(%d)", pExpr->iTable);
+ sqlite3TreeViewLine(pView,"REGISTER(%d)", pExpr->iTable);
break;
}
case TK_AS: {
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
+ sqlite3TreeViewLine(pView,"AS %Q", pExpr->u.zToken);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
+ break;
+ }
+ case TK_ID: {
+ sqlite3TreeViewLine(pView,"ID %Q", pExpr->u.zToken);
break;
}
#ifndef SQLITE_OMIT_CAST
case TK_CAST: {
/* Expressions of the form: CAST(pLeft AS token) */
- const char *zAff = "unk";
- switch( sqlite3AffinityType(pExpr->u.zToken, 0) ){
- case SQLITE_AFF_TEXT: zAff = "TEXT"; break;
- case SQLITE_AFF_NONE: zAff = "NONE"; break;
- case SQLITE_AFF_NUMERIC: zAff = "NUMERIC"; break;
- case SQLITE_AFF_INTEGER: zAff = "INTEGER"; break;
- case SQLITE_AFF_REAL: zAff = "REAL"; break;
- }
- sqlite3ExplainPrintf(pOut, "CAST-%s(", zAff);
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut, ")");
+ sqlite3TreeViewLine(pView,"CAST %Q", pExpr->u.zToken);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
break;
}
#endif /* SQLITE_OMIT_CAST */
@@ -81569,6 +85163,7 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
case TK_LSHIFT: zBinOp = "LSHIFT"; break;
case TK_RSHIFT: zBinOp = "RSHIFT"; break;
case TK_CONCAT: zBinOp = "CONCAT"; break;
+ case TK_DOT: zBinOp = "DOT"; break;
case TK_UMINUS: zUniOp = "UMINUS"; break;
case TK_UPLUS: zUniOp = "UPLUS"; break;
@@ -81578,8 +85173,8 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
case TK_NOTNULL: zUniOp = "NOTNULL"; break;
case TK_COLLATE: {
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut,".COLLATE(%s)",pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "COLLATE %Q", pExpr->u.zToken);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
break;
}
@@ -81591,41 +85186,36 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
}else{
pFarg = pExpr->x.pList;
}
- if( op==TK_AGG_FUNCTION ){
- sqlite3ExplainPrintf(pOut, "AGG_FUNCTION%d:%s(",
+ if( pExpr->op==TK_AGG_FUNCTION ){
+ sqlite3TreeViewLine(pView, "AGG_FUNCTION%d %Q",
pExpr->op2, pExpr->u.zToken);
}else{
- sqlite3ExplainPrintf(pOut, "FUNCTION:%s(", pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "FUNCTION %Q", pExpr->u.zToken);
}
if( pFarg ){
- sqlite3ExplainExprList(pOut, pFarg);
+ sqlite3TreeViewExprList(pView, pFarg, 0, 0);
}
- sqlite3ExplainPrintf(pOut, ")");
break;
}
#ifndef SQLITE_OMIT_SUBQUERY
case TK_EXISTS: {
- sqlite3ExplainPrintf(pOut, "EXISTS(");
- sqlite3ExplainSelect(pOut, pExpr->x.pSelect);
- sqlite3ExplainPrintf(pOut,")");
+ sqlite3TreeViewLine(pView, "EXISTS-expr");
+ sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
break;
}
case TK_SELECT: {
- sqlite3ExplainPrintf(pOut, "(");
- sqlite3ExplainSelect(pOut, pExpr->x.pSelect);
- sqlite3ExplainPrintf(pOut, ")");
+ sqlite3TreeViewLine(pView, "SELECT-expr");
+ sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
break;
}
case TK_IN: {
- sqlite3ExplainPrintf(pOut, "IN(");
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut, ",");
+ sqlite3TreeViewLine(pView, "IN");
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
- sqlite3ExplainSelect(pOut, pExpr->x.pSelect);
+ sqlite3TreeViewSelect(pView, pExpr->x.pSelect, 0);
}else{
- sqlite3ExplainExprList(pOut, pExpr->x.pList);
+ sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
}
- sqlite3ExplainPrintf(pOut, ")");
break;
}
#endif /* SQLITE_OMIT_SUBQUERY */
@@ -81645,13 +85235,10 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
Expr *pX = pExpr->pLeft;
Expr *pY = pExpr->x.pList->a[0].pExpr;
Expr *pZ = pExpr->x.pList->a[1].pExpr;
- sqlite3ExplainPrintf(pOut, "BETWEEN(");
- sqlite3ExplainExpr(pOut, pX);
- sqlite3ExplainPrintf(pOut, ",");
- sqlite3ExplainExpr(pOut, pY);
- sqlite3ExplainPrintf(pOut, ",");
- sqlite3ExplainExpr(pOut, pZ);
- sqlite3ExplainPrintf(pOut, ")");
+ sqlite3TreeViewLine(pView, "BETWEEN");
+ sqlite3TreeViewExpr(pView, pX, 1);
+ sqlite3TreeViewExpr(pView, pY, 1);
+ sqlite3TreeViewExpr(pView, pZ, 0);
break;
}
case TK_TRIGGER: {
@@ -81662,15 +85249,14 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
** is set to the column of the pseudo-table to read, or to -1 to
** read the rowid field.
*/
- sqlite3ExplainPrintf(pOut, "%s(%d)",
+ sqlite3TreeViewLine(pView, "%s(%d)",
pExpr->iTable ? "NEW" : "OLD", pExpr->iColumn);
break;
}
case TK_CASE: {
- sqlite3ExplainPrintf(pOut, "CASE(");
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut, ",");
- sqlite3ExplainExprList(pOut, pExpr->x.pList);
+ sqlite3TreeViewLine(pView, "CASE");
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
+ sqlite3TreeViewExprList(pView, pExpr->x.pList, 0, 0);
break;
}
#ifndef SQLITE_OMIT_TRIGGER
@@ -81682,55 +85268,57 @@ SQLITE_PRIVATE void sqlite3ExplainExpr(Vdbe *pOut, Expr *pExpr){
case OE_Fail: zType = "fail"; break;
case OE_Ignore: zType = "ignore"; break;
}
- sqlite3ExplainPrintf(pOut, "RAISE-%s(%s)", zType, pExpr->u.zToken);
+ sqlite3TreeViewLine(pView, "RAISE %s(%Q)", zType, pExpr->u.zToken);
break;
}
#endif
+ default: {
+ sqlite3TreeViewLine(pView, "op=%d", pExpr->op);
+ break;
+ }
}
if( zBinOp ){
- sqlite3ExplainPrintf(pOut,"%s(", zBinOp);
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut,",");
- sqlite3ExplainExpr(pOut, pExpr->pRight);
- sqlite3ExplainPrintf(pOut,")");
+ sqlite3TreeViewLine(pView, "%s", zBinOp);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 1);
+ sqlite3TreeViewExpr(pView, pExpr->pRight, 0);
}else if( zUniOp ){
- sqlite3ExplainPrintf(pOut,"%s(", zUniOp);
- sqlite3ExplainExpr(pOut, pExpr->pLeft);
- sqlite3ExplainPrintf(pOut,")");
+ sqlite3TreeViewLine(pView, "%s", zUniOp);
+ sqlite3TreeViewExpr(pView, pExpr->pLeft, 0);
}
+ sqlite3TreeViewPop(pView);
}
-#endif /* defined(SQLITE_ENABLE_TREE_EXPLAIN) */
+#endif /* SQLITE_DEBUG */
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
+#ifdef SQLITE_DEBUG
/*
** Generate a human-readable explanation of an expression list.
*/
-SQLITE_PRIVATE void sqlite3ExplainExprList(Vdbe *pOut, ExprList *pList){
+SQLITE_PRIVATE void sqlite3TreeViewExprList(
+ TreeView *pView,
+ const ExprList *pList,
+ u8 moreToFollow,
+ const char *zLabel
+){
int i;
- if( pList==0 || pList->nExpr==0 ){
- sqlite3ExplainPrintf(pOut, "(empty-list)");
- return;
- }else if( pList->nExpr==1 ){
- sqlite3ExplainExpr(pOut, pList->a[0].pExpr);
+ pView = sqlite3TreeViewPush(pView, moreToFollow);
+ if( zLabel==0 || zLabel[0]==0 ) zLabel = "LIST";
+ if( pList==0 ){
+ sqlite3TreeViewLine(pView, "%s (empty)", zLabel);
}else{
- sqlite3ExplainPush(pOut);
+ sqlite3TreeViewLine(pView, "%s", zLabel);
for(i=0; i<pList->nExpr; i++){
- sqlite3ExplainPrintf(pOut, "item[%d] = ", i);
- sqlite3ExplainPush(pOut);
- sqlite3ExplainExpr(pOut, pList->a[i].pExpr);
- sqlite3ExplainPop(pOut);
- if( pList->a[i].zName ){
+ sqlite3TreeViewExpr(pView, pList->a[i].pExpr, i<pList->nExpr-1);
+#if 0
+ if( pList->a[i].zName ){
sqlite3ExplainPrintf(pOut, " AS %s", pList->a[i].zName);
}
if( pList->a[i].bSpanIsTab ){
sqlite3ExplainPrintf(pOut, " (%s)", pList->a[i].zSpan);
}
- if( i<pList->nExpr-1 ){
- sqlite3ExplainNL(pOut);
- }
+#endif
}
- sqlite3ExplainPop(pOut);
}
+ sqlite3TreeViewPop(pView);
}
#endif /* SQLITE_DEBUG */
@@ -81794,7 +85382,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeExprList(
** x>=y AND x<=z
**
** Code it as such, taking care to do the common subexpression
-** elementation of x.
+** elimination of x.
*/
static void exprCodeBetween(
Parse *pParse, /* Parsing and code generating context */
@@ -82281,10 +85869,11 @@ static int exprSrcCount(Walker *pWalker, Expr *pExpr){
int i;
struct SrcCount *p = pWalker->u.pSrcCount;
SrcList *pSrc = p->pSrc;
- for(i=0; i<pSrc->nSrc; i++){
+ int nSrc = pSrc ? pSrc->nSrc : 0;
+ for(i=0; i<nSrc; i++){
if( pExpr->iTable==pSrc->a[i].iCursor ) break;
}
- if( i<pSrc->nSrc ){
+ if( i<nSrc ){
p->nThis++;
}else{
p->nOther++;
@@ -82531,7 +86120,7 @@ SQLITE_PRIVATE int sqlite3GetTempReg(Parse *pParse){
** purpose.
**
** If a register is currently being used by the column cache, then
-** the dallocation is deferred until the column cache line that uses
+** the deallocation is deferred until the column cache line that uses
** the register becomes stale.
*/
SQLITE_PRIVATE void sqlite3ReleaseTempReg(Parse *pParse, int iReg){
@@ -82758,8 +86347,8 @@ static void renameTriggerFunc(
UNUSED_PARAMETER(NotUsed);
/* The principle used to locate the table name in the CREATE TRIGGER
- ** statement is that the table name is the first token that is immediatedly
- ** preceded by either TK_ON or TK_DOT and immediatedly followed by one
+ ** statement is that the table name is the first token that is immediately
+ ** preceded by either TK_ON or TK_DOT and immediately followed by one
** of TK_WHEN, TK_BEGIN or TK_FOR.
*/
if( zSql ){
@@ -83450,7 +87039,7 @@ exit_begin_add_column:
** not possible to enable both STAT3 and STAT4 at the same time. If they
** are both enabled, then STAT4 takes precedence.
**
-** For most applications, sqlite_stat1 provides all the statisics required
+** For most applications, sqlite_stat1 provides all the statistics required
** for the query planner to make good choices.
**
** Format of sqlite_stat1:
@@ -83801,8 +87390,9 @@ static void stat4Destructor(void *pOld){
** original WITHOUT ROWID table as N==K as a special case.
**
** This routine allocates the Stat4Accum object in heap memory. The return
-** value is a pointer to the the Stat4Accum object encoded as a blob (i.e.
-** the size of the blob is sizeof(void*) bytes).
+** value is a pointer to the Stat4Accum object. The datatype of the
+** return value is BLOB, but it is really just a pointer to the Stat4Accum
+** object.
*/
static void statInit(
sqlite3_context *context,
@@ -83861,7 +87451,7 @@ static void statInit(
p->mxSample = mxSample;
p->nPSample = (tRowcnt)(sqlite3_value_int64(argv[2])/(mxSample/3+1) + 1);
p->current.anLt = &p->current.anEq[nColUp];
- p->iPrn = nCol*0x689e962d ^ sqlite3_value_int(argv[2])*0xd0944565;
+ p->iPrn = 0x689e962d*(u32)nCol ^ 0xd0944565*(u32)sqlite3_value_int(argv[2]);
/* Set up the Stat4Accum.a[] and aBest[] arrays */
p->a = (struct Stat4Sample*)&p->current.anLt[nColUp];
@@ -83880,8 +87470,11 @@ static void statInit(
}
#endif
- /* Return a pointer to the allocated object to the caller */
- sqlite3_result_blob(context, p, sizeof(p), stat4Destructor);
+ /* Return a pointer to the allocated object to the caller. Note that
+ ** only the pointer (the 2nd parameter) matters. The size of the object
+ ** (given by the 3rd parameter) is never used and can be any positive
+ ** value. */
+ sqlite3_result_blob(context, p, sizeof(*p), stat4Destructor);
}
static const FuncDef statInitFuncdef = {
2+IsStat34, /* nArg */
@@ -84207,7 +87800,7 @@ static const FuncDef statPushFuncdef = {
** Implementation of the stat_get(P,J) SQL function. This routine is
** used to query statistical information that has been gathered into
** the Stat4Accum object by prior calls to stat_push(). The P parameter
-** is a BLOB which is decoded into a pointer to the Stat4Accum objects.
+** has type BLOB but it is really just a pointer to the Stat4Accum object.
** The content to returned is determined by the parameter J
** which is one of the STAT_GET_xxxx values defined above.
**
@@ -84611,7 +88204,8 @@ static void analyzeOneTable(
/* Add the entry to the stat1 table. */
callStatGet(v, regStat4, STAT_GET_STAT1, regStat1);
- sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "aaa", 0);
+ assert( "BBB"[0]==SQLITE_AFF_TEXT );
+ sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "BBB", 0);
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur, regNewRowid);
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur, regTemp, regNewRowid);
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
@@ -84674,7 +88268,8 @@ static void analyzeOneTable(
sqlite3VdbeAddOp2(v, OP_Count, iTabCur, regStat1);
jZeroRows = sqlite3VdbeAddOp1(v, OP_IfNot, regStat1); VdbeCoverage(v);
sqlite3VdbeAddOp2(v, OP_Null, 0, regIdxname);
- sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "aaa", 0);
+ assert( "BBB"[0]==SQLITE_AFF_TEXT );
+ sqlite3VdbeAddOp4(v, OP_MakeRecord, regTabname, 3, regTemp, "BBB", 0);
sqlite3VdbeAddOp2(v, OP_NewRowid, iStatCur, regNewRowid);
sqlite3VdbeAddOp3(v, OP_Insert, iStatCur, regTemp, regNewRowid);
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
@@ -84845,7 +88440,7 @@ static void decodeIntArray(
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
if( z==0 ) z = "";
#else
- if( NEVER(z==0) ) z = "";
+ assert( z!=0 );
#endif
for(i=0; *z && i<nOut; i++){
v = 0;
@@ -84854,36 +88449,39 @@ static void decodeIntArray(
z++;
}
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
- if( aOut ){
- aOut[i] = v;
- }else
+ if( aOut ) aOut[i] = v;
+ if( aLog ) aLog[i] = sqlite3LogEst(v);
#else
assert( aOut==0 );
UNUSED_PARAMETER(aOut);
+ assert( aLog!=0 );
+ aLog[i] = sqlite3LogEst(v);
#endif
- {
- aLog[i] = sqlite3LogEst(v);
- }
if( *z==' ' ) z++;
}
#ifndef SQLITE_ENABLE_STAT3_OR_STAT4
- assert( pIndex!=0 );
+ assert( pIndex!=0 ); {
#else
- if( pIndex )
+ if( pIndex ){
#endif
- while( z[0] ){
- if( sqlite3_strglob("unordered*", z)==0 ){
- pIndex->bUnordered = 1;
- }else if( sqlite3_strglob("sz=[0-9]*", z)==0 ){
- pIndex->szIdxRow = sqlite3LogEst(sqlite3Atoi(z+3));
- }
+ pIndex->bUnordered = 0;
+ pIndex->noSkipScan = 0;
+ while( z[0] ){
+ if( sqlite3_strglob("unordered*", z)==0 ){
+ pIndex->bUnordered = 1;
+ }else if( sqlite3_strglob("sz=[0-9]*", z)==0 ){
+ pIndex->szIdxRow = sqlite3LogEst(sqlite3Atoi(z+3));
+ }else if( sqlite3_strglob("noskipscan*", z)==0 ){
+ pIndex->noSkipScan = 1;
+ }
#ifdef SQLITE_ENABLE_COSTMULT
- else if( sqlite3_strglob("costmult=[0-9]*",z)==0 ){
- pIndex->pTable->costMult = sqlite3LogEst(sqlite3Atoi(z+9));
- }
+ else if( sqlite3_strglob("costmult=[0-9]*",z)==0 ){
+ pIndex->pTable->costMult = sqlite3LogEst(sqlite3Atoi(z+9));
+ }
#endif
- while( z[0]!=0 && z[0]!=' ' ) z++;
- while( z[0]==' ' ) z++;
+ while( z[0]!=0 && z[0]!=' ' ) z++;
+ while( z[0]==' ' ) z++;
+ }
}
}
@@ -84924,8 +88522,17 @@ static int analysisLoader(void *pData, int argc, char **argv, char **NotUsed){
z = argv[2];
if( pIndex ){
+ int nCol = pIndex->nKeyCol+1;
+#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+ tRowcnt * const aiRowEst = pIndex->aiRowEst = (tRowcnt*)sqlite3MallocZero(
+ sizeof(tRowcnt) * nCol
+ );
+ if( aiRowEst==0 ) pInfo->db->mallocFailed = 1;
+#else
+ tRowcnt * const aiRowEst = 0;
+#endif
pIndex->bUnordered = 0;
- decodeIntArray((char*)z, pIndex->nKeyCol+1, 0, pIndex->aiRowLogEst, pIndex);
+ decodeIntArray((char*)z, nCol, aiRowEst, pIndex->aiRowLogEst, pIndex);
if( pIndex->pPartIdxWhere==0 ) pTable->nRowLogEst = pIndex->aiRowLogEst[0];
}else{
Index fakeIdx;
@@ -84984,25 +88591,39 @@ static void initAvgEq(Index *pIdx){
pIdx->aAvgEq[nCol] = 1;
}
for(iCol=0; iCol<nCol; iCol++){
+ int nSample = pIdx->nSample;
int i; /* Used to iterate through samples */
tRowcnt sumEq = 0; /* Sum of the nEq values */
- tRowcnt nSum = 0; /* Number of terms contributing to sumEq */
tRowcnt avgEq = 0;
- tRowcnt nDLt = pFinal->anDLt[iCol];
+ tRowcnt nRow; /* Number of rows in index */
+ i64 nSum100 = 0; /* Number of terms contributing to sumEq */
+ i64 nDist100; /* Number of distinct values in index */
+
+ if( !pIdx->aiRowEst || iCol>=pIdx->nKeyCol || pIdx->aiRowEst[iCol+1]==0 ){
+ nRow = pFinal->anLt[iCol];
+ nDist100 = (i64)100 * pFinal->anDLt[iCol];
+ nSample--;
+ }else{
+ nRow = pIdx->aiRowEst[0];
+ nDist100 = ((i64)100 * pIdx->aiRowEst[0]) / pIdx->aiRowEst[iCol+1];
+ }
+ pIdx->nRowEst0 = nRow;
/* Set nSum to the number of distinct (iCol+1) field prefixes that
- ** occur in the stat4 table for this index before pFinal. Set
- ** sumEq to the sum of the nEq values for column iCol for the same
- ** set (adding the value only once where there exist dupicate
- ** prefixes). */
- for(i=0; i<(pIdx->nSample-1); i++){
- if( aSample[i].anDLt[iCol]!=aSample[i+1].anDLt[iCol] ){
+ ** occur in the stat4 table for this index. Set sumEq to the sum of
+ ** the nEq values for column iCol for the same set (adding the value
+ ** only once where there exist duplicate prefixes). */
+ for(i=0; i<nSample; i++){
+ if( i==(pIdx->nSample-1)
+ || aSample[i].anDLt[iCol]!=aSample[i+1].anDLt[iCol]
+ ){
sumEq += aSample[i].anEq[iCol];
- nSum++;
+ nSum100 += 100;
}
}
- if( nDLt>nSum ){
- avgEq = (pFinal->anLt[iCol] - sumEq)/(nDLt - nSum);
+
+ if( nDist100>nSum100 ){
+ avgEq = ((i64)100 * (nRow - sumEq))/(nDist100 - nSum100);
}
if( avgEq==0 ) avgEq = 1;
pIdx->aAvgEq[iCol] = avgEq;
@@ -85248,12 +88869,17 @@ SQLITE_PRIVATE int sqlite3AnalysisLoad(sqlite3 *db, int iDb){
/* Load the statistics from the sqlite_stat4 table. */
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
- if( rc==SQLITE_OK ){
+ if( rc==SQLITE_OK && OptimizationEnabled(db, SQLITE_Stat34) ){
int lookasideEnabled = db->lookaside.bEnabled;
db->lookaside.bEnabled = 0;
rc = loadStat4(db, sInfo.zDatabase);
db->lookaside.bEnabled = lookasideEnabled;
}
+ for(i=sqliteHashFirst(&db->aDb[iDb].pSchema->idxHash);i;i=sqliteHashNext(i)){
+ Index *pIdx = sqliteHashData(i);
+ sqlite3_free(pIdx->aiRowEst);
+ pIdx->aiRowEst = 0;
+ }
#endif
if( rc==SQLITE_NOMEM ){
@@ -85418,6 +89044,7 @@ static void attachFunc(
"attached databases must use the same text encoding as main database");
rc = SQLITE_ERROR;
}
+ sqlite3BtreeEnter(aNew->pBt);
pPager = sqlite3BtreePager(aNew->pBt);
sqlite3PagerLockingMode(pPager, db->dfltLockMode);
sqlite3BtreeSecureDelete(aNew->pBt,
@@ -85425,6 +89052,7 @@ static void attachFunc(
#ifndef SQLITE_OMIT_PAGER_PRAGMAS
sqlite3BtreeSetPagerFlags(aNew->pBt, 3 | (db->flags & PAGER_FLAGS_MASK));
#endif
+ sqlite3BtreeLeave(aNew->pBt);
}
aNew->safety_level = 3;
aNew->zName = sqlite3DbStrDup(db, zName);
@@ -85475,6 +89103,15 @@ static void attachFunc(
rc = sqlite3Init(db, &zErrDyn);
sqlite3BtreeLeaveAll(db);
}
+#ifdef SQLITE_USER_AUTHENTICATION
+ if( rc==SQLITE_OK ){
+ u8 newAuth = 0;
+ rc = sqlite3UserAuthCheckLogin(db, zName, &newAuth);
+ if( newAuth<db->auth.authLevel ){
+ rc = SQLITE_AUTH_USER;
+ }
+ }
+#endif
if( rc ){
int iDb = db->nDb - 1;
assert( iDb>=2 );
@@ -85916,8 +89553,11 @@ SQLITE_API int sqlite3_set_authorizer(
int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
void *pArg
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
- db->xAuth = xAuth;
+ db->xAuth = (sqlite3_xauth)xAuth;
db->pAuthArg = pArg;
sqlite3ExpirePreparedStatements(db);
sqlite3_mutex_leave(db->mutex);
@@ -85952,7 +89592,11 @@ SQLITE_PRIVATE int sqlite3AuthReadCol(
char *zDb = db->aDb[iDb].zName; /* Name of attached database */
int rc; /* Auth callback return code */
- rc = db->xAuth(db->pAuthArg, SQLITE_READ, zTab,zCol,zDb,pParse->zAuthContext);
+ rc = db->xAuth(db->pAuthArg, SQLITE_READ, zTab,zCol,zDb,pParse->zAuthContext
+#ifdef SQLITE_USER_AUTHENTICATION
+ ,db->auth.zAuthUser
+#endif
+ );
if( rc==SQLITE_DENY ){
if( db->nDb>2 || iDb!=0 ){
sqlite3ErrorMsg(pParse, "access to %s.%s.%s is prohibited",zDb,zTab,zCol);
@@ -86052,7 +89696,11 @@ SQLITE_PRIVATE int sqlite3AuthCheck(
if( db->xAuth==0 ){
return SQLITE_OK;
}
- rc = db->xAuth(db->pAuthArg, code, zArg1, zArg2, zArg3, pParse->zAuthContext);
+ rc = db->xAuth(db->pAuthArg, code, zArg1, zArg2, zArg3, pParse->zAuthContext
+#ifdef SQLITE_USER_AUTHENTICATION
+ ,db->auth.zAuthUser
+#endif
+ );
if( rc==SQLITE_DENY ){
sqlite3ErrorMsg(pParse, "not authorized");
pParse->rc = SQLITE_AUTH;
@@ -86251,6 +89899,17 @@ SQLITE_PRIVATE void sqlite3FinishCoding(Parse *pParse){
while( sqlite3VdbeDeletePriorOpcode(v, OP_Close) ){}
sqlite3VdbeAddOp0(v, OP_Halt);
+#if SQLITE_USER_AUTHENTICATION
+ if( pParse->nTableLock>0 && db->init.busy==0 ){
+ sqlite3UserAuthInit(db);
+ if( db->auth.authLevel<UAUTH_User ){
+ pParse->rc = SQLITE_AUTH_USER;
+ sqlite3ErrorMsg(pParse, "user not authenticated");
+ return;
+ }
+ }
+#endif
+
/* The cookie mask contains one bit for each database file open.
** (Bit 0 is for main, bit 1 is for temp, and so forth.) Bits are
** set for each database that is used. Generate code to start a
@@ -86366,6 +90025,16 @@ SQLITE_PRIVATE void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
pParse->nested--;
}
+#if SQLITE_USER_AUTHENTICATION
+/*
+** Return TRUE if zTable is the name of the system table that stores the
+** list of users and their access credentials.
+*/
+SQLITE_PRIVATE int sqlite3UserAuthTable(const char *zTable){
+ return sqlite3_stricmp(zTable, "sqlite_user")==0;
+}
+#endif
+
/*
** Locate the in-memory structure that describes a particular database
** table given the name of that table and (optionally) the name of the
@@ -86381,16 +90050,25 @@ SQLITE_PRIVATE void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
SQLITE_PRIVATE Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
Table *p = 0;
int i;
- int nName;
- assert( zName!=0 );
- nName = sqlite3Strlen30(zName);
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 ) return 0;
+#endif
+
/* All mutexes are required for schema access. Make sure we hold them. */
assert( zDatabase!=0 || sqlite3BtreeHoldsAllMutexes(db) );
+#if SQLITE_USER_AUTHENTICATION
+ /* Only the admin user is allowed to know that the sqlite_user table
+ ** exists */
+ if( db->auth.authLevel<UAUTH_Admin && sqlite3UserAuthTable(zName)!=0 ){
+ return 0;
+ }
+#endif
for(i=OMIT_TEMPDB; i<db->nDb; i++){
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
if( zDatabase!=0 && sqlite3StrICmp(zDatabase, db->aDb[j].zName) ) continue;
assert( sqlite3SchemaMutexHeld(db, j, 0) );
- p = sqlite3HashFind(&db->aDb[j].pSchema->tblHash, zName, nName);
+ p = sqlite3HashFind(&db->aDb[j].pSchema->tblHash, zName);
if( p ) break;
}
return p;
@@ -86430,6 +90108,12 @@ SQLITE_PRIVATE Table *sqlite3LocateTable(
}
pParse->checkSchema = 1;
}
+#if SQLITE_USER_AUTHENICATION
+ else if( pParse->db->auth.authLevel<UAUTH_User ){
+ sqlite3ErrorMsg(pParse, "user not authenticated");
+ p = 0;
+ }
+#endif
return p;
}
@@ -86473,7 +90157,6 @@ SQLITE_PRIVATE Table *sqlite3LocateTableItem(
SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const char *zDb){
Index *p = 0;
int i;
- int nName = sqlite3Strlen30(zName);
/* All mutexes are required for schema access. Make sure we hold them. */
assert( zDb!=0 || sqlite3BtreeHoldsAllMutexes(db) );
for(i=OMIT_TEMPDB; i<db->nDb; i++){
@@ -86482,7 +90165,7 @@ SQLITE_PRIVATE Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const cha
assert( pSchema );
if( zDb && sqlite3StrICmp(zDb, db->aDb[j].zName) ) continue;
assert( sqlite3SchemaMutexHeld(db, j, 0) );
- p = sqlite3HashFind(&pSchema->idxHash, zName, nName);
+ p = sqlite3HashFind(&pSchema->idxHash, zName);
if( p ) break;
}
return p;
@@ -86495,10 +90178,12 @@ static void freeIndex(sqlite3 *db, Index *p){
#ifndef SQLITE_OMIT_ANALYZE
sqlite3DeleteIndexSamples(db, p);
#endif
- if( db==0 || db->pnBytesFreed==0 ) sqlite3KeyInfoUnref(p->pKeyInfo);
sqlite3ExprDelete(db, p->pPartIdxWhere);
sqlite3DbFree(db, p->zColAff);
if( p->isResized ) sqlite3DbFree(db, p->azColl);
+#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
+ sqlite3_free(p->aiRowEst);
+#endif
sqlite3DbFree(db, p);
}
@@ -86510,13 +90195,11 @@ static void freeIndex(sqlite3 *db, Index *p){
*/
SQLITE_PRIVATE void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char *zIdxName){
Index *pIndex;
- int len;
Hash *pHash;
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
pHash = &db->aDb[iDb].pSchema->idxHash;
- len = sqlite3Strlen30(zIdxName);
- pIndex = sqlite3HashInsert(pHash, zIdxName, len, 0);
+ pIndex = sqlite3HashInsert(pHash, zIdxName, 0);
if( ALWAYS(pIndex) ){
if( pIndex->pTable->pIndex==pIndex ){
pIndex->pTable->pIndex = pIndex->pNext;
@@ -86676,7 +90359,7 @@ SQLITE_PRIVATE void sqlite3DeleteTable(sqlite3 *db, Table *pTable){
if( !db || db->pnBytesFreed==0 ){
char *zName = pIndex->zName;
TESTONLY ( Index *pOld = ) sqlite3HashInsert(
- &pIndex->pSchema->idxHash, zName, sqlite3Strlen30(zName), 0
+ &pIndex->pSchema->idxHash, zName, 0
);
assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
assert( pOld==pIndex || pOld==0 );
@@ -86719,8 +90402,7 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
testcase( zTabName[0]==0 ); /* Zero-length table names are allowed */
pDb = &db->aDb[iDb];
- p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName,
- sqlite3Strlen30(zTabName),0);
+ p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName, 0);
sqlite3DeleteTable(db, p);
db->flags |= SQLITE_InternChanges;
}
@@ -87244,7 +90926,7 @@ SQLITE_PRIVATE char sqlite3AffinityType(const char *zIn, u8 *pszEst){
** estimate is scaled so that the size of an integer is 1. */
if( pszEst ){
*pszEst = 1; /* default size is approx 4 bytes */
- if( aff<=SQLITE_AFF_NONE ){
+ if( aff<SQLITE_AFF_NUMERIC ){
if( zChar ){
while( zChar[0] ){
if( sqlite3Isdigit(zChar[0]) ){
@@ -87303,7 +90985,7 @@ SQLITE_PRIVATE void sqlite3AddDefaultValue(Parse *pParse, ExprSpan *pSpan){
p = pParse->pNewTable;
if( p!=0 ){
pCol = &(p->aCol[p->nCol-1]);
- if( !sqlite3ExprIsConstantOrFunction(pSpan->pExpr) ){
+ if( !sqlite3ExprIsConstantOrFunction(pSpan->pExpr, db->init.busy) ){
sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant",
pCol->zName);
}else{
@@ -87615,8 +91297,8 @@ static char *createTableStmt(sqlite3 *db, Table *p){
zStmt[k++] = '(';
for(pCol=p->aCol, i=0; i<p->nCol; i++, pCol++){
static const char * const azType[] = {
- /* SQLITE_AFF_TEXT */ " TEXT",
/* SQLITE_AFF_NONE */ "",
+ /* SQLITE_AFF_TEXT */ " TEXT",
/* SQLITE_AFF_NUMERIC */ " NUM",
/* SQLITE_AFF_INTEGER */ " INT",
/* SQLITE_AFF_REAL */ " REAL"
@@ -87628,15 +91310,15 @@ static char *createTableStmt(sqlite3 *db, Table *p){
k += sqlite3Strlen30(&zStmt[k]);
zSep = zSep2;
identPut(zStmt, &k, pCol->zName);
- assert( pCol->affinity-SQLITE_AFF_TEXT >= 0 );
- assert( pCol->affinity-SQLITE_AFF_TEXT < ArraySize(azType) );
- testcase( pCol->affinity==SQLITE_AFF_TEXT );
+ assert( pCol->affinity-SQLITE_AFF_NONE >= 0 );
+ assert( pCol->affinity-SQLITE_AFF_NONE < ArraySize(azType) );
testcase( pCol->affinity==SQLITE_AFF_NONE );
+ testcase( pCol->affinity==SQLITE_AFF_TEXT );
testcase( pCol->affinity==SQLITE_AFF_NUMERIC );
testcase( pCol->affinity==SQLITE_AFF_INTEGER );
testcase( pCol->affinity==SQLITE_AFF_REAL );
- zType = azType[pCol->affinity - SQLITE_AFF_TEXT];
+ zType = azType[pCol->affinity - SQLITE_AFF_NONE];
len = sqlite3Strlen30(zType);
assert( pCol->affinity==SQLITE_AFF_NONE
|| pCol->affinity==sqlite3AffinityType(zType, 0) );
@@ -87720,7 +91402,7 @@ static int hasColumn(const i16 *aiCol, int nCol, int x){
** no rowid btree for a WITHOUT ROWID. Instead, the canonical
** data storage is a covering index btree.
** (2) Bypass the creation of the sqlite_master table entry
-** for the PRIMARY KEY as the the primary key index is now
+** for the PRIMARY KEY as the primary key index is now
** identified by the sqlite_master table entry of the table itself.
** (3) Set the Index.tnum of the PRIMARY KEY Index object in the
** schema to the rootpage from the main table.
@@ -87741,7 +91423,7 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
Vdbe *v = pParse->pVdbe;
/* Convert the OP_CreateTable opcode that would normally create the
- ** root-page for the table into a OP_CreateIndex opcode. The index
+ ** root-page for the table into an OP_CreateIndex opcode. The index
** created will become the PRIMARY KEY index.
*/
if( pParse->addrCrTab ){
@@ -87774,6 +91456,19 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
pTab->iPKey = -1;
}else{
pPk = sqlite3PrimaryKeyIndex(pTab);
+ /*
+ ** Remove all redundant columns from the PRIMARY KEY. For example, change
+ ** "PRIMARY KEY(a,b,a,b,c,b,c,d)" into just "PRIMARY KEY(a,b,c,d)". Later
+ ** code assumes the PRIMARY KEY contains no repeated columns.
+ */
+ for(i=j=1; i<pPk->nKeyCol; i++){
+ if( hasColumn(pPk->aiColumn, j, pPk->aiColumn[i]) ){
+ pPk->nColumn--;
+ }else{
+ pPk->aiColumn[j++] = pPk->aiColumn[i];
+ }
+ }
+ pPk->nKeyCol = j;
}
pPk->isCovering = 1;
assert( pPk!=0 );
@@ -88042,8 +91737,7 @@ SQLITE_PRIVATE void sqlite3EndTable(
Table *pOld;
Schema *pSchema = p->pSchema;
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
- pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName,
- sqlite3Strlen30(p->zName),p);
+ pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName, p);
if( pOld ){
assert( p==pOld ); /* Malloc must have failed inside HashInsert() */
db->mallocFailed = 1;
@@ -88154,7 +91848,7 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
int nErr = 0; /* Number of errors encountered */
int n; /* Temporarily holds the number of cursors assigned */
sqlite3 *db = pParse->db; /* Database connection for malloc errors */
- int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
+ sqlite3_xauth xAuth; /* Saved xAuth pointer */
assert( pTable );
@@ -88693,7 +92387,7 @@ SQLITE_PRIVATE void sqlite3CreateForeignKey(
assert( sqlite3SchemaMutexHeld(db, 0, p->pSchema) );
pNextTo = (FKey *)sqlite3HashInsert(&p->pSchema->fkeyHash,
- pFKey->zTo, sqlite3Strlen30(pFKey->zTo), (void *)pFKey
+ pFKey->zTo, (void *)pFKey
);
if( pNextTo==pFKey ){
db->mallocFailed = 1;
@@ -88756,7 +92450,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
int iPartIdxLabel; /* Jump to this label to skip a row */
Vdbe *v; /* Generate code into this virtual machine */
KeyInfo *pKey; /* KeyInfo for index */
- int regRecord; /* Register holding assemblied index record */
+ int regRecord; /* Register holding assembled index record */
sqlite3 *db = pParse->db; /* The database connection */
int iDb = sqlite3SchemaToIndex(db, pIndex->pSchema);
@@ -88781,7 +92475,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
/* Open the sorter cursor if we are to use one. */
iSorter = pParse->nTab++;
- sqlite3VdbeAddOp4(v, OP_SorterOpen, iSorter, 0, 0, (char*)
+ sqlite3VdbeAddOp4(v, OP_SorterOpen, iSorter, 0, pIndex->nKeyCol, (char*)
sqlite3KeyInfoRef(pKey), P4_KEYINFO);
/* Open the table. Loop through all rows of the table, inserting index
@@ -88812,7 +92506,7 @@ static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
}else{
addr2 = sqlite3VdbeCurrentAddr(v);
}
- sqlite3VdbeAddOp2(v, OP_SorterData, iSorter, regRecord);
+ sqlite3VdbeAddOp3(v, OP_SorterData, iSorter, regRecord, iIdx);
sqlite3VdbeAddOp3(v, OP_IdxInsert, iIdx, regRecord, 1);
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
sqlite3ReleaseTempReg(pParse, regRecord);
@@ -88969,6 +92663,10 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
assert( pTab!=0 );
assert( pParse->nErr==0 );
if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
+ && db->init.busy==0
+#if SQLITE_USER_AUTHENTICATION
+ && sqlite3UserAuthTable(pTab->zName)==0
+#endif
&& sqlite3StrNICmp(&pTab->zName[7],"altertab_",9)!=0 ){
sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName);
goto exit_create_index;
@@ -89130,7 +92828,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
pParse->checkSchema = 1;
goto exit_create_index;
}
- assert( pTab->nCol<=0x7fff && j<=0x7fff );
+ assert( j<=0x7fff );
pIndex->aiColumn[i] = (i16)j;
if( pListItem->pExpr ){
int nColl;
@@ -89241,8 +92939,7 @@ SQLITE_PRIVATE Index *sqlite3CreateIndex(
Index *p;
assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) );
p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
- pIndex->zName, sqlite3Strlen30(pIndex->zName),
- pIndex);
+ pIndex->zName, pIndex);
if( p ){
assert( p==pIndex ); /* Malloc must have failed */
db->mallocFailed = 1;
@@ -89357,7 +93054,7 @@ exit_create_index:
** Fill the Index.aiRowEst[] array with default information - information
** to be used when we have not run the ANALYZE command.
**
-** aiRowEst[0] is suppose to contain the number of elements in the index.
+** aiRowEst[0] is supposed to contain the number of elements in the index.
** Since we do not know, guess 1 million. aiRowEst[1] is an estimate of the
** number of rows in the table that match any particular value of the
** first column of the index. aiRowEst[2] is an estimate of the number
@@ -89736,7 +93433,7 @@ SQLITE_PRIVATE void sqlite3SrcListDelete(sqlite3 *db, SrcList *pList){
** if this is the first term of the FROM clause. pTable and pDatabase
** are the name of the table and database named in the FROM clause term.
** pDatabase is NULL if the database name qualifier is missing - the
-** usual case. If the term has a alias, then pAlias points to the
+** usual case. If the term has an alias, then pAlias points to the
** alias token. If the term is a subquery, then pSubquery is the
** SELECT statement that the subquery encodes. The pTable and
** pDatabase parameters are NULL for subqueries. The pOn and pUsing
@@ -90248,40 +93945,31 @@ SQLITE_PRIVATE void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){
** when it has finished using it.
*/
SQLITE_PRIVATE KeyInfo *sqlite3KeyInfoOfIndex(Parse *pParse, Index *pIdx){
+ int i;
+ int nCol = pIdx->nColumn;
+ int nKey = pIdx->nKeyCol;
+ KeyInfo *pKey;
if( pParse->nErr ) return 0;
-#ifndef SQLITE_OMIT_SHARED_CACHE
- if( pIdx->pKeyInfo && pIdx->pKeyInfo->db!=pParse->db ){
- sqlite3KeyInfoUnref(pIdx->pKeyInfo);
- pIdx->pKeyInfo = 0;
+ if( pIdx->uniqNotNull ){
+ pKey = sqlite3KeyInfoAlloc(pParse->db, nKey, nCol-nKey);
+ }else{
+ pKey = sqlite3KeyInfoAlloc(pParse->db, nCol, 0);
}
-#endif
- if( pIdx->pKeyInfo==0 ){
- int i;
- int nCol = pIdx->nColumn;
- int nKey = pIdx->nKeyCol;
- KeyInfo *pKey;
- if( pIdx->uniqNotNull ){
- pKey = sqlite3KeyInfoAlloc(pParse->db, nKey, nCol-nKey);
- }else{
- pKey = sqlite3KeyInfoAlloc(pParse->db, nCol, 0);
+ if( pKey ){
+ assert( sqlite3KeyInfoIsWriteable(pKey) );
+ for(i=0; i<nCol; i++){
+ char *zColl = pIdx->azColl[i];
+ assert( zColl!=0 );
+ pKey->aColl[i] = strcmp(zColl,"BINARY")==0 ? 0 :
+ sqlite3LocateCollSeq(pParse, zColl);
+ pKey->aSortOrder[i] = pIdx->aSortOrder[i];
}
- if( pKey ){
- assert( sqlite3KeyInfoIsWriteable(pKey) );
- for(i=0; i<nCol; i++){
- char *zColl = pIdx->azColl[i];
- assert( zColl!=0 );
- pKey->aColl[i] = strcmp(zColl,"BINARY")==0 ? 0 :
- sqlite3LocateCollSeq(pParse, zColl);
- pKey->aSortOrder[i] = pIdx->aSortOrder[i];
- }
- if( pParse->nErr ){
- sqlite3KeyInfoUnref(pKey);
- }else{
- pIdx->pKeyInfo = pKey;
- }
+ if( pParse->nErr ){
+ sqlite3KeyInfoUnref(pKey);
+ pKey = 0;
}
}
- return sqlite3KeyInfoRef(pIdx->pKeyInfo);
+ return pKey;
}
#ifndef SQLITE_OMIT_CTE
@@ -90499,7 +94187,7 @@ SQLITE_PRIVATE int sqlite3CheckCollSeq(Parse *pParse, CollSeq *pColl){
**
** Each pointer stored in the sqlite3.aCollSeq hash table contains an
** array of three CollSeq structures. The first is the collation sequence
-** prefferred for UTF-8, the second UTF-16le, and the third UTF-16be.
+** preferred for UTF-8, the second UTF-16le, and the third UTF-16be.
**
** Stored immediately after the three collation sequences is a copy of
** the collation sequence name. A pointer to this string is stored in
@@ -90511,11 +94199,11 @@ static CollSeq *findCollSeqEntry(
int create /* Create a new entry if true */
){
CollSeq *pColl;
- int nName = sqlite3Strlen30(zName);
- pColl = sqlite3HashFind(&db->aCollSeq, zName, nName);
+ pColl = sqlite3HashFind(&db->aCollSeq, zName);
if( 0==pColl && create ){
- pColl = sqlite3DbMallocZero(db, 3*sizeof(*pColl) + nName + 1 );
+ int nName = sqlite3Strlen30(zName);
+ pColl = sqlite3DbMallocZero(db, 3*sizeof(*pColl) + nName + 1);
if( pColl ){
CollSeq *pDel = 0;
pColl[0].zName = (char*)&pColl[3];
@@ -90526,7 +94214,7 @@ static CollSeq *findCollSeqEntry(
pColl[2].enc = SQLITE_UTF16BE;
memcpy(pColl[0].zName, zName, nName);
pColl[0].zName[nName] = 0;
- pDel = sqlite3HashInsert(&db->aCollSeq, pColl[0].zName, nName, pColl);
+ pDel = sqlite3HashInsert(&db->aCollSeq, pColl[0].zName, pColl);
/* If a malloc() failure occurred in sqlite3HashInsert(), it will
** return the pColl pointer to be deleted (because it wasn't added
@@ -90926,7 +94614,7 @@ SQLITE_PRIVATE void sqlite3MaterializeView(
Parse *pParse, /* Parsing context */
Table *pView, /* View definition */
Expr *pWhere, /* Optional WHERE clause to be added */
- int iCur /* Cursor number for ephemerial table */
+ int iCur /* Cursor number for ephemeral table */
){
SelectDest dest;
Select *pSel;
@@ -91062,8 +94750,8 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
WhereInfo *pWInfo; /* Information about the WHERE clause */
Index *pIdx; /* For looping over indices of the table */
int iTabCur; /* Cursor number for the table */
- int iDataCur; /* VDBE cursor for the canonical data source */
- int iIdxCur; /* Cursor number of the first index */
+ int iDataCur = 0; /* VDBE cursor for the canonical data source */
+ int iIdxCur = 0; /* Cursor number of the first index */
int nIdx; /* Number of indices */
sqlite3 *db; /* Main database structure */
AuthContext sContext; /* Authorization context */
@@ -91084,7 +94772,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
int addrBypass = 0; /* Address of jump over the delete logic */
int addrLoop = 0; /* Top of the delete loop */
int addrDelete = 0; /* Jump directly to the delete logic */
- int addrEphOpen = 0; /* Instruction to open the Ephermeral table */
+ int addrEphOpen = 0; /* Instruction to open the Ephemeral table */
#ifndef SQLITE_OMIT_TRIGGER
int isView; /* True if attempting to delete from a view */
@@ -91164,7 +94852,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
sqlite3BeginWriteOperation(pParse, 1, iDb);
/* If we are trying to delete from a view, realize that view into
- ** a ephemeral table.
+ ** an ephemeral table.
*/
#if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER)
if( isView ){
@@ -91218,7 +94906,7 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
iRowSet = ++pParse->nMem;
sqlite3VdbeAddOp2(v, OP_Null, 0, iRowSet);
}else{
- /* For a WITHOUT ROWID table, create an ephermeral table used to
+ /* For a WITHOUT ROWID table, create an ephemeral table used to
** hold all primary keys for rows to be deleted. */
pPk = sqlite3PrimaryKeyIndex(pTab);
assert( pPk!=0 );
@@ -91302,10 +94990,11 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
** triggers.
*/
if( !isView ){
+ testcase( IsVirtual(pTab) );
sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, iTabCur, aToOpen,
&iDataCur, &iIdxCur);
- assert( pPk || iDataCur==iTabCur );
- assert( pPk || iIdxCur==iDataCur+1 );
+ assert( pPk || IsVirtual(pTab) || iDataCur==iTabCur );
+ assert( pPk || IsVirtual(pTab) || iIdxCur==iDataCur+1 );
}
/* Set up a loop over the rowids/primary-keys that were found in the
@@ -91313,9 +95002,10 @@ SQLITE_PRIVATE void sqlite3DeleteFrom(
*/
if( okOnePass ){
/* Just one row. Hence the top-of-loop is a no-op */
- assert( nKey==nPk ); /* OP_Found will use an unpacked key */
+ assert( nKey==nPk ); /* OP_Found will use an unpacked key */
+ assert( !IsVirtual(pTab) );
if( aToOpen[iDataCur-iTabCur] ){
- assert( pPk!=0 );
+ assert( pPk!=0 || pTab->pSelect!=0 );
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, addrBypass, iKey, nKey);
VdbeCoverage(v);
}
@@ -91391,7 +95081,7 @@ delete_from_cleanup:
return;
}
/* Make sure "isView" and other macros defined above are undefined. Otherwise
-** thely may interfere with compilation of other functions in this file
+** they may interfere with compilation of other functions in this file
** (or in another file, if this file becomes part of the amalgamation). */
#ifdef isView
#undef isView
@@ -91685,7 +95375,7 @@ SQLITE_PRIVATE void sqlite3ResolvePartIdxLabel(Parse *pParse, int iLabel){
** May you share freely, never taking more than you give.
**
*************************************************************************
-** This file contains the C-language implementions for many of the SQL
+** This file contains the C-language implementations for many of the SQL
** functions of SQLite. (Some function, and in particular the date and
** time functions, are implemented separately.)
*/
@@ -91696,7 +95386,10 @@ SQLITE_PRIVATE void sqlite3ResolvePartIdxLabel(Parse *pParse, int iLabel){
** Return the collating function associated with a function.
*/
static CollSeq *sqlite3GetFuncCollSeq(sqlite3_context *context){
- return context->pColl;
+ VdbeOp *pOp = &context->pVdbe->aOp[context->iOp-1];
+ assert( pOp->opcode==OP_CollSeq );
+ assert( pOp->p4type==P4_COLLSEQ );
+ return pOp->p4.pColl;
}
/*
@@ -91828,8 +95521,8 @@ static void absFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
default: {
/* Because sqlite3_value_double() returns 0.0 if the argument is not
** something that can be converted into a number, we have:
- ** IMP: R-57326-31541 Abs(X) return 0.0 if X is a string or blob that
- ** cannot be converted to a numeric value.
+ ** IMP: R-01992-00519 Abs(X) returns 0.0 if X is a string or blob
+ ** that cannot be converted to a numeric value.
*/
double rVal = sqlite3_value_double(argv[0]);
if( rVal<0 ) rVal = -rVal;
@@ -91999,13 +95692,14 @@ static void substrFunc(
for(z2=z; *z2 && p2; p2--){
SQLITE_SKIP_UTF8(z2);
}
- sqlite3_result_text(context, (char*)z, (int)(z2-z), SQLITE_TRANSIENT);
+ sqlite3_result_text64(context, (char*)z, z2-z, SQLITE_TRANSIENT,
+ SQLITE_UTF8);
}else{
if( p1+p2>len ){
p2 = len-p1;
if( p2<0 ) p2 = 0;
}
- sqlite3_result_blob(context, (char*)&z[p1], (int)p2, SQLITE_TRANSIENT);
+ sqlite3_result_blob64(context, (char*)&z[p1], (u64)p2, SQLITE_TRANSIENT);
}
}
@@ -92064,7 +95758,7 @@ static void *contextMalloc(sqlite3_context *context, i64 nByte){
sqlite3_result_error_toobig(context);
z = 0;
}else{
- z = sqlite3Malloc((int)nByte);
+ z = sqlite3Malloc(nByte);
if( !z ){
sqlite3_result_error_nomem(context);
}
@@ -92240,10 +95934,12 @@ struct compareInfo {
** whereas only characters less than 0x80 do in ASCII.
*/
#if defined(SQLITE_EBCDIC)
-# define sqlite3Utf8Read(A) (*((*A)++))
-# define GlobUpperToLower(A) A = sqlite3UpperToLower[A]
+# define sqlite3Utf8Read(A) (*((*A)++))
+# define GlobUpperToLower(A) A = sqlite3UpperToLower[A]
+# define GlobUpperToLowerAscii(A) A = sqlite3UpperToLower[A]
#else
-# define GlobUpperToLower(A) if( !((A)&~0x7f) ){ A = sqlite3UpperToLower[A]; }
+# define GlobUpperToLower(A) if( A<=0x7f ){ A = sqlite3UpperToLower[A]; }
+# define GlobUpperToLowerAscii(A) A = sqlite3UpperToLower[A]
#endif
static const struct compareInfo globInfo = { '*', '?', '[', 0 };
@@ -92256,7 +95952,7 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 };
/*
** Compare two UTF-8 strings for equality where the first string can
-** potentially be a "glob" expression. Return true (1) if they
+** potentially be a "glob" or "like" expression. Return true (1) if they
** are the same and false (0) if they are different.
**
** Globbing rules:
@@ -92276,11 +95972,18 @@ static const struct compareInfo likeInfoAlt = { '%', '_', 0, 0 };
** "[a-z]" matches any single lower-case letter. To match a '-', make
** it the last character in the list.
**
-** This routine is usually quick, but can be N**2 in the worst case.
+** Like matching rules:
+**
+** '%' Matches any sequence of zero or more characters
+**
+*** '_' Matches any one character
+**
+** Ec Where E is the "esc" character and c is any other
+** character, including '%', '_', and esc, match exactly c.
**
-** Hints: to match '*' or '?', put them in "[]". Like this:
+** The comments through this routine usually assume glob matching.
**
-** abc[*]xyz Matches "abc*xyz" only
+** This routine is usually quick, but can be N**2 in the worst case.
*/
static int patternCompare(
const u8 *zPattern, /* The glob pattern */
@@ -92288,17 +95991,25 @@ static int patternCompare(
const struct compareInfo *pInfo, /* Information about how to do the compare */
u32 esc /* The escape character */
){
- u32 c, c2;
- int invert;
- int seen;
- u8 matchOne = pInfo->matchOne;
- u8 matchAll = pInfo->matchAll;
- u8 matchSet = pInfo->matchSet;
- u8 noCase = pInfo->noCase;
- int prevEscape = 0; /* True if the previous character was 'escape' */
+ u32 c, c2; /* Next pattern and input string chars */
+ u32 matchOne = pInfo->matchOne; /* "?" or "_" */
+ u32 matchAll = pInfo->matchAll; /* "*" or "%" */
+ u32 matchOther; /* "[" or the escape character */
+ u8 noCase = pInfo->noCase; /* True if uppercase==lowercase */
+ const u8 *zEscaped = 0; /* One past the last escaped input char */
+
+ /* The GLOB operator does not have an ESCAPE clause. And LIKE does not
+ ** have the matchSet operator. So we either have to look for one or
+ ** the other, never both. Hence the single variable matchOther is used
+ ** to store the one we have to look for.
+ */
+ matchOther = esc ? esc : pInfo->matchSet;
while( (c = sqlite3Utf8Read(&zPattern))!=0 ){
- if( c==matchAll && !prevEscape ){
+ if( c==matchAll ){ /* Match "*" */
+ /* Skip over multiple "*" characters in the pattern. If there
+ ** are also "?" characters, skip those as well, but consume a
+ ** single character of the input string for each "?" skipped */
while( (c=sqlite3Utf8Read(&zPattern)) == matchAll
|| c == matchOne ){
if( c==matchOne && sqlite3Utf8Read(&zString)==0 ){
@@ -92306,86 +96017,98 @@ static int patternCompare(
}
}
if( c==0 ){
- return 1;
- }else if( c==esc ){
- c = sqlite3Utf8Read(&zPattern);
- if( c==0 ){
- return 0;
- }
- }else if( c==matchSet ){
- assert( esc==0 ); /* This is GLOB, not LIKE */
- assert( matchSet<0x80 ); /* '[' is a single-byte character */
- while( *zString && patternCompare(&zPattern[-1],zString,pInfo,esc)==0 ){
- SQLITE_SKIP_UTF8(zString);
+ return 1; /* "*" at the end of the pattern matches */
+ }else if( c==matchOther ){
+ if( esc ){
+ c = sqlite3Utf8Read(&zPattern);
+ if( c==0 ) return 0;
+ }else{
+ /* "[...]" immediately follows the "*". We have to do a slow
+ ** recursive search in this case, but it is an unusual case. */
+ assert( matchOther<0x80 ); /* '[' is a single-byte character */
+ while( *zString
+ && patternCompare(&zPattern[-1],zString,pInfo,esc)==0 ){
+ SQLITE_SKIP_UTF8(zString);
+ }
+ return *zString!=0;
}
- return *zString!=0;
}
- while( (c2 = sqlite3Utf8Read(&zString))!=0 ){
+
+ /* At this point variable c contains the first character of the
+ ** pattern string past the "*". Search in the input string for the
+ ** first matching character and recursively contine the match from
+ ** that point.
+ **
+ ** For a case-insensitive search, set variable cx to be the same as
+ ** c but in the other case and search the input string for either
+ ** c or cx.
+ */
+ if( c<=0x80 ){
+ u32 cx;
if( noCase ){
- GlobUpperToLower(c2);
- GlobUpperToLower(c);
- while( c2 != 0 && c2 != c ){
- c2 = sqlite3Utf8Read(&zString);
- GlobUpperToLower(c2);
- }
+ cx = sqlite3Toupper(c);
+ c = sqlite3Tolower(c);
}else{
- while( c2 != 0 && c2 != c ){
- c2 = sqlite3Utf8Read(&zString);
- }
+ cx = c;
+ }
+ while( (c2 = *(zString++))!=0 ){
+ if( c2!=c && c2!=cx ) continue;
+ if( patternCompare(zPattern,zString,pInfo,esc) ) return 1;
+ }
+ }else{
+ while( (c2 = sqlite3Utf8Read(&zString))!=0 ){
+ if( c2!=c ) continue;
+ if( patternCompare(zPattern,zString,pInfo,esc) ) return 1;
}
- if( c2==0 ) return 0;
- if( patternCompare(zPattern,zString,pInfo,esc) ) return 1;
}
return 0;
- }else if( c==matchOne && !prevEscape ){
- if( sqlite3Utf8Read(&zString)==0 ){
- return 0;
- }
- }else if( c==matchSet ){
- u32 prior_c = 0;
- assert( esc==0 ); /* This only occurs for GLOB, not LIKE */
- seen = 0;
- invert = 0;
- c = sqlite3Utf8Read(&zString);
- if( c==0 ) return 0;
- c2 = sqlite3Utf8Read(&zPattern);
- if( c2=='^' ){
- invert = 1;
- c2 = sqlite3Utf8Read(&zPattern);
- }
- if( c2==']' ){
- if( c==']' ) seen = 1;
+ }
+ if( c==matchOther ){
+ if( esc ){
+ c = sqlite3Utf8Read(&zPattern);
+ if( c==0 ) return 0;
+ zEscaped = zPattern;
+ }else{
+ u32 prior_c = 0;
+ int seen = 0;
+ int invert = 0;
+ c = sqlite3Utf8Read(&zString);
+ if( c==0 ) return 0;
c2 = sqlite3Utf8Read(&zPattern);
- }
- while( c2 && c2!=']' ){
- if( c2=='-' && zPattern[0]!=']' && zPattern[0]!=0 && prior_c>0 ){
+ if( c2=='^' ){
+ invert = 1;
c2 = sqlite3Utf8Read(&zPattern);
- if( c>=prior_c && c<=c2 ) seen = 1;
- prior_c = 0;
- }else{
- if( c==c2 ){
- seen = 1;
+ }
+ if( c2==']' ){
+ if( c==']' ) seen = 1;
+ c2 = sqlite3Utf8Read(&zPattern);
+ }
+ while( c2 && c2!=']' ){
+ if( c2=='-' && zPattern[0]!=']' && zPattern[0]!=0 && prior_c>0 ){
+ c2 = sqlite3Utf8Read(&zPattern);
+ if( c>=prior_c && c<=c2 ) seen = 1;
+ prior_c = 0;
+ }else{
+ if( c==c2 ){
+ seen = 1;
+ }
+ prior_c = c2;
}
- prior_c = c2;
+ c2 = sqlite3Utf8Read(&zPattern);
}
- c2 = sqlite3Utf8Read(&zPattern);
- }
- if( c2==0 || (seen ^ invert)==0 ){
- return 0;
- }
- }else if( esc==c && !prevEscape ){
- prevEscape = 1;
- }else{
- c2 = sqlite3Utf8Read(&zString);
- if( noCase ){
- GlobUpperToLower(c);
- GlobUpperToLower(c2);
- }
- if( c!=c2 ){
- return 0;
+ if( c2==0 || (seen ^ invert)==0 ){
+ return 0;
+ }
+ continue;
}
- prevEscape = 0;
}
+ c2 = sqlite3Utf8Read(&zString);
+ if( c==c2 ) continue;
+ if( noCase && c<0x80 && c2<0x80 && sqlite3Tolower(c)==sqlite3Tolower(c2) ){
+ continue;
+ }
+ if( c==matchOne && zPattern!=zEscaped && c2!=0 ) continue;
+ return 0;
}
return *zString==0;
}
@@ -92715,7 +96438,7 @@ static void charFunc(
*zOut++ = 0x80 + (u8)(c & 0x3F);
} \
}
- sqlite3_result_text(context, (char*)z, (int)(zOut-z), sqlite3_free);
+ sqlite3_result_text64(context, (char*)z, zOut-z, sqlite3_free, SQLITE_UTF8);
}
/*
@@ -93165,6 +96888,7 @@ static void minmaxStep(
sqlite3SkipAccumulatorLoad(context);
}
}else{
+ pBest->db = sqlite3_context_db_handle(context);
sqlite3VdbeMemCopy(pBest, pArg);
}
}
@@ -93312,7 +97036,7 @@ SQLITE_PRIVATE int sqlite3IsLikeFunction(sqlite3 *db, Expr *pExpr, int *pIsNocas
}
/*
-** All all of the FuncDef structures in the aBuiltinFunc[] array above
+** All of the FuncDef structures in the aBuiltinFunc[] array above
** to the global function hash table. This occurs at start-time (as
** a consequence of calling sqlite3_initialize()).
**
@@ -93336,10 +97060,12 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
FUNCTION(trim, 2, 3, 0, trimFunc ),
FUNCTION(min, -1, 0, 1, minmaxFunc ),
FUNCTION(min, 0, 0, 1, 0 ),
- AGGREGATE(min, 1, 0, 1, minmaxStep, minMaxFinalize ),
+ AGGREGATE2(min, 1, 0, 1, minmaxStep, minMaxFinalize,
+ SQLITE_FUNC_MINMAX ),
FUNCTION(max, -1, 1, 1, minmaxFunc ),
FUNCTION(max, 0, 1, 1, 0 ),
- AGGREGATE(max, 1, 1, 1, minmaxStep, minMaxFinalize ),
+ AGGREGATE2(max, 1, 1, 1, minmaxStep, minMaxFinalize,
+ SQLITE_FUNC_MINMAX ),
FUNCTION2(typeof, 1, 0, 0, typeofFunc, SQLITE_FUNC_TYPEOF),
FUNCTION2(length, 1, 0, 0, lengthFunc, SQLITE_FUNC_LENGTH),
FUNCTION(instr, 2, 0, 0, instrFunc ),
@@ -93369,6 +97095,9 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
FUNCTION(sqlite_version, 0, 0, 0, versionFunc ),
FUNCTION(sqlite_source_id, 0, 0, 0, sourceidFunc ),
FUNCTION(sqlite_log, 2, 0, 0, errlogFunc ),
+#if SQLITE_USER_AUTHENTICATION
+ FUNCTION(sqlite_crypt, 2, 0, 0, sqlite3CryptFunc ),
+#endif
#ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
FUNCTION(sqlite_compileoption_used,1, 0, 0, compileoptionusedFunc ),
FUNCTION(sqlite_compileoption_get, 1, 0, 0, compileoptiongetFunc ),
@@ -93389,8 +97118,8 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
AGGREGATE(sum, 1, 0, 0, sumStep, sumFinalize ),
AGGREGATE(total, 1, 0, 0, sumStep, totalFinalize ),
AGGREGATE(avg, 1, 0, 0, sumStep, avgFinalize ),
- /* AGGREGATE(count, 0, 0, 0, countStep, countFinalize ), */
- {0,SQLITE_UTF8|SQLITE_FUNC_COUNT,0,0,0,countStep,countFinalize,"count",0,0},
+ AGGREGATE2(count, 0, 0, 0, countStep, countFinalize,
+ SQLITE_FUNC_COUNT ),
AGGREGATE(count, 1, 0, 0, countStep, countFinalize ),
AGGREGATE(group_concat, 1, 0, 0, groupConcatStep, groupConcatFinalize),
AGGREGATE(group_concat, 2, 0, 0, groupConcatStep, groupConcatFinalize),
@@ -93597,7 +97326,7 @@ SQLITE_PRIVATE void sqlite3RegisterGlobalFunctions(void){
**
** 4) No parent key columns were provided explicitly as part of the
** foreign key definition, and the PRIMARY KEY of the parent table
-** consists of a a different number of columns to the child key in
+** consists of a different number of columns to the child key in
** the child table.
**
** then non-zero is returned, and a "foreign key mismatch" error loaded
@@ -93861,7 +97590,7 @@ static void fkLookupParent(
OE_Abort, 0, P4_STATIC, P5_ConstraintFK);
}else{
if( nIncr>0 && pFKey->isDeferred==0 ){
- sqlite3ParseToplevel(pParse)->mayAbort = 1;
+ sqlite3MayAbort(pParse);
}
sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
}
@@ -93933,6 +97662,10 @@ static Expr *exprTableColumn(
** code for an SQL UPDATE operation, this function may be called twice -
** once to "delete" the old row and once to "insert" the new row.
**
+** Parameter nIncr is passed -1 when inserting a row (as this may decrease
+** the number of FK violations in the db) or +1 when deleting one (as this
+** may increase the number of FK constraint problems).
+**
** The code generated by this function scans through the rows in the child
** table that correspond to the parent table row being deleted or inserted.
** For each child row found, one of the following actions is taken:
@@ -94049,13 +97782,9 @@ static void fkScanChildren(
sqlite3ResolveExprNames(&sNameContext, pWhere);
/* Create VDBE to loop through the entries in pSrc that match the WHERE
- ** clause. If the constraint is not deferred, throw an exception for
- ** each row found. Otherwise, for deferred constraints, increment the
- ** deferred constraint counter by nIncr for each row selected. */
+ ** clause. For each row found, increment either the deferred or immediate
+ ** foreign key constraint counter. */
pWInfo = sqlite3WhereBegin(pParse, pSrc, pWhere, 0, 0, 0, 0);
- if( nIncr>0 && pFKey->isDeferred==0 ){
- sqlite3ParseToplevel(pParse)->mayAbort = 1;
- }
sqlite3VdbeAddOp2(v, OP_FkCounter, pFKey->isDeferred, nIncr);
if( pWInfo ){
sqlite3WhereEnd(pWInfo);
@@ -94083,8 +97812,7 @@ static void fkScanChildren(
** table).
*/
SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *pTab){
- int nName = sqlite3Strlen30(pTab->zName);
- return (FKey *)sqlite3HashFind(&pTab->pSchema->fkeyHash, pTab->zName, nName);
+ return (FKey *)sqlite3HashFind(&pTab->pSchema->fkeyHash, pTab->zName);
}
/*
@@ -94236,6 +97964,24 @@ static int fkParentIsModified(
}
/*
+** Return true if the parser passed as the first argument is being
+** used to code a trigger that is really a "SET NULL" action belonging
+** to trigger pFKey.
+*/
+static int isSetNullAction(Parse *pParse, FKey *pFKey){
+ Parse *pTop = sqlite3ParseToplevel(pParse);
+ if( pTop->pTriggerPrg ){
+ Trigger *p = pTop->pTriggerPrg->pTrigger;
+ if( (p==pFKey->apTrigger[0] && pFKey->aAction[0]==OE_SetNull)
+ || (p==pFKey->apTrigger[1] && pFKey->aAction[1]==OE_SetNull)
+ ){
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
** This function is called when inserting, deleting or updating a row of
** table pTab to generate VDBE code to perform foreign key constraint
** processing for the operation.
@@ -94287,7 +98033,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
int *aiCol;
int iCol;
int i;
- int isIgnore = 0;
+ int bIgnore = 0;
if( aChange
&& sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0
@@ -94346,7 +98092,7 @@ SQLITE_PRIVATE void sqlite3FkCheck(
int rcauth;
char *zCol = pTo->aCol[pIdx ? pIdx->aiColumn[i] : pTo->iPKey].zName;
rcauth = sqlite3AuthReadCol(pParse, pTo->zName, zCol, iDb);
- isIgnore = (rcauth==SQLITE_IGNORE);
+ bIgnore = (rcauth==SQLITE_IGNORE);
}
#endif
}
@@ -94361,12 +98107,18 @@ SQLITE_PRIVATE void sqlite3FkCheck(
/* A row is being removed from the child table. Search for the parent.
** If the parent does not exist, removing the child row resolves an
** outstanding foreign key constraint violation. */
- fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1,isIgnore);
+ fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regOld, -1, bIgnore);
}
- if( regNew!=0 ){
+ if( regNew!=0 && !isSetNullAction(pParse, pFKey) ){
/* A row is being added to the child table. If a parent row cannot
- ** be found, adding the child row has violated the FK constraint. */
- fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1,isIgnore);
+ ** be found, adding the child row has violated the FK constraint.
+ **
+ ** If this operation is being performed as part of a trigger program
+ ** that is actually a "SET NULL" action belonging to this very
+ ** foreign key, then omit this scan altogether. As all child key
+ ** values are guaranteed to be NULL, it is not possible for adding
+ ** this row to cause an FK violation. */
+ fkLookupParent(pParse, iDb, pTo, pIdx, pFKey, aiCol, regNew, +1, bIgnore);
}
sqlite3DbFree(db, aiFree);
@@ -94387,8 +98139,8 @@ SQLITE_PRIVATE void sqlite3FkCheck(
&& !pParse->pToplevel && !pParse->isMultiWrite
){
assert( regOld==0 && regNew!=0 );
- /* Inserting a single row into a parent table cannot cause an immediate
- ** foreign key violation. So do nothing in this case. */
+ /* Inserting a single row into a parent table cannot cause (or fix)
+ ** an immediate foreign key violation. So do nothing in this case. */
continue;
}
@@ -94412,13 +98164,28 @@ SQLITE_PRIVATE void sqlite3FkCheck(
fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
}
if( regOld!=0 ){
- /* If there is a RESTRICT action configured for the current operation
- ** on the parent table of this FK, then throw an exception
- ** immediately if the FK constraint is violated, even if this is a
- ** deferred trigger. That's what RESTRICT means. To defer checking
- ** the constraint, the FK should specify NO ACTION (represented
- ** using OE_None). NO ACTION is the default. */
+ int eAction = pFKey->aAction[aChange!=0];
fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
+ /* If this is a deferred FK constraint, or a CASCADE or SET NULL
+ ** action applies, then any foreign key violations caused by
+ ** removing the parent key will be rectified by the action trigger.
+ ** So do not set the "may-abort" flag in this case.
+ **
+ ** Note 1: If the FK is declared "ON UPDATE CASCADE", then the
+ ** may-abort flag will eventually be set on this statement anyway
+ ** (when this function is called as part of processing the UPDATE
+ ** within the action trigger).
+ **
+ ** Note 2: At first glance it may seem like SQLite could simply omit
+ ** all OP_FkCounter related scans when either CASCADE or SET NULL
+ ** applies. The trouble starts if the CASCADE or SET NULL action
+ ** trigger causes other triggers or action rules attached to the
+ ** child table to fire. In these cases the fk constraint counters
+ ** might be set incorrectly if any OP_FkCounter related scans are
+ ** omitted. */
+ if( !pFKey->isDeferred && eAction!=OE_Cascade && eAction!=OE_SetNull ){
+ sqlite3MayAbort(pParse);
+ }
}
pItem->zName = 0;
sqlite3SrcListDelete(db, pSrc);
@@ -94762,7 +98529,7 @@ SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
}else{
void *p = (void *)pFKey->pNextTo;
const char *z = (p ? pFKey->pNextTo->zTo : pFKey->zTo);
- sqlite3HashInsert(&pTab->pSchema->fkeyHash, z, sqlite3Strlen30(z), p);
+ sqlite3HashInsert(&pTab->pSchema->fkeyHash, z, p);
}
if( pFKey->pNextTo ){
pFKey->pNextTo->pPrevTo = pFKey->pPrevTo;
@@ -94845,13 +98612,13 @@ SQLITE_PRIVATE void sqlite3OpenTable(
**
** Character Column affinity
** ------------------------------
-** 'a' TEXT
-** 'b' NONE
-** 'c' NUMERIC
-** 'd' INTEGER
-** 'e' REAL
+** 'A' NONE
+** 'B' TEXT
+** 'C' NUMERIC
+** 'D' INTEGER
+** 'F' REAL
**
-** An extra 'd' is appended to the end of the string to cover the
+** An extra 'D' is appended to the end of the string to cover the
** rowid that appears as the last column in every index.
**
** Memory for the buffer containing the column index affinity string
@@ -94900,11 +98667,11 @@ SQLITE_PRIVATE const char *sqlite3IndexAffinityStr(Vdbe *v, Index *pIdx){
**
** Character Column affinity
** ------------------------------
-** 'a' TEXT
-** 'b' NONE
-** 'c' NUMERIC
-** 'd' INTEGER
-** 'e' REAL
+** 'A' NONE
+** 'B' TEXT
+** 'C' NUMERIC
+** 'D' INTEGER
+** 'E' REAL
*/
SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
int i;
@@ -95199,7 +98966,7 @@ static int xferOptimization(
** The 4th template is used if the insert statement takes its
** values from a SELECT but the data is being inserted into a table
** that is also read as part of the SELECT. In the third form,
-** we have to use a intermediate table to store the results of
+** we have to use an intermediate table to store the results of
** the select. The template is like this:
**
** X <- A
@@ -95364,7 +99131,7 @@ SQLITE_PRIVATE void sqlite3Insert(
regAutoinc = autoIncBegin(pParse, iDb, pTab);
/* Allocate registers for holding the rowid of the new row,
- ** the content of the new row, and the assemblied row record.
+ ** the content of the new row, and the assembled row record.
*/
regRowid = regIns = pParse->nMem+1;
pParse->nMem += pTab->nCol + 1;
@@ -95816,7 +99583,7 @@ insert_cleanup:
}
/* Make sure "isView" and other macros defined above are undefined. Otherwise
-** thely may interfere with compilation of other functions in this file
+** they may interfere with compilation of other functions in this file
** (or in another file, if this file becomes part of the amalgamation). */
#ifdef isView
#undef isView
@@ -95932,7 +99699,7 @@ SQLITE_PRIVATE void sqlite3GenerateConstraintChecks(
int ix; /* Index loop counter */
int nCol; /* Number of columns */
int onError; /* Conflict resolution strategy */
- int j1; /* Addresss of jump instruction */
+ int j1; /* Address of jump instruction */
int seenReplace = 0; /* True if REPLACE is used to resolve INT PK conflict */
int nPkField; /* Number of fields in PRIMARY KEY. 1 for ROWID tables */
int ipkTop = 0; /* Top of the rowid change constraint check */
@@ -96336,7 +100103,7 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
Index *pIdx; /* An index being inserted or updated */
u8 pik_flags; /* flag values passed to the btree insert */
int regData; /* Content registers (after the rowid) */
- int regRec; /* Register holding assemblied record for the table */
+ int regRec; /* Register holding assembled record for the table */
int i; /* Loop counter */
u8 bAffinityDone = 0; /* True if OP_Affinity has been run already */
@@ -96401,6 +100168,9 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
** For a WITHOUT ROWID table, *piDataCur will be somewhere in the range
** of *piIdxCurs, depending on where the PRIMARY KEY index appears on the
** pTab->pIndex list.
+**
+** If pTab is a virtual table, then this routine is a no-op and the
+** *piDataCur and *piIdxCur values are left uninitialized.
*/
SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
Parse *pParse, /* Parsing context */
@@ -96419,9 +100189,9 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
assert( op==OP_OpenRead || op==OP_OpenWrite );
if( IsVirtual(pTab) ){
- assert( aToOpen==0 );
- *piDataCur = 0;
- *piIdxCur = 1;
+ /* This routine is a no-op for virtual tables. Leave the output
+ ** variables *piDataCur and *piIdxCur uninitialized so that valgrind
+ ** can detect if they are used by mistake in the caller. */
return 0;
}
iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
@@ -96458,7 +100228,7 @@ SQLITE_PRIVATE int sqlite3OpenTableAndIndices(
** The following global variable is incremented whenever the
** transfer optimization is used. This is used for testing
** purposes only - to make sure the transfer optimization really
-** is happening when it is suppose to.
+** is happening when it is supposed to.
*/
SQLITE_API int sqlite3_xferopt_count;
#endif /* SQLITE_TEST */
@@ -96525,7 +100295,7 @@ static int xferCompatibleIndex(Index *pDest, Index *pSrc){
** INSERT INTO tab1 SELECT * FROM tab2;
**
** The xfer optimization transfers raw records from tab2 over to tab1.
-** Columns are not decoded and reassemblied, which greatly improves
+** Columns are not decoded and reassembled, which greatly improves
** performance. Raw index records are transferred in the same way.
**
** The xfer optimization is only attempted if tab1 and tab2 are compatible.
@@ -96853,7 +100623,7 @@ SQLITE_API int sqlite3_exec(
if( zSql==0 ) zSql = "";
sqlite3_mutex_enter(db->mutex);
- sqlite3Error(db, SQLITE_OK, 0);
+ sqlite3Error(db, SQLITE_OK);
while( rc==SQLITE_OK && zSql[0] ){
int nCol;
char **azVals = 0;
@@ -96911,7 +100681,7 @@ SQLITE_API int sqlite3_exec(
rc = SQLITE_ABORT;
sqlite3VdbeFinalize((Vdbe *)pStmt);
pStmt = 0;
- sqlite3Error(db, SQLITE_ABORT, 0);
+ sqlite3Error(db, SQLITE_ABORT);
goto exec_out;
}
}
@@ -96934,14 +100704,14 @@ exec_out:
sqlite3DbFree(db, azCols);
rc = sqlite3ApiExit(db, rc);
- if( rc!=SQLITE_OK && ALWAYS(rc==sqlite3_errcode(db)) && pzErrMsg ){
+ if( rc!=SQLITE_OK && pzErrMsg ){
int nErrMsg = 1 + sqlite3Strlen30(sqlite3_errmsg(db));
*pzErrMsg = sqlite3Malloc(nErrMsg);
if( *pzErrMsg ){
memcpy(*pzErrMsg, sqlite3_errmsg(db), nErrMsg);
}else{
rc = SQLITE_NOMEM;
- sqlite3Error(db, SQLITE_NOMEM, 0);
+ sqlite3Error(db, SQLITE_NOMEM);
}
}else if( pzErrMsg ){
*pzErrMsg = 0;
@@ -97003,7 +100773,7 @@ typedef struct sqlite3_api_routines sqlite3_api_routines;
** WARNING: In order to maintain backwards compatibility, add new
** interfaces to the end of this structure only. If you insert new
** interfaces in the middle of this structure, then older different
-** versions of SQLite will not be able to load each others' shared
+** versions of SQLite will not be able to load each other's shared
** libraries!
*/
struct sqlite3_api_routines {
@@ -97225,11 +100995,28 @@ struct sqlite3_api_routines {
const char *(*uri_parameter)(const char*,const char*);
char *(*vsnprintf)(int,char*,const char*,va_list);
int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*);
+ /* Version 3.8.7 and later */
+ int (*auto_extension)(void(*)(void));
+ int (*bind_blob64)(sqlite3_stmt*,int,const void*,sqlite3_uint64,
+ void(*)(void*));
+ int (*bind_text64)(sqlite3_stmt*,int,const char*,sqlite3_uint64,
+ void(*)(void*),unsigned char);
+ int (*cancel_auto_extension)(void(*)(void));
+ int (*load_extension)(sqlite3*,const char*,const char*,char**);
+ void *(*malloc64)(sqlite3_uint64);
+ sqlite3_uint64 (*msize)(void*);
+ void *(*realloc64)(void*,sqlite3_uint64);
+ void (*reset_auto_extension)(void);
+ void (*result_blob64)(sqlite3_context*,const void*,sqlite3_uint64,
+ void(*)(void*));
+ void (*result_text64)(sqlite3_context*,const char*,sqlite3_uint64,
+ void(*)(void*), unsigned char);
+ int (*strglob)(const char*,const char*);
};
/*
** The following macros redefine the API routines so that they are
-** redirected throught the global sqlite3_api structure.
+** redirected through the global sqlite3_api structure.
**
** This header file is also used by the loadext.c source file
** (part of the main SQLite library - not an extension) so that
@@ -97442,6 +101229,19 @@ struct sqlite3_api_routines {
#define sqlite3_uri_parameter sqlite3_api->uri_parameter
#define sqlite3_uri_vsnprintf sqlite3_api->vsnprintf
#define sqlite3_wal_checkpoint_v2 sqlite3_api->wal_checkpoint_v2
+/* Version 3.8.7 and later */
+#define sqlite3_auto_extension sqlite3_api->auto_extension
+#define sqlite3_bind_blob64 sqlite3_api->bind_blob64
+#define sqlite3_bind_text64 sqlite3_api->bind_text64
+#define sqlite3_cancel_auto_extension sqlite3_api->cancel_auto_extension
+#define sqlite3_load_extension sqlite3_api->load_extension
+#define sqlite3_malloc64 sqlite3_api->malloc64
+#define sqlite3_msize sqlite3_api->msize
+#define sqlite3_realloc64 sqlite3_api->realloc64
+#define sqlite3_reset_auto_extension sqlite3_api->reset_auto_extension
+#define sqlite3_result_blob64 sqlite3_api->result_blob64
+#define sqlite3_result_text64 sqlite3_api->result_text64
+#define sqlite3_strglob sqlite3_api->strglob
#endif /* SQLITE_CORE */
#ifndef SQLITE_CORE
@@ -97479,7 +101279,6 @@ struct sqlite3_api_routines {
# define sqlite3_column_table_name16 0
# define sqlite3_column_origin_name 0
# define sqlite3_column_origin_name16 0
-# define sqlite3_table_column_metadata 0
#endif
#ifdef SQLITE_OMIT_AUTHORIZATION
@@ -97835,7 +101634,20 @@ static const sqlite3_api_routines sqlite3Apis = {
sqlite3_uri_int64,
sqlite3_uri_parameter,
sqlite3_vsnprintf,
- sqlite3_wal_checkpoint_v2
+ sqlite3_wal_checkpoint_v2,
+ /* Version 3.8.7 and later */
+ sqlite3_auto_extension,
+ sqlite3_bind_blob64,
+ sqlite3_bind_text64,
+ sqlite3_cancel_auto_extension,
+ sqlite3_load_extension,
+ sqlite3_malloc64,
+ sqlite3_msize,
+ sqlite3_realloc64,
+ sqlite3_reset_auto_extension,
+ sqlite3_result_blob64,
+ sqlite3_result_text64,
+ sqlite3_strglob
};
/*
@@ -98194,7 +102006,7 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
sqlite3_mutex_leave(mutex);
zErrmsg = 0;
if( xInit && (rc = xInit(db, &zErrmsg, &sqlite3Apis))!=0 ){
- sqlite3Error(db, rc,
+ sqlite3ErrorWithMsg(db, rc,
"automatic extension loading failed: %s", zErrmsg);
go = 0;
}
@@ -98266,15 +102078,17 @@ SQLITE_PRIVATE void sqlite3AutoLoadExtensions(sqlite3 *db){
#define PragTyp_TABLE_INFO 30
#define PragTyp_TEMP_STORE 31
#define PragTyp_TEMP_STORE_DIRECTORY 32
-#define PragTyp_WAL_AUTOCHECKPOINT 33
-#define PragTyp_WAL_CHECKPOINT 34
-#define PragTyp_ACTIVATE_EXTENSIONS 35
-#define PragTyp_HEXKEY 36
-#define PragTyp_KEY 37
-#define PragTyp_REKEY 38
-#define PragTyp_LOCK_STATUS 39
-#define PragTyp_PARSER_TRACE 40
+#define PragTyp_THREADS 33
+#define PragTyp_WAL_AUTOCHECKPOINT 34
+#define PragTyp_WAL_CHECKPOINT 35
+#define PragTyp_ACTIVATE_EXTENSIONS 36
+#define PragTyp_HEXKEY 37
+#define PragTyp_KEY 38
+#define PragTyp_REKEY 39
+#define PragTyp_LOCK_STATUS 40
+#define PragTyp_PARSER_TRACE 41
#define PragFlag_NeedSchema 0x01
+#define PragFlag_ReadOnly 0x02
static const struct sPragmaNames {
const char *const zName; /* Name of pragma */
u8 ePragTyp; /* PragTyp_XXX value */
@@ -98291,7 +102105,7 @@ static const struct sPragmaNames {
{ /* zName: */ "application_id",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
/* ePragFlag: */ 0,
- /* iArg: */ 0 },
+ /* iArg: */ BTREE_APPLICATION_ID },
#endif
#if !defined(SQLITE_OMIT_AUTOVACUUM)
{ /* zName: */ "auto_vacuum",
@@ -98357,6 +102171,12 @@ static const struct sPragmaNames {
/* ePragFlag: */ 0,
/* iArg: */ 0 },
#endif
+#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
+ { /* zName: */ "data_version",
+ /* ePragTyp: */ PragTyp_HEADER_VALUE,
+ /* ePragFlag: */ PragFlag_ReadOnly,
+ /* iArg: */ BTREE_DATA_VERSION },
+#endif
#if !defined(SQLITE_OMIT_SCHEMA_PRAGMAS)
{ /* zName: */ "database_list",
/* ePragTyp: */ PragTyp_DATABASE_LIST,
@@ -98412,8 +102232,8 @@ static const struct sPragmaNames {
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
{ /* zName: */ "freelist_count",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
- /* ePragFlag: */ 0,
- /* iArg: */ 0 },
+ /* ePragFlag: */ PragFlag_ReadOnly,
+ /* iArg: */ BTREE_FREE_PAGE_COUNT },
#endif
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
{ /* zName: */ "full_column_names",
@@ -98565,7 +102385,7 @@ static const struct sPragmaNames {
{ /* zName: */ "schema_version",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
/* ePragFlag: */ 0,
- /* iArg: */ 0 },
+ /* iArg: */ BTREE_SCHEMA_VERSION },
#endif
#if !defined(SQLITE_OMIT_PAGER_PRAGMAS)
{ /* zName: */ "secure_delete",
@@ -98623,11 +102443,15 @@ static const struct sPragmaNames {
/* ePragFlag: */ 0,
/* iArg: */ 0 },
#endif
+ { /* zName: */ "threads",
+ /* ePragTyp: */ PragTyp_THREADS,
+ /* ePragFlag: */ 0,
+ /* iArg: */ 0 },
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
{ /* zName: */ "user_version",
/* ePragTyp: */ PragTyp_HEADER_VALUE,
/* ePragFlag: */ 0,
- /* iArg: */ 0 },
+ /* iArg: */ BTREE_USER_VERSION },
#endif
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
#if defined(SQLITE_DEBUG)
@@ -98670,7 +102494,7 @@ static const struct sPragmaNames {
/* iArg: */ SQLITE_WriteSchema|SQLITE_RecoveryMode },
#endif
};
-/* Number of pragmas: 56 on by default, 69 total. */
+/* Number of pragmas: 58 on by default, 71 total. */
/* End of the automatically generated pragma table.
***************************************************************************/
@@ -98920,7 +102744,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
Token *pId; /* Pointer to <id> token */
char *aFcntl[4]; /* Argument to SQLITE_FCNTL_PRAGMA */
int iDb; /* Database index for <database> */
- int lwr, upr, mid; /* Binary search bounds */
+ int lwr, upr, mid = 0; /* Binary search bounds */
int rc; /* return value form SQLITE_FCNTL_PRAGMA */
sqlite3 *db = pParse->db; /* The database connection */
Db *pDb; /* The specific database being pragmaed */
@@ -99597,6 +103421,12 @@ SQLITE_PRIVATE void sqlite3Pragma(
** in auto-commit mode. */
mask &= ~(SQLITE_ForeignKeys);
}
+#if SQLITE_USER_AUTHENTICATION
+ if( db->auth.authLevel==UAUTH_User ){
+ /* Do not allow non-admin users to modify the schema arbitrarily */
+ mask &= ~(SQLITE_WriteSchema);
+ }
+#endif
if( sqlite3GetBoolean(zRight, 0) ){
db->flags |= mask;
@@ -100274,7 +104104,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
){
for(pEnc=&encnames[0]; pEnc->zName; pEnc++){
if( 0==sqlite3StrICmp(zRight, pEnc->zName) ){
- ENC(pParse->db) = pEnc->enc ? pEnc->enc : SQLITE_UTF16NATIVE;
+ SCHEMA_ENC(db) = ENC(db) =
+ pEnc->enc ? pEnc->enc : SQLITE_UTF16NATIVE;
break;
}
}
@@ -100319,24 +104150,9 @@ SQLITE_PRIVATE void sqlite3Pragma(
** applications for any purpose.
*/
case PragTyp_HEADER_VALUE: {
- int iCookie; /* Cookie index. 1 for schema-cookie, 6 for user-cookie. */
+ int iCookie = aPragmaNames[mid].iArg; /* Which cookie to read or write */
sqlite3VdbeUsesBtree(v, iDb);
- switch( zLeft[0] ){
- case 'a': case 'A':
- iCookie = BTREE_APPLICATION_ID;
- break;
- case 'f': case 'F':
- iCookie = BTREE_FREE_PAGE_COUNT;
- break;
- case 's': case 'S':
- iCookie = BTREE_SCHEMA_VERSION;
- break;
- default:
- iCookie = BTREE_USER_VERSION;
- break;
- }
-
- if( zRight && iCookie!=BTREE_FREE_PAGE_COUNT ){
+ if( zRight && (aPragmaNames[mid].mPragFlag & PragFlag_ReadOnly)==0 ){
/* Write the specified cookie value */
static const VdbeOpList setCookie[] = {
{ OP_Transaction, 0, 1, 0}, /* 0 */
@@ -100389,7 +104205,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
#ifndef SQLITE_OMIT_WAL
/*
- ** PRAGMA [database.]wal_checkpoint = passive|full|restart
+ ** PRAGMA [database.]wal_checkpoint = passive|full|restart|truncate
**
** Checkpoint the database.
*/
@@ -100401,6 +104217,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
eMode = SQLITE_CHECKPOINT_FULL;
}else if( sqlite3StrICmp(zRight, "restart")==0 ){
eMode = SQLITE_CHECKPOINT_RESTART;
+ }else if( sqlite3StrICmp(zRight, "truncate")==0 ){
+ eMode = SQLITE_CHECKPOINT_TRUNCATE;
}
}
sqlite3VdbeSetNumCols(v, 3);
@@ -100478,6 +104296,26 @@ SQLITE_PRIVATE void sqlite3Pragma(
break;
}
+ /*
+ ** PRAGMA threads
+ ** PRAGMA threads = N
+ **
+ ** Configure the maximum number of worker threads. Return the new
+ ** maximum, which might be less than requested.
+ */
+ case PragTyp_THREADS: {
+ sqlite3_int64 N;
+ if( zRight
+ && sqlite3DecOrHexToI64(zRight, &N)==SQLITE_OK
+ && N>=0
+ ){
+ sqlite3_limit(db, SQLITE_LIMIT_WORKER_THREADS, (int)(N&0x7fffffff));
+ }
+ returnSingleInt(pParse, "threads",
+ sqlite3_limit(db, SQLITE_LIMIT_WORKER_THREADS, -1));
+ break;
+ }
+
#if defined(SQLITE_DEBUG) || defined(SQLITE_TEST)
/*
** Report the current state of file logs for all databases
@@ -100894,7 +104732,7 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
db->aDb[iDb].zName, zMasterName);
#ifndef SQLITE_OMIT_AUTHORIZATION
{
- int (*xAuth)(void*,int,const char*,const char*,const char*,const char*);
+ sqlite3_xauth xAuth;
xAuth = db->xAuth;
db->xAuth = 0;
#endif
@@ -100960,8 +104798,11 @@ SQLITE_PRIVATE int sqlite3Init(sqlite3 *db, char **pzErrMsg){
int commit_internal = !(db->flags&SQLITE_InternChanges);
assert( sqlite3_mutex_held(db->mutex) );
+ assert( sqlite3BtreeHoldsMutex(db->aDb[0].pBt) );
+ assert( db->init.busy==0 );
rc = SQLITE_OK;
db->init.busy = 1;
+ ENC(db) = SCHEMA_ENC(db);
for(i=0; rc==SQLITE_OK && i<db->nDb; i++){
if( DbHasProperty(db, i, DB_SchemaLoaded) || i==1 ) continue;
rc = sqlite3InitOne(db, i, pzErrMsg);
@@ -100975,8 +104816,8 @@ SQLITE_PRIVATE int sqlite3Init(sqlite3 *db, char **pzErrMsg){
** schema may contain references to objects in other databases.
*/
#ifndef SQLITE_OMIT_TEMPDB
- if( rc==SQLITE_OK && ALWAYS(db->nDb>1)
- && !DbHasProperty(db, 1, DB_SchemaLoaded) ){
+ assert( db->nDb>1 );
+ if( rc==SQLITE_OK && !DbHasProperty(db, 1, DB_SchemaLoaded) ){
rc = sqlite3InitOne(db, 1, pzErrMsg);
if( rc ){
sqlite3ResetOneSchema(db, 1);
@@ -101159,7 +105000,7 @@ static int sqlite3Prepare(
rc = sqlite3BtreeSchemaLocked(pBt);
if( rc ){
const char *zDb = db->aDb[i].zName;
- sqlite3Error(db, rc, "database schema is locked: %s", zDb);
+ sqlite3ErrorWithMsg(db, rc, "database schema is locked: %s", zDb);
testcase( db->flags & SQLITE_ReadUncommitted );
goto end_prepare;
}
@@ -101176,7 +105017,7 @@ static int sqlite3Prepare(
testcase( nBytes==mxLen );
testcase( nBytes==mxLen+1 );
if( nBytes>mxLen ){
- sqlite3Error(db, SQLITE_TOOBIG, "statement too long");
+ sqlite3ErrorWithMsg(db, SQLITE_TOOBIG, "statement too long");
rc = sqlite3ApiExit(db, SQLITE_TOOBIG);
goto end_prepare;
}
@@ -101243,10 +105084,10 @@ static int sqlite3Prepare(
}
if( zErrMsg ){
- sqlite3Error(db, rc, "%s", zErrMsg);
+ sqlite3ErrorWithMsg(db, rc, "%s", zErrMsg);
sqlite3DbFree(db, zErrMsg);
}else{
- sqlite3Error(db, rc, 0);
+ sqlite3Error(db, rc);
}
/* Delete any TriggerPrg structures allocated while parsing this statement. */
@@ -101274,9 +105115,12 @@ static int sqlite3LockAndPrepare(
const char **pzTail /* OUT: End of parsed string */
){
int rc;
- assert( ppStmt!=0 );
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( ppStmt==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*ppStmt = 0;
- if( !sqlite3SafetyCheckOk(db) ){
+ if( !sqlite3SafetyCheckOk(db)||zSql==0 ){
return SQLITE_MISUSE_BKPT;
}
sqlite3_mutex_enter(db->mutex);
@@ -101383,9 +105227,11 @@ static int sqlite3Prepare16(
const char *zTail8 = 0;
int rc = SQLITE_OK;
- assert( ppStmt );
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( ppStmt==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*ppStmt = 0;
- if( !sqlite3SafetyCheckOk(db) ){
+ if( !sqlite3SafetyCheckOk(db)||zSql==0 ){
return SQLITE_MISUSE_BKPT;
}
if( nBytes>=0 ){
@@ -101468,6 +105314,20 @@ SQLITE_API int sqlite3_prepare16_v2(
*/
/*
+** Trace output macros
+*/
+#if SELECTTRACE_ENABLED
+/***/ int sqlite3SelectTrace = 0;
+# define SELECTTRACE(K,P,S,X) \
+ if(sqlite3SelectTrace&(K)) \
+ sqlite3DebugPrintf("%*s%s.%p: ",(P)->nSelectIndent*2-2,"",(S)->zSelName,(S)),\
+ sqlite3DebugPrintf X
+#else
+# define SELECTTRACE(K,P,S,X)
+#endif
+
+
+/*
** An instance of the following object is used to record information about
** how to process the DISTINCT keyword, to simplify passing that information
** into the selectInnerLoop() routine.
@@ -101497,20 +105357,25 @@ struct SortCtx {
#define SORTFLAG_UseSorter 0x01 /* Use SorterOpen instead of OpenEphemeral */
/*
-** Delete all the content of a Select structure but do not deallocate
-** the select structure itself.
+** Delete all the content of a Select structure. Deallocate the structure
+** itself only if bFree is true.
*/
-static void clearSelect(sqlite3 *db, Select *p){
- sqlite3ExprListDelete(db, p->pEList);
- sqlite3SrcListDelete(db, p->pSrc);
- sqlite3ExprDelete(db, p->pWhere);
- sqlite3ExprListDelete(db, p->pGroupBy);
- sqlite3ExprDelete(db, p->pHaving);
- sqlite3ExprListDelete(db, p->pOrderBy);
- sqlite3SelectDelete(db, p->pPrior);
- sqlite3ExprDelete(db, p->pLimit);
- sqlite3ExprDelete(db, p->pOffset);
- sqlite3WithDelete(db, p->pWith);
+static void clearSelect(sqlite3 *db, Select *p, int bFree){
+ while( p ){
+ Select *pPrior = p->pPrior;
+ sqlite3ExprListDelete(db, p->pEList);
+ sqlite3SrcListDelete(db, p->pSrc);
+ sqlite3ExprDelete(db, p->pWhere);
+ sqlite3ExprListDelete(db, p->pGroupBy);
+ sqlite3ExprDelete(db, p->pHaving);
+ sqlite3ExprListDelete(db, p->pOrderBy);
+ sqlite3ExprDelete(db, p->pLimit);
+ sqlite3ExprDelete(db, p->pOffset);
+ sqlite3WithDelete(db, p->pWith);
+ if( bFree ) sqlite3DbFree(db, p);
+ p = pPrior;
+ bFree = 1;
+ }
}
/*
@@ -101569,8 +105434,7 @@ SQLITE_PRIVATE Select *sqlite3SelectNew(
pNew->addrOpenEphm[0] = -1;
pNew->addrOpenEphm[1] = -1;
if( db->mallocFailed ) {
- clearSelect(db, pNew);
- if( pNew!=&standin ) sqlite3DbFree(db, pNew);
+ clearSelect(db, pNew, pNew!=&standin);
pNew = 0;
}else{
assert( pNew->pSrc!=0 || pParse->nErr>0 );
@@ -101579,14 +105443,23 @@ SQLITE_PRIVATE Select *sqlite3SelectNew(
return pNew;
}
+#if SELECTTRACE_ENABLED
+/*
+** Set the name of a Select object
+*/
+SQLITE_PRIVATE void sqlite3SelectSetName(Select *p, const char *zName){
+ if( p && zName ){
+ sqlite3_snprintf(sizeof(p->zSelName), p->zSelName, "%s", zName);
+ }
+}
+#endif
+
+
/*
** Delete the given Select structure and all of its substructures.
*/
SQLITE_PRIVATE void sqlite3SelectDelete(sqlite3 *db, Select *p){
- if( p ){
- clearSelect(db, p);
- sqlite3DbFree(db, p);
- }
+ clearSelect(db, p, 1);
}
/*
@@ -101908,28 +105781,43 @@ static KeyInfo *keyInfoFromExprList(
);
/*
-** Insert code into "v" that will push the record in register regData
-** into the sorter.
+** Generate code that will push the record in registers regData
+** through regData+nData-1 onto the sorter.
*/
static void pushOntoSorter(
Parse *pParse, /* Parser context */
SortCtx *pSort, /* Information about the ORDER BY clause */
Select *pSelect, /* The whole SELECT statement */
- int regData /* Register holding data to be sorted */
+ int regData, /* First register holding data to be sorted */
+ int nData, /* Number of elements in the data array */
+ int nPrefixReg /* No. of reg prior to regData available for use */
){
- Vdbe *v = pParse->pVdbe;
- int nExpr = pSort->pOrderBy->nExpr;
- int regRecord = ++pParse->nMem;
- int regBase = pParse->nMem+1;
- int nOBSat = pSort->nOBSat;
- int op;
+ Vdbe *v = pParse->pVdbe; /* Stmt under construction */
+ int bSeq = ((pSort->sortFlags & SORTFLAG_UseSorter)==0);
+ int nExpr = pSort->pOrderBy->nExpr; /* No. of ORDER BY terms */
+ int nBase = nExpr + bSeq + nData; /* Fields in sorter record */
+ int regBase; /* Regs for sorter record */
+ int regRecord = ++pParse->nMem; /* Assembled sorter record */
+ int nOBSat = pSort->nOBSat; /* ORDER BY terms to skip */
+ int op; /* Opcode to add sorter record to sorter */
- pParse->nMem += nExpr+2; /* nExpr+2 registers allocated at regBase */
- sqlite3ExprCacheClear(pParse);
- sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, 0);
- sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr);
- sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+1, 1);
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nExpr+2-nOBSat,regRecord);
+ assert( bSeq==0 || bSeq==1 );
+ if( nPrefixReg ){
+ assert( nPrefixReg==nExpr+bSeq );
+ regBase = regData - nExpr - bSeq;
+ }else{
+ regBase = pParse->nMem + 1;
+ pParse->nMem += nBase;
+ }
+ sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, SQLITE_ECEL_DUP);
+ if( bSeq ){
+ sqlite3VdbeAddOp2(v, OP_Sequence, pSort->iECursor, regBase+nExpr);
+ }
+ if( nPrefixReg==0 ){
+ sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+bSeq, nData);
+ }
+
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, regBase+nOBSat, nBase-nOBSat, regRecord);
if( nOBSat>0 ){
int regPrevKey; /* The first nOBSat columns of the previous row */
int addrFirst; /* Address of the OP_IfNot opcode */
@@ -101940,16 +105828,23 @@ static void pushOntoSorter(
regPrevKey = pParse->nMem+1;
pParse->nMem += pSort->nOBSat;
- nKey = nExpr - pSort->nOBSat + 1;
- addrFirst = sqlite3VdbeAddOp1(v, OP_IfNot, regBase+nExpr); VdbeCoverage(v);
+ nKey = nExpr - pSort->nOBSat + bSeq;
+ if( bSeq ){
+ addrFirst = sqlite3VdbeAddOp1(v, OP_IfNot, regBase+nExpr);
+ }else{
+ addrFirst = sqlite3VdbeAddOp1(v, OP_SequenceTest, pSort->iECursor);
+ }
+ VdbeCoverage(v);
sqlite3VdbeAddOp3(v, OP_Compare, regPrevKey, regBase, pSort->nOBSat);
pOp = sqlite3VdbeGetOp(v, pSort->addrSortIndex);
if( pParse->db->mallocFailed ) return;
- pOp->p2 = nKey + 1;
+ pOp->p2 = nKey + nData;
pKI = pOp->p4.pKeyInfo;
memset(pKI->aSortOrder, 0, pKI->nField); /* Makes OP_Jump below testable */
sqlite3VdbeChangeP4(v, -1, (char*)pKI, P4_KEYINFO);
- pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat, 1);
+ testcase( pKI->nXField>2 );
+ pOp->p4.pKeyInfo = keyInfoFromExprList(pParse, pSort->pOrderBy, nOBSat,
+ pKI->nXField-1);
addrJmp = sqlite3VdbeCurrentAddr(v);
sqlite3VdbeAddOp3(v, OP_Jump, addrJmp+1, 0, addrJmp+1); VdbeCoverage(v);
pSort->labelBkOut = sqlite3VdbeMakeLabel(v);
@@ -101957,7 +105852,7 @@ static void pushOntoSorter(
sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
sqlite3VdbeAddOp1(v, OP_ResetSorter, pSort->iECursor);
sqlite3VdbeJumpHere(v, addrFirst);
- sqlite3VdbeAddOp3(v, OP_Move, regBase, regPrevKey, pSort->nOBSat);
+ sqlite3ExprCodeMove(pParse, regBase, regPrevKey, pSort->nOBSat);
sqlite3VdbeJumpHere(v, addrJmp);
}
if( pSort->sortFlags & SORTFLAG_UseSorter ){
@@ -102079,6 +105974,7 @@ static void selectInnerLoop(
int eDest = pDest->eDest; /* How to dispose of results */
int iParm = pDest->iSDParm; /* First argument to disposal method */
int nResultCol; /* Number of result columns */
+ int nPrefixReg = 0; /* Number of extra registers before regResult */
assert( v );
assert( pEList!=0 );
@@ -102094,6 +105990,11 @@ static void selectInnerLoop(
nResultCol = pEList->nExpr;
if( pDest->iSdst==0 ){
+ if( pSort ){
+ nPrefixReg = pSort->pOrderBy->nExpr;
+ if( !(pSort->sortFlags & SORTFLAG_UseSorter) ) nPrefixReg++;
+ pParse->nMem += nPrefixReg;
+ }
pDest->iSdst = pParse->nMem+1;
pParse->nMem += nResultCol;
}else if( pDest->iSdst+nResultCol > pParse->nMem ){
@@ -102210,10 +106111,10 @@ static void selectInnerLoop(
case SRT_DistFifo:
case SRT_Table:
case SRT_EphemTab: {
- int r1 = sqlite3GetTempReg(pParse);
+ int r1 = sqlite3GetTempRange(pParse, nPrefixReg+1);
testcase( eDest==SRT_Table );
testcase( eDest==SRT_EphemTab );
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1);
+ sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1+nPrefixReg);
#ifndef SQLITE_OMIT_CTE
if( eDest==SRT_DistFifo ){
/* If the destination is DistFifo, then cursor (iParm+1) is open
@@ -102228,7 +106129,7 @@ static void selectInnerLoop(
}
#endif
if( pSort ){
- pushOntoSorter(pParse, pSort, p, r1);
+ pushOntoSorter(pParse, pSort, p, r1+nPrefixReg, 1, nPrefixReg);
}else{
int r2 = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp2(v, OP_NewRowid, iParm, r2);
@@ -102236,7 +106137,7 @@ static void selectInnerLoop(
sqlite3VdbeChangeP5(v, OPFLAG_APPEND);
sqlite3ReleaseTempReg(pParse, r2);
}
- sqlite3ReleaseTempReg(pParse, r1);
+ sqlite3ReleaseTempRange(pParse, r1, nPrefixReg+1);
break;
}
@@ -102254,7 +106155,7 @@ static void selectInnerLoop(
** ORDER BY in this case since the order of entries in the set
** does not matter. But there might be a LIMIT clause, in which
** case the order does matter */
- pushOntoSorter(pParse, pSort, p, regResult);
+ pushOntoSorter(pParse, pSort, p, regResult, 1, nPrefixReg);
}else{
int r1 = sqlite3GetTempReg(pParse);
sqlite3VdbeAddOp4(v, OP_MakeRecord, regResult,1,r1, &pDest->affSdst, 1);
@@ -102280,9 +106181,9 @@ static void selectInnerLoop(
case SRT_Mem: {
assert( nResultCol==1 );
if( pSort ){
- pushOntoSorter(pParse, pSort, p, regResult);
+ pushOntoSorter(pParse, pSort, p, regResult, 1, nPrefixReg);
}else{
- sqlite3ExprCodeMove(pParse, regResult, iParm, 1);
+ assert( regResult==iParm );
/* The LIMIT clause will jump out of the loop for us */
}
break;
@@ -102294,10 +106195,7 @@ static void selectInnerLoop(
testcase( eDest==SRT_Coroutine );
testcase( eDest==SRT_Output );
if( pSort ){
- int r1 = sqlite3GetTempReg(pParse);
- sqlite3VdbeAddOp3(v, OP_MakeRecord, regResult, nResultCol, r1);
- pushOntoSorter(pParse, pSort, p, r1);
- sqlite3ReleaseTempReg(pParse, r1);
+ pushOntoSorter(pParse, pSort, p, regResult, nResultCol, nPrefixReg);
}else if( eDest==SRT_Coroutine ){
sqlite3VdbeAddOp1(v, OP_Yield, pDest->iSDParm);
}else{
@@ -102440,7 +106338,7 @@ SQLITE_PRIVATE int sqlite3KeyInfoIsWriteable(KeyInfo *p){ return p->nRef==1; }
** then the KeyInfo structure is appropriate for initializing a virtual
** index to implement a DISTINCT test.
**
-** Space to hold the KeyInfo structure is obtain from malloc. The calling
+** Space to hold the KeyInfo structure is obtained from malloc. The calling
** function is responsible for seeing that this structure is eventually
** freed.
*/
@@ -102457,7 +106355,7 @@ static KeyInfo *keyInfoFromExprList(
int i;
nExpr = pList->nExpr;
- pInfo = sqlite3KeyInfoAlloc(db, nExpr+nExtra-iStart, 1);
+ pInfo = sqlite3KeyInfoAlloc(db, nExpr-iStart, nExtra+1);
if( pInfo ){
assert( sqlite3KeyInfoIsWriteable(pInfo) );
for(i=iStart, pItem=pList->a+iStart; i<nExpr; i++, pItem++){
@@ -102577,46 +106475,58 @@ static void generateSortTail(
int addr;
int addrOnce = 0;
int iTab;
- int pseudoTab = 0;
ExprList *pOrderBy = pSort->pOrderBy;
int eDest = pDest->eDest;
int iParm = pDest->iSDParm;
int regRow;
int regRowid;
int nKey;
+ int iSortTab; /* Sorter cursor to read from */
+ int nSortData; /* Trailing values to read from sorter */
+ int i;
+ int bSeq; /* True if sorter record includes seq. no. */
+#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
+ struct ExprList_item *aOutEx = p->pEList->a;
+#endif
if( pSort->labelBkOut ){
sqlite3VdbeAddOp2(v, OP_Gosub, pSort->regReturn, pSort->labelBkOut);
sqlite3VdbeAddOp2(v, OP_Goto, 0, addrBreak);
sqlite3VdbeResolveLabel(v, pSort->labelBkOut);
- addrOnce = sqlite3CodeOnce(pParse); VdbeCoverage(v);
}
iTab = pSort->iECursor;
- regRow = sqlite3GetTempReg(pParse);
if( eDest==SRT_Output || eDest==SRT_Coroutine ){
- pseudoTab = pParse->nTab++;
- sqlite3VdbeAddOp3(v, OP_OpenPseudo, pseudoTab, regRow, nColumn);
regRowid = 0;
+ regRow = pDest->iSdst;
+ nSortData = nColumn;
}else{
regRowid = sqlite3GetTempReg(pParse);
+ regRow = sqlite3GetTempReg(pParse);
+ nSortData = 1;
}
nKey = pOrderBy->nExpr - pSort->nOBSat;
if( pSort->sortFlags & SORTFLAG_UseSorter ){
int regSortOut = ++pParse->nMem;
- int ptab2 = pParse->nTab++;
- sqlite3VdbeAddOp3(v, OP_OpenPseudo, ptab2, regSortOut, nKey+2);
+ iSortTab = pParse->nTab++;
+ if( pSort->labelBkOut ){
+ addrOnce = sqlite3CodeOnce(pParse); VdbeCoverage(v);
+ }
+ sqlite3VdbeAddOp3(v, OP_OpenPseudo, iSortTab, regSortOut, nKey+1+nSortData);
if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
addr = 1 + sqlite3VdbeAddOp2(v, OP_SorterSort, iTab, addrBreak);
VdbeCoverage(v);
codeOffset(v, p->iOffset, addrContinue);
- sqlite3VdbeAddOp2(v, OP_SorterData, iTab, regSortOut);
- sqlite3VdbeAddOp3(v, OP_Column, ptab2, nKey+1, regRow);
- sqlite3VdbeChangeP5(v, OPFLAG_CLEARCACHE);
+ sqlite3VdbeAddOp3(v, OP_SorterData, iTab, regSortOut, iSortTab);
+ bSeq = 0;
}else{
- if( addrOnce ) sqlite3VdbeJumpHere(v, addrOnce);
addr = 1 + sqlite3VdbeAddOp2(v, OP_Sort, iTab, addrBreak); VdbeCoverage(v);
codeOffset(v, p->iOffset, addrContinue);
- sqlite3VdbeAddOp3(v, OP_Column, iTab, nKey+1, regRow);
+ iSortTab = iTab;
+ bSeq = 1;
+ }
+ for(i=0; i<nSortData; i++){
+ sqlite3VdbeAddOp3(v, OP_Column, iSortTab, nKey+bSeq+i, regRow+i);
+ VdbeComment((v, "%s", aOutEx[i].zName ? aOutEx[i].zName : aOutEx[i].zSpan));
}
switch( eDest ){
case SRT_Table:
@@ -102645,17 +106555,9 @@ static void generateSortTail(
}
#endif
default: {
- int i;
assert( eDest==SRT_Output || eDest==SRT_Coroutine );
testcase( eDest==SRT_Output );
testcase( eDest==SRT_Coroutine );
- for(i=0; i<nColumn; i++){
- assert( regRow!=pDest->iSdst+i );
- sqlite3VdbeAddOp3(v, OP_Column, pseudoTab, i, pDest->iSdst+i);
- if( i==0 ){
- sqlite3VdbeChangeP5(v, OPFLAG_CLEARCACHE);
- }
- }
if( eDest==SRT_Output ){
sqlite3VdbeAddOp2(v, OP_ResultRow, pDest->iSdst, nColumn);
sqlite3ExprCacheAffinityChange(pParse, pDest->iSdst, nColumn);
@@ -102665,9 +106567,10 @@ static void generateSortTail(
break;
}
}
- sqlite3ReleaseTempReg(pParse, regRow);
- sqlite3ReleaseTempReg(pParse, regRowid);
-
+ if( regRowid ){
+ sqlite3ReleaseTempReg(pParse, regRow);
+ sqlite3ReleaseTempReg(pParse, regRowid);
+ }
/* The bottom of the loop
*/
sqlite3VdbeResolveLabel(v, addrContinue);
@@ -102962,7 +106865,7 @@ static void generateColumnNames(
}
/*
-** Given a an expression list (which is really the list of expressions
+** Given an expression list (which is really the list of expressions
** that form the result set of a SELECT statement) compute appropriate
** column names for a table that would hold the expression list.
**
@@ -103035,7 +106938,7 @@ static int selectColumnsFromExprList(
}
/* Make sure the column name is unique. If the name is not unique,
- ** append a integer to the name so that it becomes unique.
+ ** append an integer to the name so that it becomes unique.
*/
nName = sqlite3Strlen30(zName);
for(j=cnt=0; j<i; j++){
@@ -103474,6 +107377,66 @@ static int multiSelectOrderBy(
SelectDest *pDest /* What to do with query results */
);
+/*
+** Error message for when two or more terms of a compound select have different
+** size result sets.
+*/
+static void selectWrongNumTermsError(Parse *pParse, Select *p){
+ if( p->selFlags & SF_Values ){
+ sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms");
+ }else{
+ sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s"
+ " do not have the same number of result columns", selectOpName(p->op));
+ }
+}
+
+/*
+** Handle the special case of a compound-select that originates from a
+** VALUES clause. By handling this as a special case, we avoid deep
+** recursion, and thus do not need to enforce the SQLITE_LIMIT_COMPOUND_SELECT
+** on a VALUES clause.
+**
+** Because the Select object originates from a VALUES clause:
+** (1) It has no LIMIT or OFFSET
+** (2) All terms are UNION ALL
+** (3) There is no ORDER BY clause
+*/
+static int multiSelectValues(
+ Parse *pParse, /* Parsing context */
+ Select *p, /* The right-most of SELECTs to be coded */
+ SelectDest *pDest /* What to do with query results */
+){
+ Select *pPrior;
+ int nExpr = p->pEList->nExpr;
+ int nRow = 1;
+ int rc = 0;
+ assert( p->pNext==0 );
+ assert( p->selFlags & SF_AllValues );
+ do{
+ assert( p->selFlags & SF_Values );
+ assert( p->op==TK_ALL || (p->op==TK_SELECT && p->pPrior==0) );
+ assert( p->pLimit==0 );
+ assert( p->pOffset==0 );
+ if( p->pEList->nExpr!=nExpr ){
+ selectWrongNumTermsError(pParse, p);
+ return 1;
+ }
+ if( p->pPrior==0 ) break;
+ assert( p->pPrior->pNext==p );
+ p = p->pPrior;
+ nRow++;
+ }while(1);
+ while( p ){
+ pPrior = p->pPrior;
+ p->pPrior = 0;
+ rc = sqlite3Select(pParse, p, pDest);
+ p->pPrior = pPrior;
+ if( rc ) break;
+ p->nSelectRow = nRow;
+ p = p->pNext;
+ }
+ return rc;
+}
/*
** This routine is called to process a compound query form from
@@ -103555,17 +107518,19 @@ static int multiSelect(
dest.eDest = SRT_Table;
}
+ /* Special handling for a compound-select that originates as a VALUES clause.
+ */
+ if( p->selFlags & SF_AllValues ){
+ rc = multiSelectValues(pParse, p, &dest);
+ goto multi_select_end;
+ }
+
/* Make sure all SELECTs in the statement have the same number of elements
** in their result sets.
*/
assert( p->pEList && pPrior->pEList );
if( p->pEList->nExpr!=pPrior->pEList->nExpr ){
- if( p->selFlags & SF_Values ){
- sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms");
- }else{
- sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s"
- " do not have the same number of result columns", selectOpName(p->op));
- }
+ selectWrongNumTermsError(pParse, p);
rc = 1;
goto multi_select_end;
}
@@ -104519,7 +108484,7 @@ static void substSelect(
**
** SELECT x+y AS a FROM t1 WHERE z<100 AND a>5
**
-** The code generated for this simpification gives the same result
+** The code generated for this simplification gives the same result
** but only has to scan the data once. And because indices might
** exist on the table t1, a complete scan of the data might be
** avoided.
@@ -104552,8 +108517,10 @@ static void substSelect(
** (9) The subquery does not use LIMIT or the outer query does not use
** aggregates.
**
-** (10) The subquery does not use aggregates or the outer query does not
-** use LIMIT.
+** (**) Restriction (10) was removed from the code on 2005-02-05 but we
+** accidently carried the comment forward until 2014-09-15. Original
+** text: "The subquery does not use aggregates or the outer query does not
+** use LIMIT."
**
** (11) The subquery and the outer query do not both have ORDER BY clauses.
**
@@ -104616,6 +108583,11 @@ static void substSelect(
** parent to a compound query confuses the code that handles
** recursive queries in multiSelect().
**
+** (24) The subquery is not an aggregate that uses the built-in min() or
+** or max() functions. (Without this restriction, a query like:
+** "SELECT x FROM (SELECT max(y), x FROM t1)" would not necessarily
+** return the value X for which Y was maximal.)
+**
**
** In this routine, the "p" parameter is a pointer to the outer query.
** The subquery is p->pSrc->a[iFrom]. isAgg is true if the outer query
@@ -104663,7 +108635,7 @@ static int flattenSubquery(
pSubSrc = pSub->pSrc;
assert( pSubSrc );
/* Prior to version 3.1.2, when LIMIT and OFFSET had to be simple constants,
- ** not arbitrary expresssions, we allowed some combining of LIMIT and OFFSET
+ ** not arbitrary expressions, we allowed some combining of LIMIT and OFFSET
** because they could be computed at compile-time. But when LIMIT and OFFSET
** became arbitrary expressions, we were forced to add restrictions (13)
** and (14). */
@@ -104688,8 +108660,14 @@ static int flattenSubquery(
if( pSub->pLimit && (p->selFlags & SF_Distinct)!=0 ){
return 0; /* Restriction (21) */
}
- if( pSub->selFlags & SF_Recursive ) return 0; /* Restriction (22) */
- if( (p->selFlags & SF_Recursive) && pSub->pPrior ) return 0; /* (23) */
+ testcase( pSub->selFlags & SF_Recursive );
+ testcase( pSub->selFlags & SF_MinMaxAgg );
+ if( pSub->selFlags & (SF_Recursive|SF_MinMaxAgg) ){
+ return 0; /* Restrictions (22) and (24) */
+ }
+ if( (p->selFlags & SF_Recursive) && pSub->pPrior ){
+ return 0; /* Restriction (23) */
+ }
/* OBSOLETE COMMENT 1:
** Restriction 3: If the subquery is a join, make sure the subquery is
@@ -104763,6 +108741,8 @@ static int flattenSubquery(
}
/***** If we reach this point, flattening is permitted. *****/
+ SELECTTRACE(1,pParse,p,("flatten %s.%p from term %d\n",
+ pSub->zSelName, pSub, iFrom));
/* Authorize the subquery */
pParse->zAuthContext = pSubitem->zName;
@@ -104815,6 +108795,7 @@ static int flattenSubquery(
p->pLimit = 0;
p->pOffset = 0;
pNew = sqlite3SelectDup(db, p, 0);
+ sqlite3SelectSetName(pNew, pSub->zSelName);
p->pOffset = pOffset;
p->pLimit = pLimit;
p->pOrderBy = pOrderBy;
@@ -104827,6 +108808,9 @@ static int flattenSubquery(
if( pPrior ) pPrior->pNext = pNew;
pNew->pNext = p;
p->pPrior = pNew;
+ SELECTTRACE(2,pParse,p,
+ ("compound-subquery flattener creates %s.%p as peer\n",
+ pNew->zSelName, pNew));
}
if( db->mallocFailed ) return 1;
}
@@ -104956,8 +108940,23 @@ static int flattenSubquery(
pParent->pHaving = substExpr(db, pParent->pHaving, iParent, pSub->pEList);
}
if( pSub->pOrderBy ){
+ /* At this point, any non-zero iOrderByCol values indicate that the
+ ** ORDER BY column expression is identical to the iOrderByCol'th
+ ** expression returned by SELECT statement pSub. Since these values
+ ** do not necessarily correspond to columns in SELECT statement pParent,
+ ** zero them before transfering the ORDER BY clause.
+ **
+ ** Not doing this may cause an error if a subsequent call to this
+ ** function attempts to flatten a compound sub-query into pParent
+ ** (the only way this can happen is if the compound sub-query is
+ ** currently part of pSub->pSrc). See ticket [d11a6e908f]. */
+ ExprList *pOrderBy = pSub->pOrderBy;
+ for(i=0; i<pOrderBy->nExpr; i++){
+ pOrderBy->a[i].u.x.iOrderByCol = 0;
+ }
assert( pParent->pOrderBy==0 );
- pParent->pOrderBy = pSub->pOrderBy;
+ assert( pSub->pPrior==0 );
+ pParent->pOrderBy = pOrderBy;
pSub->pOrderBy = 0;
}else if( pParent->pOrderBy ){
substExprList(db, pParent->pOrderBy, iParent, pSub->pEList);
@@ -105003,6 +109002,13 @@ static int flattenSubquery(
*/
sqlite3SelectDelete(db, pSub1);
+#if SELECTTRACE_ENABLED
+ if( sqlite3SelectTrace & 0x100 ){
+ sqlite3DebugPrintf("After flattening:\n");
+ sqlite3TreeViewSelect(0, p, 0);
+ }
+#endif
+
return 1;
}
#endif /* !defined(SQLITE_OMIT_SUBQUERY) || !defined(SQLITE_OMIT_VIEW) */
@@ -105049,7 +109055,7 @@ static u8 minMaxQuery(AggInfo *pAggInfo, ExprList **ppMinMax){
/*
** The select statement passed as the first argument is an aggregate query.
-** The second argment is the associated aggregate-info object. This
+** The second argument is the associated aggregate-info object. This
** function tests if the SELECT is of the form:
**
** SELECT count(*) FROM <tbl>
@@ -105379,10 +109385,10 @@ static void selectPopWith(Walker *pWalker, Select *p){
** fill pTabList->a[].pSelect with a copy of the SELECT statement
** that implements the view. A copy is made of the view's SELECT
** statement so that we can freely modify or delete that statement
-** without worrying about messing up the presistent representation
+** without worrying about messing up the persistent representation
** of the view.
**
-** (3) Add terms to the WHERE clause to accomodate the NATURAL keyword
+** (3) Add terms to the WHERE clause to accommodate the NATURAL keyword
** on joins and the ON and USING clause of joins.
**
** (4) Scan the list of columns in the result set (pEList) looking
@@ -105410,7 +109416,9 @@ static int selectExpander(Walker *pWalker, Select *p){
}
pTabList = p->pSrc;
pEList = p->pEList;
- sqlite3WithPush(pParse, findRightmost(p)->pWith, 0);
+ if( pWalker->xSelectCallback2==selectPopWith ){
+ sqlite3WithPush(pParse, findRightmost(p)->pWith, 0);
+ }
/* Make sure cursor numbers have been assigned to all entries in
** the FROM clause of the SELECT statement.
@@ -105473,6 +109481,7 @@ static int selectExpander(Walker *pWalker, Select *p){
if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
assert( pFrom->pSelect==0 );
pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
+ sqlite3SelectSetName(pFrom->pSelect, pTab->zName);
sqlite3WalkSelect(pWalker, pFrom->pSelect);
}
#endif
@@ -105700,7 +109709,9 @@ static void sqlite3SelectExpand(Parse *pParse, Select *pSelect){
sqlite3WalkSelect(&w, pSelect);
}
w.xSelectCallback = selectExpander;
- w.xSelectCallback2 = selectPopWith;
+ if( (pSelect->selFlags & SF_AllValues)==0 ){
+ w.xSelectCallback2 = selectPopWith;
+ }
sqlite3WalkSelect(&w, pSelect);
}
@@ -106007,6 +110018,13 @@ SQLITE_PRIVATE int sqlite3Select(
}
if( sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0) ) return 1;
memset(&sAggInfo, 0, sizeof(sAggInfo));
+#if SELECTTRACE_ENABLED
+ pParse->nSelectIndent++;
+ SELECTTRACE(1,pParse,p, ("begin processing:\n"));
+ if( sqlite3SelectTrace & 0x100 ){
+ sqlite3TreeViewSelect(0, p, 0);
+ }
+#endif
assert( p->pOrderBy==0 || pDest->eDest!=SRT_DistFifo );
assert( p->pOrderBy==0 || pDest->eDest!=SRT_Fifo );
@@ -106163,6 +110181,10 @@ SQLITE_PRIVATE int sqlite3Select(
if( p->pPrior ){
rc = multiSelect(pParse, p, pDest);
explainSetInteger(pParse->iSelectId, iRestoreSelectId);
+#if SELECTTRACE_ENABLED
+ SELECTTRACE(1,pParse,p,("end compound-select processing\n"));
+ pParse->nSelectIndent--;
+#endif
return rc;
}
#endif
@@ -106175,7 +110197,7 @@ SQLITE_PRIVATE int sqlite3Select(
**
** is transformed to:
**
- ** SELECT xyz FROM ... GROUP BY xyz
+ ** SELECT xyz FROM ... GROUP BY xyz ORDER BY xyz
**
** The second form is preferred as a single index (or temp-table) may be
** used for both the ORDER BY and DISTINCT processing. As originally
@@ -106188,7 +110210,6 @@ SQLITE_PRIVATE int sqlite3Select(
p->selFlags &= ~SF_Distinct;
p->pGroupBy = sqlite3ExprListDup(db, p->pEList, 0);
pGroupBy = p->pGroupBy;
- sSort.pOrderBy = 0;
/* Notice that even thought SF_Distinct has been cleared from p->selFlags,
** the sDistinct.isTnct is still set. Hence, isTnct represents the
** original setting of the SF_Distinct flag, not the current setting */
@@ -106204,12 +110225,13 @@ SQLITE_PRIVATE int sqlite3Select(
*/
if( sSort.pOrderBy ){
KeyInfo *pKeyInfo;
- pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, 0);
+ pKeyInfo = keyInfoFromExprList(pParse, sSort.pOrderBy, 0, pEList->nExpr);
sSort.iECursor = pParse->nTab++;
sSort.addrSortIndex =
sqlite3VdbeAddOp4(v, OP_OpenEphemeral,
- sSort.iECursor, sSort.pOrderBy->nExpr+2, 0,
- (char*)pKeyInfo, P4_KEYINFO);
+ sSort.iECursor, sSort.pOrderBy->nExpr+1+pEList->nExpr, 0,
+ (char*)pKeyInfo, P4_KEYINFO
+ );
}else{
sSort.addrSortIndex = -1;
}
@@ -106340,7 +110362,7 @@ SQLITE_PRIVATE int sqlite3Select(
sNC.pSrcList = pTabList;
sNC.pAggInfo = &sAggInfo;
sAggInfo.mnReg = pParse->nMem+1;
- sAggInfo.nSortingColumn = pGroupBy ? pGroupBy->nExpr+1 : 0;
+ sAggInfo.nSortingColumn = pGroupBy ? pGroupBy->nExpr : 0;
sAggInfo.pGroupBy = pGroupBy;
sqlite3ExprAnalyzeAggList(&sNC, pEList);
sqlite3ExprAnalyzeAggList(&sNC, sSort.pOrderBy);
@@ -106377,7 +110399,7 @@ SQLITE_PRIVATE int sqlite3Select(
** will be converted into a Noop.
*/
sAggInfo.sortingIdx = pParse->nTab++;
- pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, 0);
+ pKeyInfo = keyInfoFromExprList(pParse, pGroupBy, 0, sAggInfo.nColumn);
addrSortingIdx = sqlite3VdbeAddOp4(v, OP_SorterOpen,
sAggInfo.sortingIdx, sAggInfo.nSortingColumn,
0, (char*)pKeyInfo, P4_KEYINFO);
@@ -106433,8 +110455,8 @@ SQLITE_PRIVATE int sqlite3Select(
groupBySort = 1;
nGroupBy = pGroupBy->nExpr;
- nCol = nGroupBy + 1;
- j = nGroupBy+1;
+ nCol = nGroupBy;
+ j = nGroupBy;
for(i=0; i<sAggInfo.nColumn; i++){
if( sAggInfo.aCol[i].iSorterColumn>=j ){
nCol++;
@@ -106444,8 +110466,7 @@ SQLITE_PRIVATE int sqlite3Select(
regBase = sqlite3GetTempRange(pParse, nCol);
sqlite3ExprCacheClear(pParse);
sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0);
- sqlite3VdbeAddOp2(v, OP_Sequence, sAggInfo.sortingIdx,regBase+nGroupBy);
- j = nGroupBy+1;
+ j = nGroupBy;
for(i=0; i<sAggInfo.nColumn; i++){
struct AggInfo_col *pCol = &sAggInfo.aCol[i];
if( pCol->iSorterColumn>=j ){
@@ -106498,12 +110519,11 @@ SQLITE_PRIVATE int sqlite3Select(
addrTopOfLoop = sqlite3VdbeCurrentAddr(v);
sqlite3ExprCacheClear(pParse);
if( groupBySort ){
- sqlite3VdbeAddOp2(v, OP_SorterData, sAggInfo.sortingIdx, sortOut);
+ sqlite3VdbeAddOp3(v, OP_SorterData, sAggInfo.sortingIdx, sortOut,sortPTab);
}
for(j=0; j<pGroupBy->nExpr; j++){
if( groupBySort ){
sqlite3VdbeAddOp3(v, OP_Column, sortPTab, j, iBMem+j);
- if( j==0 ) sqlite3VdbeChangeP5(v, OPFLAG_CLEARCACHE);
}else{
sAggInfo.directMode = 1;
sqlite3ExprCode(pParse, pGroupBy->a[j].pExpr, iBMem+j);
@@ -106762,103 +110782,106 @@ select_end:
sqlite3DbFree(db, sAggInfo.aCol);
sqlite3DbFree(db, sAggInfo.aFunc);
+#if SELECTTRACE_ENABLED
+ SELECTTRACE(1,pParse,p,("end processing\n"));
+ pParse->nSelectIndent--;
+#endif
return rc;
}
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
+#ifdef SQLITE_DEBUG
/*
** Generate a human-readable description of a the Select object.
*/
-static void explainOneSelect(Vdbe *pVdbe, Select *p){
- sqlite3ExplainPrintf(pVdbe, "SELECT ");
- if( p->selFlags & (SF_Distinct|SF_Aggregate) ){
- if( p->selFlags & SF_Distinct ){
- sqlite3ExplainPrintf(pVdbe, "DISTINCT ");
- }
- if( p->selFlags & SF_Aggregate ){
- sqlite3ExplainPrintf(pVdbe, "agg_flag ");
- }
- sqlite3ExplainNL(pVdbe);
- sqlite3ExplainPrintf(pVdbe, " ");
- }
- sqlite3ExplainExprList(pVdbe, p->pEList);
- sqlite3ExplainNL(pVdbe);
+SQLITE_PRIVATE void sqlite3TreeViewSelect(TreeView *pView, const Select *p, u8 moreToFollow){
+ int n = 0;
+ pView = sqlite3TreeViewPush(pView, moreToFollow);
+ sqlite3TreeViewLine(pView, "SELECT%s%s",
+ ((p->selFlags & SF_Distinct) ? " DISTINCT" : ""),
+ ((p->selFlags & SF_Aggregate) ? " agg_flag" : "")
+ );
+ if( p->pSrc && p->pSrc->nSrc ) n++;
+ if( p->pWhere ) n++;
+ if( p->pGroupBy ) n++;
+ if( p->pHaving ) n++;
+ if( p->pOrderBy ) n++;
+ if( p->pLimit ) n++;
+ if( p->pOffset ) n++;
+ if( p->pPrior ) n++;
+ sqlite3TreeViewExprList(pView, p->pEList, (n--)>0, "result-set");
if( p->pSrc && p->pSrc->nSrc ){
int i;
- sqlite3ExplainPrintf(pVdbe, "FROM ");
- sqlite3ExplainPush(pVdbe);
+ pView = sqlite3TreeViewPush(pView, (n--)>0);
+ sqlite3TreeViewLine(pView, "FROM");
for(i=0; i<p->pSrc->nSrc; i++){
struct SrcList_item *pItem = &p->pSrc->a[i];
- sqlite3ExplainPrintf(pVdbe, "{%d,*} = ", pItem->iCursor);
- if( pItem->pSelect ){
- sqlite3ExplainSelect(pVdbe, pItem->pSelect);
- if( pItem->pTab ){
- sqlite3ExplainPrintf(pVdbe, " (tabname=%s)", pItem->pTab->zName);
- }
+ StrAccum x;
+ char zLine[100];
+ sqlite3StrAccumInit(&x, zLine, sizeof(zLine), 0);
+ sqlite3XPrintf(&x, 0, "{%d,*}", pItem->iCursor);
+ if( pItem->zDatabase ){
+ sqlite3XPrintf(&x, 0, " %s.%s", pItem->zDatabase, pItem->zName);
}else if( pItem->zName ){
- sqlite3ExplainPrintf(pVdbe, "%s", pItem->zName);
+ sqlite3XPrintf(&x, 0, " %s", pItem->zName);
+ }
+ if( pItem->pTab ){
+ sqlite3XPrintf(&x, 0, " tabname=%Q", pItem->pTab->zName);
}
if( pItem->zAlias ){
- sqlite3ExplainPrintf(pVdbe, " (AS %s)", pItem->zAlias);
+ sqlite3XPrintf(&x, 0, " (AS %s)", pItem->zAlias);
}
if( pItem->jointype & JT_LEFT ){
- sqlite3ExplainPrintf(pVdbe, " LEFT-JOIN");
+ sqlite3XPrintf(&x, 0, " LEFT-JOIN");
}
- sqlite3ExplainNL(pVdbe);
+ sqlite3StrAccumFinish(&x);
+ sqlite3TreeViewItem(pView, zLine, i<p->pSrc->nSrc-1);
+ if( pItem->pSelect ){
+ sqlite3TreeViewSelect(pView, pItem->pSelect, 0);
+ }
+ sqlite3TreeViewPop(pView);
}
- sqlite3ExplainPop(pVdbe);
+ sqlite3TreeViewPop(pView);
}
if( p->pWhere ){
- sqlite3ExplainPrintf(pVdbe, "WHERE ");
- sqlite3ExplainExpr(pVdbe, p->pWhere);
- sqlite3ExplainNL(pVdbe);
+ sqlite3TreeViewItem(pView, "WHERE", (n--)>0);
+ sqlite3TreeViewExpr(pView, p->pWhere, 0);
+ sqlite3TreeViewPop(pView);
}
if( p->pGroupBy ){
- sqlite3ExplainPrintf(pVdbe, "GROUPBY ");
- sqlite3ExplainExprList(pVdbe, p->pGroupBy);
- sqlite3ExplainNL(pVdbe);
+ sqlite3TreeViewExprList(pView, p->pGroupBy, (n--)>0, "GROUPBY");
}
if( p->pHaving ){
- sqlite3ExplainPrintf(pVdbe, "HAVING ");
- sqlite3ExplainExpr(pVdbe, p->pHaving);
- sqlite3ExplainNL(pVdbe);
+ sqlite3TreeViewItem(pView, "HAVING", (n--)>0);
+ sqlite3TreeViewExpr(pView, p->pHaving, 0);
+ sqlite3TreeViewPop(pView);
}
if( p->pOrderBy ){
- sqlite3ExplainPrintf(pVdbe, "ORDERBY ");
- sqlite3ExplainExprList(pVdbe, p->pOrderBy);
- sqlite3ExplainNL(pVdbe);
+ sqlite3TreeViewExprList(pView, p->pOrderBy, (n--)>0, "ORDERBY");
}
if( p->pLimit ){
- sqlite3ExplainPrintf(pVdbe, "LIMIT ");
- sqlite3ExplainExpr(pVdbe, p->pLimit);
- sqlite3ExplainNL(pVdbe);
+ sqlite3TreeViewItem(pView, "LIMIT", (n--)>0);
+ sqlite3TreeViewExpr(pView, p->pLimit, 0);
+ sqlite3TreeViewPop(pView);
}
if( p->pOffset ){
- sqlite3ExplainPrintf(pVdbe, "OFFSET ");
- sqlite3ExplainExpr(pVdbe, p->pOffset);
- sqlite3ExplainNL(pVdbe);
- }
-}
-SQLITE_PRIVATE void sqlite3ExplainSelect(Vdbe *pVdbe, Select *p){
- if( p==0 ){
- sqlite3ExplainPrintf(pVdbe, "(null-select)");
- return;
+ sqlite3TreeViewItem(pView, "OFFSET", (n--)>0);
+ sqlite3TreeViewExpr(pView, p->pOffset, 0);
+ sqlite3TreeViewPop(pView);
}
- sqlite3ExplainPush(pVdbe);
- while( p ){
- explainOneSelect(pVdbe, p);
- p = p->pNext;
- if( p==0 ) break;
- sqlite3ExplainNL(pVdbe);
- sqlite3ExplainPrintf(pVdbe, "%s\n", selectOpName(p->op));
+ if( p->pPrior ){
+ const char *zOp = "UNION";
+ switch( p->op ){
+ case TK_ALL: zOp = "UNION ALL"; break;
+ case TK_INTERSECT: zOp = "INTERSECT"; break;
+ case TK_EXCEPT: zOp = "EXCEPT"; break;
+ }
+ sqlite3TreeViewItem(pView, zOp, (n--)>0);
+ sqlite3TreeViewSelect(pView, p->pPrior, 0);
+ sqlite3TreeViewPop(pView);
}
- sqlite3ExplainPrintf(pVdbe, "END");
- sqlite3ExplainPop(pVdbe);
+ sqlite3TreeViewPop(pView);
}
-
-/* End of the structure debug printing code
-*****************************************************************************/
-#endif /* defined(SQLITE_ENABLE_TREE_EXPLAIN) */
+#endif /* SQLITE_DEBUG */
/************** End of select.c **********************************************/
/************** Begin file table.c *******************************************/
@@ -106892,10 +110915,10 @@ SQLITE_PRIVATE void sqlite3ExplainSelect(Vdbe *pVdbe, Select *p){
typedef struct TabResult {
char **azResult; /* Accumulated output */
char *zErrMsg; /* Error message text, if an error occurs */
- int nAlloc; /* Slots allocated for azResult[] */
- int nRow; /* Number of rows in the result */
- int nColumn; /* Number of columns in the result */
- int nData; /* Slots used in azResult[]. (nRow+1)*nColumn */
+ u32 nAlloc; /* Slots allocated for azResult[] */
+ u32 nRow; /* Number of rows in the result */
+ u32 nColumn; /* Number of columns in the result */
+ u32 nData; /* Slots used in azResult[]. (nRow+1)*nColumn */
int rc; /* Return code from sqlite3_exec() */
} TabResult;
@@ -106921,7 +110944,7 @@ static int sqlite3_get_table_cb(void *pArg, int nCol, char **argv, char **colv){
if( p->nData + need > p->nAlloc ){
char **azNew;
p->nAlloc = p->nAlloc*2 + need;
- azNew = sqlite3_realloc( p->azResult, sizeof(char*)*p->nAlloc );
+ azNew = sqlite3_realloc64( p->azResult, sizeof(char*)*p->nAlloc );
if( azNew==0 ) goto malloc_failed;
p->azResult = azNew;
}
@@ -106936,7 +110959,7 @@ static int sqlite3_get_table_cb(void *pArg, int nCol, char **argv, char **colv){
if( z==0 ) goto malloc_failed;
p->azResult[p->nData++] = z;
}
- }else if( p->nColumn!=nCol ){
+ }else if( (int)p->nColumn!=nCol ){
sqlite3_free(p->zErrMsg);
p->zErrMsg = sqlite3_mprintf(
"sqlite3_get_table() called with two or more incompatible queries"
@@ -106989,6 +111012,9 @@ SQLITE_API int sqlite3_get_table(
int rc;
TabResult res;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || pazResult==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*pazResult = 0;
if( pnColumn ) *pnColumn = 0;
if( pnRow ) *pnRow = 0;
@@ -107045,7 +111071,7 @@ SQLITE_API int sqlite3_get_table(
** This routine frees the space the sqlite3_get_table() malloced.
*/
SQLITE_API void sqlite3_free_table(
- char **azResult /* Result returned from from sqlite3_get_table() */
+ char **azResult /* Result returned from sqlite3_get_table() */
){
if( azResult ){
int i, n;
@@ -107189,7 +111215,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
** ^^^^^^^^
**
** To maintain backwards compatibility, ignore the database
- ** name on pTableName if we are reparsing our of SQLITE_MASTER.
+ ** name on pTableName if we are reparsing out of SQLITE_MASTER.
*/
if( db->init.busy && iDb!=1 ){
sqlite3DbFree(db, pTableName->a[0].zDatabase);
@@ -107242,8 +111268,7 @@ SQLITE_PRIVATE void sqlite3BeginTrigger(
goto trigger_cleanup;
}
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
- if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash),
- zName, sqlite3Strlen30(zName)) ){
+ if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash),zName) ){
if( !noErr ){
sqlite3ErrorMsg(pParse, "trigger %T already exists", pName);
}else{
@@ -107386,13 +111411,12 @@ SQLITE_PRIVATE void sqlite3FinishTrigger(
Trigger *pLink = pTrig;
Hash *pHash = &db->aDb[iDb].pSchema->trigHash;
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
- pTrig = sqlite3HashInsert(pHash, zName, sqlite3Strlen30(zName), pTrig);
+ pTrig = sqlite3HashInsert(pHash, zName, pTrig);
if( pTrig ){
db->mallocFailed = 1;
}else if( pLink->pSchema==pLink->pTabSchema ){
Table *pTab;
- int n = sqlite3Strlen30(pLink->table);
- pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table, n);
+ pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table);
assert( pTab!=0 );
pLink->pNext = pTab->pTrigger;
pTab->pTrigger = pLink;
@@ -107551,7 +111575,6 @@ SQLITE_PRIVATE void sqlite3DropTrigger(Parse *pParse, SrcList *pName, int noErr)
int i;
const char *zDb;
const char *zName;
- int nName;
sqlite3 *db = pParse->db;
if( db->mallocFailed ) goto drop_trigger_cleanup;
@@ -107562,13 +111585,12 @@ SQLITE_PRIVATE void sqlite3DropTrigger(Parse *pParse, SrcList *pName, int noErr)
assert( pName->nSrc==1 );
zDb = pName->a[0].zDatabase;
zName = pName->a[0].zName;
- nName = sqlite3Strlen30(zName);
assert( zDb!=0 || sqlite3BtreeHoldsAllMutexes(db) );
for(i=OMIT_TEMPDB; i<db->nDb; i++){
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
if( zDb && sqlite3StrICmp(db->aDb[j].zName, zDb) ) continue;
assert( sqlite3SchemaMutexHeld(db, j, 0) );
- pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName, nName);
+ pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName);
if( pTrigger ) break;
}
if( !pTrigger ){
@@ -107591,8 +111613,7 @@ drop_trigger_cleanup:
** is set on.
*/
static Table *tableOfTrigger(Trigger *pTrigger){
- int n = sqlite3Strlen30(pTrigger->table);
- return sqlite3HashFind(&pTrigger->pTabSchema->tblHash, pTrigger->table, n);
+ return sqlite3HashFind(&pTrigger->pTabSchema->tblHash, pTrigger->table);
}
@@ -107664,7 +111685,7 @@ SQLITE_PRIVATE void sqlite3UnlinkAndDeleteTrigger(sqlite3 *db, int iDb, const ch
assert( sqlite3SchemaMutexHeld(db, iDb, 0) );
pHash = &(db->aDb[iDb].pSchema->trigHash);
- pTrigger = sqlite3HashInsert(pHash, zName, sqlite3Strlen30(zName), 0);
+ pTrigger = sqlite3HashInsert(pHash, zName, 0);
if( ALWAYS(pTrigger) ){
if( pTrigger->pSchema==pTrigger->pTabSchema ){
Table *pTab = tableOfTrigger(pTrigger);
@@ -108515,7 +112536,7 @@ SQLITE_PRIVATE void sqlite3Update(
}
/* If we are trying to update a view, realize that view into
- ** a ephemeral table.
+ ** an ephemeral table.
*/
#if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_TRIGGER)
if( isView ){
@@ -108619,8 +112640,8 @@ SQLITE_PRIVATE void sqlite3Update(
/* Top of the update loop */
if( okOnePass ){
- if( aToOpen[iDataCur-iBaseCur] ){
- assert( pPk!=0 );
+ if( aToOpen[iDataCur-iBaseCur] && !isView ){
+ assert( pPk );
sqlite3VdbeAddOp4Int(v, OP_NotFound, iDataCur, labelBreak, regKey, nKey);
VdbeCoverageNeverTaken(v);
}
@@ -108676,7 +112697,7 @@ SQLITE_PRIVATE void sqlite3Update(
}
/* Populate the array of registers beginning at regNew with the new
- ** row data. This array is used to check constaints, create the new
+ ** row data. This array is used to check constants, create the new
** table and index records, and as the values for any new.* references
** made by triggers.
**
@@ -108856,7 +112877,7 @@ update_cleanup:
return;
}
/* Make sure "isView" and other macros defined above are undefined. Otherwise
-** thely may interfere with compilation of other functions in this file
+** they may interfere with compilation of other functions in this file
** (or in another file, if this file becomes part of the amalgamation). */
#ifdef isView
#undef isView
@@ -108869,7 +112890,7 @@ update_cleanup:
/*
** Generate code for an UPDATE of a virtual table.
**
-** The strategy is that we create an ephemerial table that contains
+** The strategy is that we create an ephemeral table that contains
** for each row to be changed:
**
** (A) The original rowid of that row.
@@ -108877,7 +112898,7 @@ update_cleanup:
** (C) The content of every column in the row.
**
** Then we loop over this ephemeral table and for each row in
-** the ephermeral table call VUpdate.
+** the ephemeral table call VUpdate.
**
** When finished, drop the ephemeral table.
**
@@ -109050,14 +113071,14 @@ static int execExecSql(sqlite3 *db, char **pzErrMsg, const char *zSql){
** step (3) requires additional temporary disk space approximately equal
** to the size of the original database for the rollback journal.
** Hence, temporary disk space that is approximately 2x the size of the
-** orginal database is required. Every page of the database is written
+** original database is required. Every page of the database is written
** approximately 3 times: Once for step (2) and twice for step (3).
** Two writes per page are required in step (3) because the original
** database content must be written into the rollback journal prior to
** overwriting the database with the vacuumed content.
**
** Only 1x temporary space and only 1x writes would be required if
-** the copy of step (3) were replace by deleting the original database
+** the copy of step (3) were replaced by deleting the original database
** and renaming the transient database as the original. But that will
** not work if other processes are attached to the original database.
** And a power loss in between deleting the original and renaming the
@@ -109377,7 +113398,7 @@ static int createModule(
sqlite3_mutex_enter(db->mutex);
nName = sqlite3Strlen30(zName);
- if( sqlite3HashFind(&db->aModule, zName, nName) ){
+ if( sqlite3HashFind(&db->aModule, zName) ){
rc = SQLITE_MISUSE_BKPT;
}else{
Module *pMod;
@@ -109390,7 +113411,7 @@ static int createModule(
pMod->pModule = pModule;
pMod->pAux = pAux;
pMod->xDestroy = xDestroy;
- pDel = (Module *)sqlite3HashInsert(&db->aModule,zCopy,nName,(void*)pMod);
+ pDel = (Module *)sqlite3HashInsert(&db->aModule,zCopy,(void*)pMod);
assert( pDel==0 || pDel==pMod );
if( pDel ){
db->mallocFailed = 1;
@@ -109415,6 +113436,9 @@ SQLITE_API int sqlite3_create_module(
const sqlite3_module *pModule, /* The definition of the module */
void *pAux /* Context pointer for xCreate/xConnect */
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
+#endif
return createModule(db, zName, pModule, pAux, 0);
}
@@ -109428,6 +113452,9 @@ SQLITE_API int sqlite3_create_module_v2(
void *pAux, /* Context pointer for xCreate/xConnect */
void (*xDestroy)(void *) /* Module destructor function */
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
+#endif
return createModule(db, zName, pModule, pAux, xDestroy);
}
@@ -109660,7 +113687,12 @@ SQLITE_PRIVATE void sqlite3VtabBeginParse(
addModuleArgument(db, pTable, sqlite3NameFromToken(db, pModuleName));
addModuleArgument(db, pTable, 0);
addModuleArgument(db, pTable, sqlite3DbStrDup(db, pTable->zName));
- pParse->sNameToken.n = (int)(&pModuleName->z[pModuleName->n] - pName1->z);
+ assert( (pParse->sNameToken.z==pName2->z && pName2->z!=0)
+ || (pParse->sNameToken.z==pName1->z && pName2->z==0)
+ );
+ pParse->sNameToken.n = (int)(
+ &pModuleName->z[pModuleName->n] - pParse->sNameToken.z
+ );
#ifndef SQLITE_OMIT_AUTHORIZATION
/* Creating a virtual table invokes the authorization callback twice.
@@ -109759,9 +113791,8 @@ SQLITE_PRIVATE void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
Table *pOld;
Schema *pSchema = pTab->pSchema;
const char *zName = pTab->zName;
- int nName = sqlite3Strlen30(zName);
assert( sqlite3SchemaMutexHeld(db, 0, pSchema) );
- pOld = sqlite3HashInsert(&pSchema->tblHash, zName, nName, pTab);
+ pOld = sqlite3HashInsert(&pSchema->tblHash, zName, pTab);
if( pOld ){
db->mallocFailed = 1;
assert( pTab==pOld ); /* Malloc must have failed inside HashInsert() */
@@ -109854,6 +113885,7 @@ static int vtabCallConstructor(
}else if( ALWAYS(pVTable->pVtab) ){
/* Justification of ALWAYS(): A correct vtab constructor must allocate
** the sqlite3_vtab object if successful. */
+ memset(pVTable->pVtab, 0, sizeof(pVTable->pVtab[0]));
pVTable->pVtab->pModule = pMod->pModule;
pVTable->nRef = 1;
if( sCtx.pTab ){
@@ -109927,7 +113959,7 @@ SQLITE_PRIVATE int sqlite3VtabCallConnect(Parse *pParse, Table *pTab){
/* Locate the required virtual table module */
zMod = pTab->azModuleArg[0];
- pMod = (Module*)sqlite3HashFind(&db->aModule, zMod, sqlite3Strlen30(zMod));
+ pMod = (Module*)sqlite3HashFind(&db->aModule, zMod);
if( !pMod ){
const char *zModule = pTab->azModuleArg[0];
@@ -109995,7 +114027,7 @@ SQLITE_PRIVATE int sqlite3VtabCallCreate(sqlite3 *db, int iDb, const char *zTab,
/* Locate the required virtual table module */
zMod = pTab->azModuleArg[0];
- pMod = (Module*)sqlite3HashFind(&db->aModule, zMod, sqlite3Strlen30(zMod));
+ pMod = (Module*)sqlite3HashFind(&db->aModule, zMod);
/* If the module has been registered and includes a Create method,
** invoke it now. If the module has not been registered, return an
@@ -110032,9 +114064,12 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
Table *pTab;
char *zErr = 0;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
if( !db->pVtabCtx || !(pTab = db->pVtabCtx->pTab) ){
- sqlite3Error(db, SQLITE_MISUSE, 0);
+ sqlite3Error(db, SQLITE_MISUSE);
sqlite3_mutex_leave(db->mutex);
return SQLITE_MISUSE_BKPT;
}
@@ -110062,7 +114097,7 @@ SQLITE_API int sqlite3_declare_vtab(sqlite3 *db, const char *zCreateTable){
}
db->pVtabCtx->pTab = 0;
}else{
- sqlite3Error(db, SQLITE_ERROR, (zErr ? "%s" : 0), zErr);
+ sqlite3ErrorWithMsg(db, SQLITE_ERROR, (zErr ? "%s" : 0), zErr);
sqlite3DbFree(db, zErr);
rc = SQLITE_ERROR;
}
@@ -110388,6 +114423,9 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *db){
static const unsigned char aMap[] = {
SQLITE_ROLLBACK, SQLITE_ABORT, SQLITE_FAIL, SQLITE_IGNORE, SQLITE_REPLACE
};
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
assert( OE_Rollback==1 && OE_Abort==2 && OE_Fail==3 );
assert( OE_Ignore==4 && OE_Replace==5 );
assert( db->vtabOnConflict>=1 && db->vtabOnConflict<=5 );
@@ -110403,8 +114441,10 @@ SQLITE_API int sqlite3_vtab_config(sqlite3 *db, int op, ...){
va_list ap;
int rc = SQLITE_OK;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
-
va_start(ap, op);
switch( op ){
case SQLITE_VTAB_CONSTRAINT_SUPPORT: {
@@ -110423,7 +114463,7 @@ SQLITE_API int sqlite3_vtab_config(sqlite3 *db, int op, ...){
}
va_end(ap);
- if( rc!=SQLITE_OK ) sqlite3Error(db, rc, 0);
+ if( rc!=SQLITE_OK ) sqlite3Error(db, rc);
sqlite3_mutex_leave(db->mutex);
return rc;
}
@@ -110539,6 +114579,9 @@ struct WhereLevel {
} u;
struct WhereLoop *pWLoop; /* The selected WhereLoop object */
Bitmask notReady; /* FROM entries not usable at this level */
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ int addrVisit; /* Address at which row is visited */
+#endif
};
/*
@@ -110569,7 +114612,6 @@ struct WhereLoop {
union {
struct { /* Information for internal btree tables */
u16 nEq; /* Number of equality constraints */
- u16 nSkip; /* Number of initial index columns to skip */
Index *pIndex; /* Index used, or NULL */
} btree;
struct { /* Information for virtual tables */
@@ -110582,12 +114624,13 @@ struct WhereLoop {
} u;
u32 wsFlags; /* WHERE_* flags describing the plan */
u16 nLTerm; /* Number of entries in aLTerm[] */
+ u16 nSkip; /* Number of NULL aLTerm[] entries */
/**** whereLoopXfer() copies fields above ***********************/
# define WHERE_LOOP_XFER_SZ offsetof(WhereLoop,nLSlot)
u16 nLSlot; /* Number of slots allocated for aLTerm[] */
WhereTerm **aLTerm; /* WhereTerms used */
WhereLoop *pNextLoop; /* Next WhereLoop object in the WhereClause */
- WhereTerm *aLTermSpace[4]; /* Initial aLTerm[] space */
+ WhereTerm *aLTermSpace[3]; /* Initial aLTerm[] space */
};
/* This object holds the prerequisites and the cost of running a
@@ -110630,7 +114673,7 @@ static int whereLoopResize(sqlite3*, WhereLoop*, int);
** 1. Then using those as a basis to compute the N best WherePath objects
** of length 2. And so forth until the length of WherePaths equals the
** number of nodes in the FROM clause. The best (lowest cost) WherePath
-** at the end is the choosen query plan.
+** at the end is the chosen query plan.
*/
struct WherePath {
Bitmask maskLoop; /* Bitmask of all WhereLoop objects in this path */
@@ -110913,6 +114956,7 @@ struct WhereInfo {
#define WHERE_AUTO_INDEX 0x00004000 /* Uses an ephemeral index */
#define WHERE_SKIPSCAN 0x00008000 /* Uses the skip-scan algorithm */
#define WHERE_UNQ_WANTED 0x00010000 /* WHERE_ONEROW would have been helpful*/
+#define WHERE_PARTIALIDX 0x00020000 /* The automatic index is partial */
/************** End of whereInt.h ********************************************/
/************** Continuing where we left off in where.c **********************/
@@ -111120,10 +115164,11 @@ static int whereClauseInsert(WhereClause *pWC, Expr *p, u8 wtFlags){
sqlite3DbFree(db, pOld);
}
pWC->nSlot = sqlite3DbMallocSize(db, pWC->a)/sizeof(pWC->a[0]);
+ memset(&pWC->a[pWC->nTerm], 0, sizeof(pWC->a[0])*(pWC->nSlot-pWC->nTerm));
}
pTerm = &pWC->a[idx = pWC->nTerm++];
if( p && ExprHasProperty(p, EP_Unlikely) ){
- pTerm->truthProb = sqlite3LogEst(p->iTable) - 99;
+ pTerm->truthProb = sqlite3LogEst(p->iTable) - 270;
}else{
pTerm->truthProb = 1;
}
@@ -111263,11 +115308,6 @@ static int allowedOp(int op){
}
/*
-** Swap two objects of type TYPE.
-*/
-#define SWAP(TYPE,A,B) {TYPE t=A; A=B; B=t;}
-
-/*
** Commute a comparison operator. Expressions of the form "X op Y"
** are converted into "Y op X".
**
@@ -111599,7 +115639,7 @@ static int isLikeOrGlob(
** value of the variable means there is no need to invoke the LIKE
** function, then no OP_Variable will be added to the program.
** This causes problems for the sqlite3_bind_parameter_name()
- ** API. To workaround them, add a dummy OP_Variable here.
+ ** API. To work around them, add a dummy OP_Variable here.
*/
int r1 = sqlite3GetTempReg(pParse);
sqlite3ExprCodeTarget(pParse, pRight, r1);
@@ -111659,6 +115699,15 @@ static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
}
}
+/*
+** Mark term iChild as being a child of term iParent
+*/
+static void markTermAsChild(WhereClause *pWC, int iChild, int iParent){
+ pWC->a[iChild].iParent = iParent;
+ pWC->a[iChild].truthProb = pWC->a[iParent].truthProb;
+ pWC->a[iParent].nChild++;
+}
+
#if !defined(SQLITE_OMIT_OR_OPTIMIZATION) && !defined(SQLITE_OMIT_SUBQUERY)
/*
** Analyze a term that consists of two or more OR-connected
@@ -111719,7 +115768,7 @@ static void transferJoinMarkings(Expr *pDerived, Expr *pBase){
** appropriate for indexing exist.
**
** All examples A through E above satisfy case 2. But if a term
-** also statisfies case 1 (such as B) we know that the optimizer will
+** also satisfies case 1 (such as B) we know that the optimizer will
** always prefer case 1, so in that case we pretend that case 2 is not
** satisfied.
**
@@ -111877,7 +115926,7 @@ static void exprAnalyzeOrTerm(
}
if( (chngToIN & getMask(&pWInfo->sMaskSet, pOrTerm->leftCursor))==0 ){
/* This term must be of the form t1.a==t2.b where t2 is in the
- ** chngToIN set but t1 is not. This term will be either preceeded
+ ** chngToIN set but t1 is not. This term will be either preceded
** or follwed by an inverted copy (t2.b==t1.a). Skip this term
** and use its inversion. */
testcase( pOrTerm->wtFlags & TERM_COPIED );
@@ -111956,8 +116005,7 @@ static void exprAnalyzeOrTerm(
testcase( idxNew==0 );
exprAnalyze(pSrc, pWC, idxNew);
pTerm = &pWC->a[idxTerm];
- pWC->a[idxNew].iParent = idxTerm;
- pTerm->nChild = 1;
+ markTermAsChild(pWC, idxNew, idxTerm);
}else{
sqlite3ExprListDelete(db, pList);
}
@@ -112059,9 +116107,8 @@ static void exprAnalyze(
idxNew = whereClauseInsert(pWC, pDup, TERM_VIRTUAL|TERM_DYNAMIC);
if( idxNew==0 ) return;
pNew = &pWC->a[idxNew];
- pNew->iParent = idxTerm;
+ markTermAsChild(pWC, idxNew, idxTerm);
pTerm = &pWC->a[idxTerm];
- pTerm->nChild = 1;
pTerm->wtFlags |= TERM_COPIED;
if( pExpr->op==TK_EQ
&& !ExprHasProperty(pExpr, EP_FromJoin)
@@ -112118,9 +116165,8 @@ static void exprAnalyze(
testcase( idxNew==0 );
exprAnalyze(pSrc, pWC, idxNew);
pTerm = &pWC->a[idxTerm];
- pWC->a[idxNew].iParent = idxTerm;
+ markTermAsChild(pWC, idxNew, idxTerm);
}
- pTerm->nChild = 2;
}
#endif /* SQLITE_OMIT_BETWEEN_OPTIMIZATION */
@@ -112195,9 +116241,8 @@ static void exprAnalyze(
exprAnalyze(pSrc, pWC, idxNew2);
pTerm = &pWC->a[idxTerm];
if( isComplete ){
- pWC->a[idxNew1].iParent = idxTerm;
- pWC->a[idxNew2].iParent = idxTerm;
- pTerm->nChild = 2;
+ markTermAsChild(pWC, idxNew1, idxTerm);
+ markTermAsChild(pWC, idxNew2, idxTerm);
}
}
#endif /* SQLITE_OMIT_LIKE_OPTIMIZATION */
@@ -112230,9 +116275,8 @@ static void exprAnalyze(
pNewTerm->leftCursor = pLeft->iTable;
pNewTerm->u.leftColumn = pLeft->iColumn;
pNewTerm->eOperator = WO_MATCH;
- pNewTerm->iParent = idxTerm;
+ markTermAsChild(pWC, idxNew, idxTerm);
pTerm = &pWC->a[idxTerm];
- pTerm->nChild = 1;
pTerm->wtFlags |= TERM_COPIED;
pNewTerm->prereqAll = pTerm->prereqAll;
}
@@ -112253,7 +116297,7 @@ static void exprAnalyze(
if( pExpr->op==TK_NOTNULL
&& pExpr->pLeft->op==TK_COLUMN
&& pExpr->pLeft->iColumn>=0
- && OptimizationEnabled(db, SQLITE_Stat3)
+ && OptimizationEnabled(db, SQLITE_Stat34)
){
Expr *pNewExpr;
Expr *pLeft = pExpr->pLeft;
@@ -112272,9 +116316,8 @@ static void exprAnalyze(
pNewTerm->leftCursor = pLeft->iTable;
pNewTerm->u.leftColumn = pLeft->iColumn;
pNewTerm->eOperator = WO_GT;
- pNewTerm->iParent = idxTerm;
+ markTermAsChild(pWC, idxNew, idxTerm);
pTerm = &pWC->a[idxTerm];
- pTerm->nChild = 1;
pTerm->wtFlags |= TERM_COPIED;
pNewTerm->prereqAll = pTerm->prereqAll;
}
@@ -112288,7 +116331,7 @@ static void exprAnalyze(
}
/*
-** This function searches pList for a entry that matches the iCol-th column
+** This function searches pList for an entry that matches the iCol-th column
** of index pIdx.
**
** If such an expression is found, its index in pList->a[] is returned. If
@@ -112494,6 +116537,8 @@ static void constructAutomaticIndex(
Bitmask idxCols; /* Bitmap of columns used for indexing */
Bitmask extraCols; /* Bitmap of additional columns */
u8 sentWarning = 0; /* True if a warnning has been issued */
+ Expr *pPartial = 0; /* Partial Index Expression */
+ int iContinue = 0; /* Jump here to skip excluded rows */
/* Generate code to skip over the creation and initialization of the
** transient index on 2nd and subsequent iterations of the loop. */
@@ -112509,6 +116554,12 @@ static void constructAutomaticIndex(
pLoop = pLevel->pWLoop;
idxCols = 0;
for(pTerm=pWC->a; pTerm<pWCEnd; pTerm++){
+ if( pLoop->prereq==0
+ && (pTerm->wtFlags & TERM_VIRTUAL)==0
+ && sqlite3ExprIsTableConstant(pTerm->pExpr, pSrc->iCursor) ){
+ pPartial = sqlite3ExprAnd(pParse->db, pPartial,
+ sqlite3ExprDup(pParse->db, pTerm->pExpr, 0));
+ }
if( termCanDriveIndex(pTerm, pSrc, notReady) ){
int iCol = pTerm->u.leftColumn;
Bitmask cMask = iCol>=BMS ? MASKBIT(BMS-1) : MASKBIT(iCol);
@@ -112521,7 +116572,9 @@ static void constructAutomaticIndex(
sentWarning = 1;
}
if( (idxCols & cMask)==0 ){
- if( whereLoopResize(pParse->db, pLoop, nKeyCol+1) ) return;
+ if( whereLoopResize(pParse->db, pLoop, nKeyCol+1) ){
+ goto end_auto_index_create;
+ }
pLoop->aLTerm[nKeyCol++] = pTerm;
idxCols |= cMask;
}
@@ -112541,7 +116594,7 @@ static void constructAutomaticIndex(
** if they go out of sync.
*/
extraCols = pSrc->colUsed & (~idxCols | MASKBIT(BMS-1));
- mxBitCol = (pTable->nCol >= BMS-1) ? BMS-1 : pTable->nCol;
+ mxBitCol = MIN(BMS-1,pTable->nCol);
testcase( pTable->nCol==BMS-1 );
testcase( pTable->nCol==BMS-2 );
for(i=0; i<mxBitCol; i++){
@@ -112550,11 +116603,10 @@ static void constructAutomaticIndex(
if( pSrc->colUsed & MASKBIT(BMS-1) ){
nKeyCol += pTable->nCol - BMS + 1;
}
- pLoop->wsFlags |= WHERE_COLUMN_EQ | WHERE_IDX_ONLY;
/* Construct the Index object to describe this index */
pIdx = sqlite3AllocateIndexObject(pParse->db, nKeyCol+1, 0, &zNotUsed);
- if( pIdx==0 ) return;
+ if( pIdx==0 ) goto end_auto_index_create;
pLoop->u.btree.pIndex = pIdx;
pIdx->zName = "auto-index";
pIdx->pTable = pTable;
@@ -112606,18 +116658,29 @@ static void constructAutomaticIndex(
VdbeComment((v, "for %s", pTable->zName));
/* Fill the automatic index with content */
+ sqlite3ExprCachePush(pParse);
addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v);
+ if( pPartial ){
+ iContinue = sqlite3VdbeMakeLabel(v);
+ sqlite3ExprIfFalse(pParse, pPartial, iContinue, SQLITE_JUMPIFNULL);
+ pLoop->wsFlags |= WHERE_PARTIALIDX;
+ }
regRecord = sqlite3GetTempReg(pParse);
sqlite3GenerateIndexKey(pParse, pIdx, pLevel->iTabCur, regRecord, 0, 0, 0, 0);
sqlite3VdbeAddOp2(v, OP_IdxInsert, pLevel->iIdxCur, regRecord);
sqlite3VdbeChangeP5(v, OPFLAG_USESEEKRESULT);
+ if( pPartial ) sqlite3VdbeResolveLabel(v, iContinue);
sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
sqlite3VdbeChangeP5(v, SQLITE_STMTSTATUS_AUTOINDEX);
sqlite3VdbeJumpHere(v, addrTop);
sqlite3ReleaseTempReg(pParse, regRecord);
+ sqlite3ExprCachePop(pParse);
/* Jump here when skipping the initialization */
sqlite3VdbeJumpHere(v, addrInit);
+
+end_auto_index_create:
+ sqlite3ExprDelete(pParse->db, pPartial);
}
#endif /* SQLITE_OMIT_AUTOMATIC_INDEX */
@@ -112777,7 +116840,6 @@ static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
}
#endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) */
-
#ifdef SQLITE_ENABLE_STAT3_OR_STAT4
/*
** Estimate the location of a particular key among all keys in an
@@ -112786,9 +116848,10 @@ static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
** aStat[0] Est. number of rows less than pVal
** aStat[1] Est. number of rows equal to pVal
**
-** Return SQLITE_OK on success.
+** Return the index of the sample that is the smallest sample that
+** is greater than or equal to pRec.
*/
-static void whereKeyStats(
+static int whereKeyStats(
Parse *pParse, /* Database connection */
Index *pIdx, /* Index to consider domain of */
UnpackedRecord *pRec, /* Vector of values to consider */
@@ -112811,7 +116874,7 @@ static void whereKeyStats(
assert( pRec->nField>0 && iCol<pIdx->nSampleCol );
do{
iTest = (iMin+i)/2;
- res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec, 0);
+ res = sqlite3VdbeRecordCompare(aSample[iTest].n, aSample[iTest].p, pRec);
if( res<0 ){
iMin = iTest+1;
}else{
@@ -112826,16 +116889,16 @@ static void whereKeyStats(
if( res==0 ){
/* If (res==0) is true, then sample $i must be equal to pRec */
assert( i<pIdx->nSample );
- assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0)
+ assert( 0==sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec)
|| pParse->db->mallocFailed );
}else{
/* Otherwise, pRec must be smaller than sample $i and larger than
** sample ($i-1). */
assert( i==pIdx->nSample
- || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec, 0)>0
+ || sqlite3VdbeRecordCompare(aSample[i].n, aSample[i].p, pRec)>0
|| pParse->db->mallocFailed );
assert( i==0
- || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec, 0)<0
+ || sqlite3VdbeRecordCompare(aSample[i-1].n, aSample[i-1].p, pRec)<0
|| pParse->db->mallocFailed );
}
#endif /* ifdef SQLITE_DEBUG */
@@ -112870,6 +116933,7 @@ static void whereKeyStats(
}
aStat[0] = iLower + iGap;
}
+ return i;
}
#endif /* SQLITE_ENABLE_STAT3_OR_STAT4 */
@@ -113020,7 +117084,7 @@ static int whereRangeSkipScanEst(
** If either of the upper or lower bound is not present, then NULL is passed in
** place of the corresponding WhereTerm.
**
-** The value in (pBuilder->pNew->u.btree.nEq) is the index of the index
+** The value in (pBuilder->pNew->u.btree.nEq) is the number of the index
** column subject to the range constraint. Or, equivalently, the number of
** equality constraints optimized by the proposed index scan. For example,
** assuming index p is on t1(a, b), and the SQL query is:
@@ -113036,9 +117100,9 @@ static int whereRangeSkipScanEst(
**
** When this function is called, *pnOut is set to the sqlite3LogEst() of the
** number of rows that the index scan is expected to visit without
-** considering the range constraints. If nEq is 0, this is the number of
+** considering the range constraints. If nEq is 0, then *pnOut is the number of
** rows in the index. Assuming no error occurs, *pnOut is adjusted (reduced)
-** to account for the range contraints pLower and pUpper.
+** to account for the range constraints pLower and pUpper.
**
** In the absence of sqlite_stat4 ANALYZE data, or if such data cannot be
** used, a single range inequality reduces the search space by a factor of 4.
@@ -113060,10 +117124,7 @@ static int whereRangeScanEst(
Index *p = pLoop->u.btree.pIndex;
int nEq = pLoop->u.btree.nEq;
- if( p->nSample>0
- && nEq<p->nSampleCol
- && OptimizationEnabled(pParse->db, SQLITE_Stat3)
- ){
+ if( p->nSample>0 && nEq<p->nSampleCol ){
if( nEq==pBuilder->nRecValid ){
UnpackedRecord *pRec = pBuilder->pRec;
tRowcnt a[2];
@@ -113079,16 +117140,24 @@ static int whereRangeScanEst(
** is not a simple variable or literal value), the lower bound of the
** range is $P. Due to a quirk in the way whereKeyStats() works, even
** if $L is available, whereKeyStats() is called for both ($P) and
- ** ($P:$L) and the larger of the two returned values used.
+ ** ($P:$L) and the larger of the two returned values is used.
**
** Similarly, iUpper is to be set to the estimate of the number of rows
** less than the upper bound of the range query. Where the upper bound
** is either ($P) or ($P:$U). Again, even if $U is available, both values
** of iUpper are requested of whereKeyStats() and the smaller used.
+ **
+ ** The number of rows between the two bounds is then just iUpper-iLower.
*/
- tRowcnt iLower;
- tRowcnt iUpper;
+ tRowcnt iLower; /* Rows less than the lower bound */
+ tRowcnt iUpper; /* Rows less than the upper bound */
+ int iLwrIdx = -2; /* aSample[] for the lower bound */
+ int iUprIdx = -1; /* aSample[] for the upper bound */
+ if( pRec ){
+ testcase( pRec->nField!=pBuilder->nRecValid );
+ pRec->nField = pBuilder->nRecValid;
+ }
if( nEq==p->nKeyCol ){
aff = SQLITE_AFF_INTEGER;
}else{
@@ -113097,7 +117166,7 @@ static int whereRangeScanEst(
/* Determine iLower and iUpper using ($P) only. */
if( nEq==0 ){
iLower = 0;
- iUpper = sqlite3LogEstToInt(p->aiRowLogEst[0]);
+ iUpper = p->nRowEst0;
}else{
/* Note: this call could be optimized away - since the same values must
** have been requested when testing key $P in whereEqualScanEst(). */
@@ -113106,18 +117175,26 @@ static int whereRangeScanEst(
iUpper = a[0] + a[1];
}
+ assert( pLower==0 || (pLower->eOperator & (WO_GT|WO_GE))!=0 );
+ assert( pUpper==0 || (pUpper->eOperator & (WO_LT|WO_LE))!=0 );
+ assert( p->aSortOrder!=0 );
+ if( p->aSortOrder[nEq] ){
+ /* The roles of pLower and pUpper are swapped for a DESC index */
+ SWAP(WhereTerm*, pLower, pUpper);
+ }
+
/* If possible, improve on the iLower estimate using ($P:$L). */
if( pLower ){
int bOk; /* True if value is extracted from pExpr */
Expr *pExpr = pLower->pExpr->pRight;
- assert( (pLower->eOperator & (WO_GT|WO_GE))!=0 );
rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk);
if( rc==SQLITE_OK && bOk ){
tRowcnt iNew;
- whereKeyStats(pParse, p, pRec, 0, a);
- iNew = a[0] + ((pLower->eOperator & WO_GT) ? a[1] : 0);
+ iLwrIdx = whereKeyStats(pParse, p, pRec, 0, a);
+ iNew = a[0] + ((pLower->eOperator & (WO_GT|WO_LE)) ? a[1] : 0);
if( iNew>iLower ) iLower = iNew;
nOut--;
+ pLower = 0;
}
}
@@ -113125,14 +117202,14 @@ static int whereRangeScanEst(
if( pUpper ){
int bOk; /* True if value is extracted from pExpr */
Expr *pExpr = pUpper->pExpr->pRight;
- assert( (pUpper->eOperator & (WO_LT|WO_LE))!=0 );
rc = sqlite3Stat4ProbeSetValue(pParse, p, &pRec, pExpr, aff, nEq, &bOk);
if( rc==SQLITE_OK && bOk ){
tRowcnt iNew;
- whereKeyStats(pParse, p, pRec, 1, a);
- iNew = a[0] + ((pUpper->eOperator & WO_LE) ? a[1] : 0);
+ iUprIdx = whereKeyStats(pParse, p, pRec, 1, a);
+ iNew = a[0] + ((pUpper->eOperator & (WO_GT|WO_LE)) ? a[1] : 0);
if( iNew<iUpper ) iUpper = iNew;
nOut--;
+ pUpper = 0;
}
}
@@ -113140,16 +117217,19 @@ static int whereRangeScanEst(
if( rc==SQLITE_OK ){
if( iUpper>iLower ){
nNew = sqlite3LogEst(iUpper - iLower);
+ /* TUNING: If both iUpper and iLower are derived from the same
+ ** sample, then assume they are 4x more selective. This brings
+ ** the estimated selectivity more in line with what it would be
+ ** if estimated without the use of STAT3/4 tables. */
+ if( iLwrIdx==iUprIdx ) nNew -= 20; assert( 20==sqlite3LogEst(4) );
}else{
nNew = 10; assert( 10==sqlite3LogEst(2) );
}
if( nNew<nOut ){
nOut = nNew;
}
- pLoop->nOut = (LogEst)nOut;
- WHERETRACE(0x10, ("range scan regions: %u..%u est=%d\n",
+ WHERETRACE(0x10, ("STAT4 range scan: %u..%u est=%d\n",
(u32)iLower, (u32)iUpper, nOut));
- return SQLITE_OK;
}
}else{
int bDone = 0;
@@ -113160,22 +117240,31 @@ static int whereRangeScanEst(
#else
UNUSED_PARAMETER(pParse);
UNUSED_PARAMETER(pBuilder);
-#endif
assert( pLower || pUpper );
+#endif
assert( pUpper==0 || (pUpper->wtFlags & TERM_VNULL)==0 );
nNew = whereRangeAdjust(pLower, nOut);
nNew = whereRangeAdjust(pUpper, nNew);
- /* TUNING: If there is both an upper and lower limit, assume the range is
+ /* TUNING: If there is both an upper and lower limit and neither limit
+ ** has an application-defined likelihood(), assume the range is
** reduced by an additional 75%. This means that, by default, an open-ended
** range query (e.g. col > ?) is assumed to match 1/4 of the rows in the
** index. While a closed range (e.g. col BETWEEN ? AND ?) is estimated to
** match 1/64 of the index. */
- if( pLower && pUpper ) nNew -= 20;
+ if( pLower && pLower->truthProb>0 && pUpper && pUpper->truthProb>0 ){
+ nNew -= 20;
+ }
nOut -= (pLower!=0) + (pUpper!=0);
if( nNew<10 ) nNew = 10;
if( nNew<nOut ) nOut = nNew;
+#if defined(WHERETRACE_ENABLED)
+ if( pLoop->nOut>nOut ){
+ WHERETRACE(0x10,("Range scan lowers nOut from %d to %d\n",
+ pLoop->nOut, nOut));
+ }
+#endif
pLoop->nOut = (LogEst)nOut;
return rc;
}
@@ -113288,7 +117377,7 @@ static int whereInScanEst(
if( rc==SQLITE_OK ){
if( nRowEst > nRow0 ) nRowEst = nRow0;
*pnRow = nRowEst;
- WHERETRACE(0x10,("IN row estimate: est=%g\n", nRowEst));
+ WHERETRACE(0x10,("IN row estimate: est=%d\n", nRowEst));
}
assert( pBuilder->nRecValid==nRecValid );
return rc;
@@ -113525,7 +117614,7 @@ static int codeAllEqualityTerms(
pLoop = pLevel->pWLoop;
assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 );
nEq = pLoop->u.btree.nEq;
- nSkip = pLoop->u.btree.nSkip;
+ nSkip = pLoop->nSkip;
pIdx = pLoop->u.btree.pIndex;
assert( pIdx!=0 );
@@ -113624,9 +117713,8 @@ static void explainAppendTerm(
/*
** Argument pLevel describes a strategy for scanning table pTab. This
-** function returns a pointer to a string buffer containing a description
-** of the subset of table rows scanned by the strategy in the form of an
-** SQL expression. Or, if all rows are scanned, NULL is returned.
+** function appends text to pStr that describes the subset of table
+** rows scanned by the strategy in the form of an SQL expression.
**
** For example, if the query:
**
@@ -113636,58 +117724,49 @@ static void explainAppendTerm(
** string similar to:
**
** "a=? AND b>?"
-**
-** The returned pointer points to memory obtained from sqlite3DbMalloc().
-** It is the responsibility of the caller to free the buffer when it is
-** no longer required.
*/
-static char *explainIndexRange(sqlite3 *db, WhereLoop *pLoop, Table *pTab){
+static void explainIndexRange(StrAccum *pStr, WhereLoop *pLoop, Table *pTab){
Index *pIndex = pLoop->u.btree.pIndex;
u16 nEq = pLoop->u.btree.nEq;
- u16 nSkip = pLoop->u.btree.nSkip;
+ u16 nSkip = pLoop->nSkip;
int i, j;
Column *aCol = pTab->aCol;
i16 *aiColumn = pIndex->aiColumn;
- StrAccum txt;
- if( nEq==0 && (pLoop->wsFlags & (WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ){
- return 0;
- }
- sqlite3StrAccumInit(&txt, 0, 0, SQLITE_MAX_LENGTH);
- txt.db = db;
- sqlite3StrAccumAppend(&txt, " (", 2);
+ if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return;
+ sqlite3StrAccumAppend(pStr, " (", 2);
for(i=0; i<nEq; i++){
char *z = aiColumn[i] < 0 ? "rowid" : aCol[aiColumn[i]].zName;
if( i>=nSkip ){
- explainAppendTerm(&txt, i, z, "=");
+ explainAppendTerm(pStr, i, z, "=");
}else{
- if( i ) sqlite3StrAccumAppend(&txt, " AND ", 5);
- sqlite3StrAccumAppend(&txt, "ANY(", 4);
- sqlite3StrAccumAppendAll(&txt, z);
- sqlite3StrAccumAppend(&txt, ")", 1);
+ if( i ) sqlite3StrAccumAppend(pStr, " AND ", 5);
+ sqlite3XPrintf(pStr, 0, "ANY(%s)", z);
}
}
j = i;
if( pLoop->wsFlags&WHERE_BTM_LIMIT ){
char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
- explainAppendTerm(&txt, i++, z, ">");
+ explainAppendTerm(pStr, i++, z, ">");
}
if( pLoop->wsFlags&WHERE_TOP_LIMIT ){
char *z = aiColumn[j] < 0 ? "rowid" : aCol[aiColumn[j]].zName;
- explainAppendTerm(&txt, i, z, "<");
+ explainAppendTerm(pStr, i, z, "<");
}
- sqlite3StrAccumAppend(&txt, ")", 1);
- return sqlite3StrAccumFinish(&txt);
+ sqlite3StrAccumAppend(pStr, ")", 1);
}
/*
** This function is a no-op unless currently processing an EXPLAIN QUERY PLAN
-** command. If the query being compiled is an EXPLAIN QUERY PLAN, a single
-** record is added to the output to describe the table scan strategy in
-** pLevel.
+** command, or if either SQLITE_DEBUG or SQLITE_ENABLE_STMT_SCANSTATUS was
+** defined at compile-time. If it is not a no-op, a single OP_Explain opcode
+** is added to the output to describe the table scan strategy in pLevel.
+**
+** If an OP_Explain opcode is added to the VM, its address is returned.
+** Otherwise, if no OP_Explain is coded, zero is returned.
*/
-static void explainOneScan(
+static int explainOneScan(
Parse *pParse, /* Parse context */
SrcList *pTabList, /* Table list this loop refers to */
WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */
@@ -113695,82 +117774,136 @@ static void explainOneScan(
int iFrom, /* Value for "from" column of output */
u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */
){
-#ifndef SQLITE_DEBUG
+ int ret = 0;
+#if !defined(SQLITE_DEBUG) && !defined(SQLITE_ENABLE_STMT_SCANSTATUS)
if( pParse->explain==2 )
#endif
{
struct SrcList_item *pItem = &pTabList->a[pLevel->iFrom];
Vdbe *v = pParse->pVdbe; /* VM being constructed */
sqlite3 *db = pParse->db; /* Database handle */
- char *zMsg; /* Text to add to EQP output */
int iId = pParse->iSelectId; /* Select id (left-most output column) */
int isSearch; /* True for a SEARCH. False for SCAN. */
WhereLoop *pLoop; /* The controlling WhereLoop object */
u32 flags; /* Flags that describe this loop */
+ char *zMsg; /* Text to add to EQP output */
+ StrAccum str; /* EQP output string */
+ char zBuf[100]; /* Initial space for EQP output string */
pLoop = pLevel->pWLoop;
flags = pLoop->wsFlags;
- if( (flags&WHERE_MULTI_OR) || (wctrlFlags&WHERE_ONETABLE_ONLY) ) return;
+ if( (flags&WHERE_MULTI_OR) || (wctrlFlags&WHERE_ONETABLE_ONLY) ) return 0;
isSearch = (flags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))!=0
|| ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
|| (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX));
- zMsg = sqlite3MPrintf(db, "%s", isSearch?"SEARCH":"SCAN");
+ sqlite3StrAccumInit(&str, zBuf, sizeof(zBuf), SQLITE_MAX_LENGTH);
+ str.db = db;
+ sqlite3StrAccumAppendAll(&str, isSearch ? "SEARCH" : "SCAN");
if( pItem->pSelect ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s SUBQUERY %d", zMsg,pItem->iSelectId);
+ sqlite3XPrintf(&str, 0, " SUBQUERY %d", pItem->iSelectId);
}else{
- zMsg = sqlite3MAppendf(db, zMsg, "%s TABLE %s", zMsg, pItem->zName);
+ sqlite3XPrintf(&str, 0, " TABLE %s", pItem->zName);
}
if( pItem->zAlias ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s AS %s", zMsg, pItem->zAlias);
+ sqlite3XPrintf(&str, 0, " AS %s", pItem->zAlias);
}
- if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0
- && ALWAYS(pLoop->u.btree.pIndex!=0)
- ){
- const char *zFmt;
- Index *pIdx = pLoop->u.btree.pIndex;
- char *zWhere = explainIndexRange(db, pLoop, pItem->pTab);
+ if( (flags & (WHERE_IPK|WHERE_VIRTUALTABLE))==0 ){
+ const char *zFmt = 0;
+ Index *pIdx;
+
+ assert( pLoop->u.btree.pIndex!=0 );
+ pIdx = pLoop->u.btree.pIndex;
assert( !(flags&WHERE_AUTO_INDEX) || (flags&WHERE_IDX_ONLY) );
if( !HasRowid(pItem->pTab) && IsPrimaryKeyIndex(pIdx) ){
- zFmt = zWhere ? "%s USING PRIMARY KEY%.0s%s" : "%s%.0s%s";
+ if( isSearch ){
+ zFmt = "PRIMARY KEY";
+ }
+ }else if( flags & WHERE_PARTIALIDX ){
+ zFmt = "AUTOMATIC PARTIAL COVERING INDEX";
}else if( flags & WHERE_AUTO_INDEX ){
- zFmt = "%s USING AUTOMATIC COVERING INDEX%.0s%s";
+ zFmt = "AUTOMATIC COVERING INDEX";
}else if( flags & WHERE_IDX_ONLY ){
- zFmt = "%s USING COVERING INDEX %s%s";
+ zFmt = "COVERING INDEX %s";
}else{
- zFmt = "%s USING INDEX %s%s";
+ zFmt = "INDEX %s";
+ }
+ if( zFmt ){
+ sqlite3StrAccumAppend(&str, " USING ", 7);
+ sqlite3XPrintf(&str, 0, zFmt, pIdx->zName);
+ explainIndexRange(&str, pLoop, pItem->pTab);
}
- zMsg = sqlite3MAppendf(db, zMsg, zFmt, zMsg, pIdx->zName, zWhere);
- sqlite3DbFree(db, zWhere);
}else if( (flags & WHERE_IPK)!=0 && (flags & WHERE_CONSTRAINT)!=0 ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s USING INTEGER PRIMARY KEY", zMsg);
-
+ const char *zRange;
if( flags&(WHERE_COLUMN_EQ|WHERE_COLUMN_IN) ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s (rowid=?)", zMsg);
+ zRange = "(rowid=?)";
}else if( (flags&WHERE_BOTH_LIMIT)==WHERE_BOTH_LIMIT ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s (rowid>? AND rowid<?)", zMsg);
+ zRange = "(rowid>? AND rowid<?)";
}else if( flags&WHERE_BTM_LIMIT ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s (rowid>?)", zMsg);
- }else if( ALWAYS(flags&WHERE_TOP_LIMIT) ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s (rowid<?)", zMsg);
+ zRange = "(rowid>?)";
+ }else{
+ assert( flags&WHERE_TOP_LIMIT);
+ zRange = "(rowid<?)";
}
+ sqlite3StrAccumAppendAll(&str, " USING INTEGER PRIMARY KEY ");
+ sqlite3StrAccumAppendAll(&str, zRange);
}
#ifndef SQLITE_OMIT_VIRTUALTABLE
else if( (flags & WHERE_VIRTUALTABLE)!=0 ){
- zMsg = sqlite3MAppendf(db, zMsg, "%s VIRTUAL TABLE INDEX %d:%s", zMsg,
+ sqlite3XPrintf(&str, 0, " VIRTUAL TABLE INDEX %d:%s",
pLoop->u.vtab.idxNum, pLoop->u.vtab.idxStr);
}
#endif
- zMsg = sqlite3MAppendf(db, zMsg, "%s", zMsg);
- sqlite3VdbeAddOp4(v, OP_Explain, iId, iLevel, iFrom, zMsg, P4_DYNAMIC);
+#ifdef SQLITE_EXPLAIN_ESTIMATED_ROWS
+ if( pLoop->nOut>=10 ){
+ sqlite3XPrintf(&str, 0, " (~%llu rows)", sqlite3LogEstToInt(pLoop->nOut));
+ }else{
+ sqlite3StrAccumAppend(&str, " (~1 row)", 9);
+ }
+#endif
+ zMsg = sqlite3StrAccumFinish(&str);
+ ret = sqlite3VdbeAddOp4(v, OP_Explain, iId, iLevel, iFrom, zMsg,P4_DYNAMIC);
}
+ return ret;
}
#else
-# define explainOneScan(u,v,w,x,y,z)
+# define explainOneScan(u,v,w,x,y,z) 0
#endif /* SQLITE_OMIT_EXPLAIN */
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+/*
+** Configure the VM passed as the first argument with an
+** sqlite3_stmt_scanstatus() entry corresponding to the scan used to
+** implement level pLvl. Argument pSrclist is a pointer to the FROM
+** clause that the scan reads data from.
+**
+** If argument addrExplain is not 0, it must be the address of an
+** OP_Explain instruction that describes the same loop.
+*/
+static void addScanStatus(
+ Vdbe *v, /* Vdbe to add scanstatus entry to */
+ SrcList *pSrclist, /* FROM clause pLvl reads data from */
+ WhereLevel *pLvl, /* Level to add scanstatus() entry for */
+ int addrExplain /* Address of OP_Explain (or 0) */
+){
+ const char *zObj = 0;
+ WhereLoop *pLoop = pLvl->pWLoop;
+ if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 && pLoop->u.btree.pIndex!=0 ){
+ zObj = pLoop->u.btree.pIndex->zName;
+ }else{
+ zObj = pSrclist->a[pLvl->iFrom].zName;
+ }
+ sqlite3VdbeScanStatus(
+ v, addrExplain, pLvl->addrBody, pLvl->addrVisit, pLoop->nOut, zObj
+ );
+}
+#else
+# define addScanStatus(a, b, c, d) ((void)d)
+#endif
+
+
/*
** Generate code for the start of the iLevel-th loop in the WHERE clause
@@ -114071,7 +118204,7 @@ static Bitmask codeOneLoopStart(
pIdx = pLoop->u.btree.pIndex;
iIdxCur = pLevel->iIdxCur;
- assert( nEq>=pLoop->u.btree.nSkip );
+ assert( nEq>=pLoop->nSkip );
/* If this loop satisfies a sort order (pOrderBy) request that
** was passed to this function to implement a "SELECT min(x) ..."
@@ -114088,7 +118221,7 @@ static Bitmask codeOneLoopStart(
&& pWInfo->nOBSat>0
&& (pIdx->nKeyCol>nEq)
){
- assert( pLoop->u.btree.nSkip==0 );
+ assert( pLoop->nSkip==0 );
bSeekPastNull = 1;
nExtraReg = 1;
}
@@ -114305,7 +118438,7 @@ static Bitmask codeOneLoopStart(
** B: <after the loop>
**
** Added 2014-05-26: If the table is a WITHOUT ROWID table, then
- ** use an ephermeral index instead of a RowSet to record the primary
+ ** use an ephemeral index instead of a RowSet to record the primary
** keys of the rows we have already seen.
**
*/
@@ -114356,7 +118489,7 @@ static Bitmask codeOneLoopStart(
}
/* Initialize the rowset register to contain NULL. An SQL NULL is
- ** equivalent to an empty rowset. Or, create an ephermeral index
+ ** equivalent to an empty rowset. Or, create an ephemeral index
** capable of holding primary keys in the case of a WITHOUT ROWID.
**
** Also initialize regReturn to contain the address of the instruction
@@ -114401,10 +118534,9 @@ static Bitmask codeOneLoopStart(
Expr *pExpr = pWC->a[iTerm].pExpr;
if( &pWC->a[iTerm] == pTerm ) continue;
if( ExprHasProperty(pExpr, EP_FromJoin) ) continue;
- testcase( pWC->a[iTerm].wtFlags & TERM_ORINFO );
- testcase( pWC->a[iTerm].wtFlags & TERM_VIRTUAL );
- if( pWC->a[iTerm].wtFlags & (TERM_ORINFO|TERM_VIRTUAL) ) continue;
+ if( (pWC->a[iTerm].wtFlags & TERM_VIRTUAL)!=0 ) continue;
if( (pWC->a[iTerm].eOperator & WO_ALL)==0 ) continue;
+ testcase( pWC->a[iTerm].wtFlags & TERM_ORINFO );
pExpr = sqlite3ExprDup(db, pExpr, 0);
pAndExpr = sqlite3ExprAnd(db, pAndExpr, pExpr);
}
@@ -114417,8 +118549,9 @@ static Bitmask codeOneLoopStart(
** eliminating duplicates from other WHERE clauses, the action for each
** sub-WHERE clause is to to invoke the main loop body as a subroutine.
*/
- wctrlFlags = WHERE_OMIT_OPEN_CLOSE | WHERE_AND_ONLY |
- WHERE_FORCE_TABLE | WHERE_ONETABLE_ONLY;
+ wctrlFlags = WHERE_OMIT_OPEN_CLOSE
+ | WHERE_FORCE_TABLE
+ | WHERE_ONETABLE_ONLY;
for(ii=0; ii<pOrWc->nTerm; ii++){
WhereTerm *pOrTerm = &pOrWc->a[ii];
if( pOrTerm->leftCursor==iCur || (pOrTerm->eOperator & WO_AND)!=0 ){
@@ -114430,14 +118563,17 @@ static Bitmask codeOneLoopStart(
pOrExpr = pAndExpr;
}
/* Loop through table entries that match term pOrTerm. */
+ WHERETRACE(0xffff, ("Subplan for OR-clause:\n"));
pSubWInfo = sqlite3WhereBegin(pParse, pOrTab, pOrExpr, 0, 0,
wctrlFlags, iCovCur);
assert( pSubWInfo || pParse->nErr || db->mallocFailed );
if( pSubWInfo ){
WhereLoop *pSubLoop;
- explainOneScan(
+ int addrExplain = explainOneScan(
pParse, pOrTab, &pSubWInfo->a[0], iLevel, pLevel->iFrom, 0
);
+ addScanStatus(v, pOrTab, &pSubWInfo->a[0], addrExplain);
+
/* This is the sub-WHERE clause body. First skip over
** duplicate rows from prior sub-WHERE clauses, and record the
** rowid (or PRIMARY KEY) for the current row so that the same
@@ -114568,6 +118704,10 @@ static Bitmask codeOneLoopStart(
}
}
+#ifdef SQLITE_ENABLE_STMT_SCANSTATUS
+ pLevel->addrVisit = sqlite3VdbeCurrentAddr(v);
+#endif
+
/* Insert code to test every subexpression that can be completely
** computed using the current set of tables.
*/
@@ -114649,21 +118789,26 @@ static Bitmask codeOneLoopStart(
return pLevel->notReady;
}
-#if defined(WHERETRACE_ENABLED) && defined(SQLITE_ENABLE_TREE_EXPLAIN)
+#ifdef WHERETRACE_ENABLED
/*
-** Generate "Explanation" text for a WhereTerm.
+** Print the content of a WhereTerm object
*/
-static void whereExplainTerm(Vdbe *v, WhereTerm *pTerm){
- char zType[4];
- memcpy(zType, "...", 4);
- if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
- if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
- if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
- sqlite3ExplainPrintf(v, "%s ", zType);
- sqlite3ExplainExpr(v, pTerm->pExpr);
+static void whereTermPrint(WhereTerm *pTerm, int iTerm){
+ if( pTerm==0 ){
+ sqlite3DebugPrintf("TERM-%-3d NULL\n", iTerm);
+ }else{
+ char zType[4];
+ memcpy(zType, "...", 4);
+ if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V';
+ if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E';
+ if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L';
+ sqlite3DebugPrintf("TERM-%-3d %p %s cursor=%-3d prob=%-3d op=0x%03x\n",
+ iTerm, pTerm, zType, pTerm->leftCursor, pTerm->truthProb,
+ pTerm->eOperator);
+ sqlite3TreeViewExpr(0, pTerm->pExpr, 0);
+ }
}
-#endif /* WHERETRACE_ENABLED && SQLITE_ENABLE_TREE_EXPLAIN */
-
+#endif
#ifdef WHERETRACE_ENABLED
/*
@@ -114679,8 +118824,8 @@ static void whereLoopPrint(WhereLoop *p, WhereClause *pWC){
sqlite3DebugPrintf(" %12s",
pItem->zAlias ? pItem->zAlias : pTab->zName);
if( (p->wsFlags & WHERE_VIRTUALTABLE)==0 ){
- const char *zName;
- if( p->u.btree.pIndex && (zName = p->u.btree.pIndex->zName)!=0 ){
+ const char *zName;
+ if( p->u.btree.pIndex && (zName = p->u.btree.pIndex->zName)!=0 ){
if( strncmp(zName, "sqlite_autoindex_", 17)==0 ){
int i = sqlite3Strlen30(zName) - 1;
while( zName[i]!='_' ) i--;
@@ -114701,29 +118846,18 @@ static void whereLoopPrint(WhereLoop *p, WhereClause *pWC){
sqlite3DebugPrintf(" %-19s", z);
sqlite3_free(z);
}
- sqlite3DebugPrintf(" f %05x N %d", p->wsFlags, p->nLTerm);
+ if( p->wsFlags & WHERE_SKIPSCAN ){
+ sqlite3DebugPrintf(" f %05x %d-%d", p->wsFlags, p->nLTerm,p->nSkip);
+ }else{
+ sqlite3DebugPrintf(" f %05x N %d", p->wsFlags, p->nLTerm);
+ }
sqlite3DebugPrintf(" cost %d,%d,%d\n", p->rSetup, p->rRun, p->nOut);
-#ifdef SQLITE_ENABLE_TREE_EXPLAIN
- /* If the 0x100 bit of wheretracing is set, then show all of the constraint
- ** expressions in the WhereLoop.aLTerm[] array.
- */
- if( p->nLTerm && (sqlite3WhereTrace & 0x100)!=0 ){ /* WHERETRACE 0x100 */
+ if( p->nLTerm && (sqlite3WhereTrace & 0x100)!=0 ){
int i;
- Vdbe *v = pWInfo->pParse->pVdbe;
- sqlite3ExplainBegin(v);
for(i=0; i<p->nLTerm; i++){
- WhereTerm *pTerm = p->aLTerm[i];
- if( pTerm==0 ) continue;
- sqlite3ExplainPrintf(v, " (%d) #%-2d ", i+1, (int)(pTerm-pWC->a));
- sqlite3ExplainPush(v);
- whereExplainTerm(v, pTerm);
- sqlite3ExplainPop(v);
- sqlite3ExplainNL(v);
+ whereTermPrint(p->aLTerm[i], i);
}
- sqlite3ExplainFinish(v);
- sqlite3DebugPrintf("%s", sqlite3VdbeExplanation(v));
}
-#endif
}
#endif
@@ -114749,7 +118883,6 @@ static void whereLoopClearUnion(sqlite3 *db, WhereLoop *p){
p->u.vtab.idxStr = 0;
}else if( (p->wsFlags & WHERE_AUTO_INDEX)!=0 && p->u.btree.pIndex!=0 ){
sqlite3DbFree(db, p->u.btree.pIndex->zColAff);
- sqlite3KeyInfoUnref(p->u.btree.pIndex->pKeyInfo);
sqlite3DbFree(db, p->u.btree.pIndex);
p->u.btree.pIndex = 0;
}
@@ -114824,10 +118957,11 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
}
/*
-** Return TRUE if both of the following are true:
+** Return TRUE if all of the following are true:
**
** (1) X has the same or lower cost that Y
** (2) X is a proper subset of Y
+** (3) X skips at least as many columns as Y
**
** By "proper subset" we mean that X uses fewer WHERE clause terms
** than Y and that every WHERE clause term used by X is also used
@@ -114835,19 +118969,25 @@ static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){
**
** If X is a proper subset of Y then Y is a better choice and ought
** to have a lower cost. This routine returns TRUE when that cost
-** relationship is inverted and needs to be adjusted.
+** relationship is inverted and needs to be adjusted. The third rule
+** was added because if X uses skip-scan less than Y it still might
+** deserve a lower cost even if it is a proper subset of Y.
*/
static int whereLoopCheaperProperSubset(
const WhereLoop *pX, /* First WhereLoop to compare */
const WhereLoop *pY /* Compare against this WhereLoop */
){
int i, j;
- if( pX->nLTerm >= pY->nLTerm ) return 0; /* X is not a subset of Y */
+ if( pX->nLTerm-pX->nSkip >= pY->nLTerm-pY->nSkip ){
+ return 0; /* X is not a subset of Y */
+ }
+ if( pY->nSkip > pX->nSkip ) return 0;
if( pX->rRun >= pY->rRun ){
if( pX->rRun > pY->rRun ) return 0; /* X costs more than Y */
if( pX->nOut > pY->nOut ) return 0; /* X costs more than Y */
}
for(i=pX->nLTerm-1; i>=0; i--){
+ if( pX->aLTerm[i]==0 ) continue;
for(j=pY->nLTerm-1; j>=0; j--){
if( pY->aLTerm[j]==pX->aLTerm[i] ) break;
}
@@ -114869,33 +119009,24 @@ static int whereLoopCheaperProperSubset(
** To say "WhereLoop X is a proper subset of Y" means that X uses fewer
** WHERE clause terms than Y and that every WHERE clause term used by X is
** also used by Y.
-**
-** This adjustment is omitted for SKIPSCAN loops. In a SKIPSCAN loop, the
-** WhereLoop.nLTerm field is not an accurate measure of the number of WHERE
-** clause terms covered, since some of the first nLTerm entries in aLTerm[]
-** will be NULL (because they are skipped). That makes it more difficult
-** to compare the loops. We could add extra code to do the comparison, and
-** perhaps we will someday. But SKIPSCAN is sufficiently uncommon, and this
-** adjustment is sufficient minor, that it is very difficult to construct
-** a test case where the extra code would improve the query plan. Better
-** to avoid the added complexity and just omit cost adjustments to SKIPSCAN
-** loops.
*/
static void whereLoopAdjustCost(const WhereLoop *p, WhereLoop *pTemplate){
if( (pTemplate->wsFlags & WHERE_INDEXED)==0 ) return;
- if( (pTemplate->wsFlags & WHERE_SKIPSCAN)!=0 ) return;
for(; p; p=p->pNextLoop){
if( p->iTab!=pTemplate->iTab ) continue;
if( (p->wsFlags & WHERE_INDEXED)==0 ) continue;
- if( (p->wsFlags & WHERE_SKIPSCAN)!=0 ) continue;
if( whereLoopCheaperProperSubset(p, pTemplate) ){
/* Adjust pTemplate cost downward so that it is cheaper than its
- ** subset p */
+ ** subset p. */
+ WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
+ pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut-1));
pTemplate->rRun = p->rRun;
pTemplate->nOut = p->nOut - 1;
}else if( whereLoopCheaperProperSubset(pTemplate, p) ){
/* Adjust pTemplate cost upward so that it is costlier than p since
** pTemplate is a proper subset of p */
+ WHERETRACE(0x80,("subset cost adjustment %d,%d to %d,%d\n",
+ pTemplate->rRun, pTemplate->nOut, p->rRun, p->nOut+1));
pTemplate->rRun = p->rRun;
pTemplate->nOut = p->nOut + 1;
}
@@ -114940,8 +119071,9 @@ static WhereLoop **whereLoopFindLesser(
/* Any loop using an appliation-defined index (or PRIMARY KEY or
** UNIQUE constraint) with one or more == constraints is better
- ** than an automatic index. */
+ ** than an automatic index. Unless it is a skip-scan. */
if( (p->wsFlags & WHERE_AUTO_INDEX)!=0
+ && (pTemplate->nSkip)==0
&& (pTemplate->wsFlags & WHERE_INDEXED)!=0
&& (pTemplate->wsFlags & WHERE_COLUMN_EQ)!=0
&& (p->prereq & pTemplate->prereq)==pTemplate->prereq
@@ -115036,7 +119168,7 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
** than pTemplate, so just ignore pTemplate */
#if WHERETRACE_ENABLED /* 0x8 */
if( sqlite3WhereTrace & 0x8 ){
- sqlite3DebugPrintf("ins-noop: ");
+ sqlite3DebugPrintf(" skip: ");
whereLoopPrint(pTemplate, pBuilder->pWC);
}
#endif
@@ -115052,10 +119184,10 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
#if WHERETRACE_ENABLED /* 0x8 */
if( sqlite3WhereTrace & 0x8 ){
if( p!=0 ){
- sqlite3DebugPrintf("ins-del: ");
+ sqlite3DebugPrintf("replace: ");
whereLoopPrint(p, pBuilder->pWC);
}
- sqlite3DebugPrintf("ins-new: ");
+ sqlite3DebugPrintf(" add: ");
whereLoopPrint(pTemplate, pBuilder->pWC);
}
#endif
@@ -115079,7 +119211,7 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
*ppTail = pToDel->pNextLoop;
#if WHERETRACE_ENABLED /* 0x8 */
if( sqlite3WhereTrace & 0x8 ){
- sqlite3DebugPrintf("ins-del: ");
+ sqlite3DebugPrintf(" delete: ");
whereLoopPrint(pToDel, pBuilder->pWC);
}
#endif
@@ -115100,19 +119232,42 @@ static int whereLoopInsert(WhereLoopBuilder *pBuilder, WhereLoop *pTemplate){
** Adjust the WhereLoop.nOut value downward to account for terms of the
** WHERE clause that reference the loop but which are not used by an
** index.
-**
-** In the current implementation, the first extra WHERE clause term reduces
-** the number of output rows by a factor of 10 and each additional term
-** reduces the number of output rows by sqrt(2).
-*/
-static void whereLoopOutputAdjust(WhereClause *pWC, WhereLoop *pLoop){
+*
+** For every WHERE clause term that is not used by the index
+** and which has a truth probability assigned by one of the likelihood(),
+** likely(), or unlikely() SQL functions, reduce the estimated number
+** of output rows by the probability specified.
+**
+** TUNING: For every WHERE clause term that is not used by the index
+** and which does not have an assigned truth probability, heuristics
+** described below are used to try to estimate the truth probability.
+** TODO --> Perhaps this is something that could be improved by better
+** table statistics.
+**
+** Heuristic 1: Estimate the truth probability as 93.75%. The 93.75%
+** value corresponds to -1 in LogEst notation, so this means decrement
+** the WhereLoop.nOut field for every such WHERE clause term.
+**
+** Heuristic 2: If there exists one or more WHERE clause terms of the
+** form "x==EXPR" and EXPR is not a constant 0 or 1, then make sure the
+** final output row estimate is no greater than 1/4 of the total number
+** of rows in the table. In other words, assume that x==EXPR will filter
+** out at least 3 out of 4 rows. If EXPR is -1 or 0 or 1, then maybe the
+** "x" column is boolean or else -1 or 0 or 1 is a common default value
+** on the "x" column and so in that case only cap the output row estimate
+** at 1/2 instead of 1/4.
+*/
+static void whereLoopOutputAdjust(
+ WhereClause *pWC, /* The WHERE clause */
+ WhereLoop *pLoop, /* The loop to adjust downward */
+ LogEst nRow /* Number of rows in the entire table */
+){
WhereTerm *pTerm, *pX;
Bitmask notAllowed = ~(pLoop->prereq|pLoop->maskSelf);
- int i, j;
+ int i, j, k;
+ LogEst iReduce = 0; /* pLoop->nOut should not exceed nRow-iReduce */
- if( !OptimizationEnabled(pWC->pWInfo->pParse->db, SQLITE_AdjustOutEst) ){
- return;
- }
+ assert( (pLoop->wsFlags & WHERE_AUTO_INDEX)==0 );
for(i=pWC->nTerm, pTerm=pWC->a; i>0; i--, pTerm++){
if( (pTerm->wtFlags & TERM_VIRTUAL)!=0 ) break;
if( (pTerm->prereqAll & pLoop->maskSelf)==0 ) continue;
@@ -115124,9 +119279,27 @@ static void whereLoopOutputAdjust(WhereClause *pWC, WhereLoop *pLoop){
if( pX->iParent>=0 && (&pWC->a[pX->iParent])==pTerm ) break;
}
if( j<0 ){
- pLoop->nOut += (pTerm->truthProb<=0 ? pTerm->truthProb : -1);
+ if( pTerm->truthProb<=0 ){
+ /* If a truth probability is specified using the likelihood() hints,
+ ** then use the probability provided by the application. */
+ pLoop->nOut += pTerm->truthProb;
+ }else{
+ /* In the absence of explicit truth probabilities, use heuristics to
+ ** guess a reasonable truth probability. */
+ pLoop->nOut--;
+ if( pTerm->eOperator&WO_EQ ){
+ Expr *pRight = pTerm->pExpr->pRight;
+ if( sqlite3ExprIsInteger(pRight, &k) && k>=(-1) && k<=1 ){
+ k = 10;
+ }else{
+ k = 20;
+ }
+ if( iReduce<k ) iReduce = k;
+ }
+ }
}
}
+ if( pLoop->nOut > nRow-iReduce ) pLoop->nOut = nRow - iReduce;
}
/*
@@ -115167,11 +119340,12 @@ static int whereLoopAddBtreeIndex(
Bitmask saved_prereq; /* Original value of pNew->prereq */
u16 saved_nLTerm; /* Original value of pNew->nLTerm */
u16 saved_nEq; /* Original value of pNew->u.btree.nEq */
- u16 saved_nSkip; /* Original value of pNew->u.btree.nSkip */
+ u16 saved_nSkip; /* Original value of pNew->nSkip */
u32 saved_wsFlags; /* Original value of pNew->wsFlags */
LogEst saved_nOut; /* Original value of pNew->nOut */
int iCol; /* Index of the column in the table */
int rc = SQLITE_OK; /* Return code */
+ LogEst rSize; /* Number of rows in the table */
LogEst rLogSize; /* Logarithm of table size */
WhereTerm *pTop = 0, *pBtm = 0; /* Top and bottom range constraints */
@@ -115195,41 +119369,14 @@ static int whereLoopAddBtreeIndex(
pTerm = whereScanInit(&scan, pBuilder->pWC, pSrc->iCursor, iCol,
opMask, pProbe);
saved_nEq = pNew->u.btree.nEq;
- saved_nSkip = pNew->u.btree.nSkip;
+ saved_nSkip = pNew->nSkip;
saved_nLTerm = pNew->nLTerm;
saved_wsFlags = pNew->wsFlags;
saved_prereq = pNew->prereq;
saved_nOut = pNew->nOut;
pNew->rSetup = 0;
- rLogSize = estLog(pProbe->aiRowLogEst[0]);
-
- /* Consider using a skip-scan if there are no WHERE clause constraints
- ** available for the left-most terms of the index, and if the average
- ** number of repeats in the left-most terms is at least 18.
- **
- ** The magic number 18 is selected on the basis that scanning 17 rows
- ** is almost always quicker than an index seek (even though if the index
- ** contains fewer than 2^17 rows we assume otherwise in other parts of
- ** the code). And, even if it is not, it should not be too much slower.
- ** On the other hand, the extra seeks could end up being significantly
- ** more expensive. */
- assert( 42==sqlite3LogEst(18) );
- if( pTerm==0
- && saved_nEq==saved_nSkip
- && saved_nEq+1<pProbe->nKeyCol
- && pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
- && (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
- ){
- LogEst nIter;
- pNew->u.btree.nEq++;
- pNew->u.btree.nSkip++;
- pNew->aLTerm[pNew->nLTerm++] = 0;
- pNew->wsFlags |= WHERE_SKIPSCAN;
- nIter = pProbe->aiRowLogEst[saved_nEq] - pProbe->aiRowLogEst[saved_nEq+1];
- pNew->nOut -= nIter;
- whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter + nInMul);
- pNew->nOut = saved_nOut;
- }
+ rSize = pProbe->aiRowLogEst[0];
+ rLogSize = estLog(rSize);
for(; rc==SQLITE_OK && pTerm!=0; pTerm = whereScanNext(&scan)){
u16 eOp = pTerm->eOperator; /* Shorthand for pTerm->eOperator */
LogEst rCostIdx;
@@ -115324,7 +119471,6 @@ static int whereLoopAddBtreeIndex(
if( nInMul==0
&& pProbe->nSample
&& pNew->u.btree.nEq<=pProbe->nSampleCol
- && OptimizationEnabled(db, SQLITE_Stat3)
&& ((eOp & WO_IN)==0 || !ExprHasProperty(pTerm->pExpr, EP_xIsSelect))
){
Expr *pExpr = pTerm->pExpr;
@@ -115371,7 +119517,7 @@ static int whereLoopAddBtreeIndex(
nOutUnadjusted = pNew->nOut;
pNew->rRun += nInMul + nIn;
pNew->nOut += nInMul + nIn;
- whereLoopOutputAdjust(pBuilder->pWC, pNew);
+ whereLoopOutputAdjust(pBuilder->pWC, pNew, rSize);
rc = whereLoopInsert(pBuilder, pNew);
if( pNew->wsFlags & WHERE_COLUMN_RANGE ){
@@ -115392,10 +119538,45 @@ static int whereLoopAddBtreeIndex(
}
pNew->prereq = saved_prereq;
pNew->u.btree.nEq = saved_nEq;
- pNew->u.btree.nSkip = saved_nSkip;
+ pNew->nSkip = saved_nSkip;
pNew->wsFlags = saved_wsFlags;
pNew->nOut = saved_nOut;
pNew->nLTerm = saved_nLTerm;
+
+ /* Consider using a skip-scan if there are no WHERE clause constraints
+ ** available for the left-most terms of the index, and if the average
+ ** number of repeats in the left-most terms is at least 18.
+ **
+ ** The magic number 18 is selected on the basis that scanning 17 rows
+ ** is almost always quicker than an index seek (even though if the index
+ ** contains fewer than 2^17 rows we assume otherwise in other parts of
+ ** the code). And, even if it is not, it should not be too much slower.
+ ** On the other hand, the extra seeks could end up being significantly
+ ** more expensive. */
+ assert( 42==sqlite3LogEst(18) );
+ if( saved_nEq==saved_nSkip
+ && saved_nEq+1<pProbe->nKeyCol
+ && pProbe->noSkipScan==0
+ && pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
+ && (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
+ ){
+ LogEst nIter;
+ pNew->u.btree.nEq++;
+ pNew->nSkip++;
+ pNew->aLTerm[pNew->nLTerm++] = 0;
+ pNew->wsFlags |= WHERE_SKIPSCAN;
+ nIter = pProbe->aiRowLogEst[saved_nEq] - pProbe->aiRowLogEst[saved_nEq+1];
+ pNew->nOut -= nIter;
+ /* TUNING: Because uncertainties in the estimates for skip-scan queries,
+ ** add a 1.375 fudge factor to make skip-scan slightly less likely. */
+ nIter += 5;
+ whereLoopAddBtreeIndex(pBuilder, pSrc, pProbe, nIter + nInMul);
+ pNew->nOut = saved_nOut;
+ pNew->u.btree.nEq = saved_nEq;
+ pNew->nSkip = saved_nSkip;
+ pNew->wsFlags = saved_wsFlags;
+ }
+
return rc;
}
@@ -115421,6 +119602,7 @@ static int indexMightHelpWithOrderBy(
Expr *pExpr = sqlite3ExprSkipCollate(pOB->a[ii].pExpr);
if( pExpr->op!=TK_COLUMN ) return 0;
if( pExpr->iTable==iCursor ){
+ if( pExpr->iColumn<0 ) return 1;
for(jj=0; jj<pIndex->nKeyCol; jj++){
if( pExpr->iColumn==pIndex->aiColumn[jj] ) return 1;
}
@@ -115573,18 +119755,26 @@ static int whereLoopAddBtree(
if( pTerm->prereqRight & pNew->maskSelf ) continue;
if( termCanDriveIndex(pTerm, pSrc, 0) ){
pNew->u.btree.nEq = 1;
- pNew->u.btree.nSkip = 0;
+ pNew->nSkip = 0;
pNew->u.btree.pIndex = 0;
pNew->nLTerm = 1;
pNew->aLTerm[0] = pTerm;
/* TUNING: One-time cost for computing the automatic index is
- ** approximately 7*N*log2(N) where N is the number of rows in
- ** the table being indexed. */
- pNew->rSetup = rLogSize + rSize + 28; assert( 28==sqlite3LogEst(7) );
+ ** estimated to be X*N*log2(N) where N is the number of rows in
+ ** the table being indexed and where X is 7 (LogEst=28) for normal
+ ** tables or 1.375 (LogEst=4) for views and subqueries. The value
+ ** of X is smaller for views and subqueries so that the query planner
+ ** will be more aggressive about generating automatic indexes for
+ ** those objects, since there is no opportunity to add schema
+ ** indexes on subqueries and views. */
+ pNew->rSetup = rLogSize + rSize + 4;
+ if( pTab->pSelect==0 && (pTab->tabFlags & TF_Ephemeral)==0 ){
+ pNew->rSetup += 24;
+ }
ApplyCostMultiplier(pNew->rSetup, pTab->costMult);
/* TUNING: Each index lookup yields 20 rows in the table. This
** is more than the usual guess of 10 rows, since we have no way
- ** of knowning how selective the index will ultimately be. It would
+ ** of knowing how selective the index will ultimately be. It would
** not be unreasonable to make this value much larger. */
pNew->nOut = 43; assert( 43==sqlite3LogEst(20) );
pNew->rRun = sqlite3LogEstAdd(rLogSize,pNew->nOut);
@@ -115600,12 +119790,13 @@ static int whereLoopAddBtree(
*/
for(; rc==SQLITE_OK && pProbe; pProbe=pProbe->pNext, iSortIdx++){
if( pProbe->pPartIdxWhere!=0
- && !whereUsablePartialIndex(pNew->iTab, pWC, pProbe->pPartIdxWhere) ){
+ && !whereUsablePartialIndex(pSrc->iCursor, pWC, pProbe->pPartIdxWhere) ){
+ testcase( pNew->iTab!=pSrc->iCursor ); /* See ticket [98d973b8f5] */
continue; /* Partial index inappropriate for this query */
}
rSize = pProbe->aiRowLogEst[0];
pNew->u.btree.nEq = 0;
- pNew->u.btree.nSkip = 0;
+ pNew->nSkip = 0;
pNew->nLTerm = 0;
pNew->iSortIdx = 0;
pNew->rSetup = 0;
@@ -115624,7 +119815,7 @@ static int whereLoopAddBtree(
/* TUNING: Cost of full table scan is (N*3.0). */
pNew->rRun = rSize + 16;
ApplyCostMultiplier(pNew->rRun, pTab->costMult);
- whereLoopOutputAdjust(pWC, pNew);
+ whereLoopOutputAdjust(pWC, pNew, rSize);
rc = whereLoopInsert(pBuilder, pNew);
pNew->nOut = rSize;
if( rc ) break;
@@ -115660,7 +119851,7 @@ static int whereLoopAddBtree(
pNew->rRun = sqlite3LogEstAdd(pNew->rRun, rSize+16);
}
ApplyCostMultiplier(pNew->rRun, pTab->costMult);
- whereLoopOutputAdjust(pWC, pNew);
+ whereLoopOutputAdjust(pWC, pNew, rSize);
rc = whereLoopInsert(pBuilder, pNew);
pNew->nOut = rSize;
if( rc ) break;
@@ -115867,7 +120058,6 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){
struct SrcList_item *pItem;
pWC = pBuilder->pWC;
- if( pWInfo->wctrlFlags & WHERE_AND_ONLY ) return SQLITE_OK;
pWCEnd = pWC->a + pWC->nTerm;
pNew = pBuilder->pNew;
memset(&sSum, 0, sizeof(sSum));
@@ -115888,6 +120078,7 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){
sSubBuild.pOrderBy = 0;
sSubBuild.pOrSet = &sCur;
+ WHERETRACE(0x200, ("Begin processing OR-clause %p\n", pTerm));
for(pOrTerm=pOrWC->a; pOrTerm<pOrWCEnd; pOrTerm++){
if( (pOrTerm->eOperator & WO_AND)!=0 ){
sSubBuild.pWC = &pOrTerm->u.pAndInfo->wc;
@@ -115902,6 +120093,15 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){
continue;
}
sCur.n = 0;
+#ifdef WHERETRACE_ENABLED
+ WHERETRACE(0x200, ("OR-term %d of %p has %d subterms:\n",
+ (int)(pOrTerm-pOrWC->a), pTerm, sSubBuild.pWC->nTerm));
+ if( sqlite3WhereTrace & 0x400 ){
+ for(i=0; i<sSubBuild.pWC->nTerm; i++){
+ whereTermPrint(&sSubBuild.pWC->a[i], i);
+ }
+ }
+#endif
#ifndef SQLITE_OMIT_VIRTUALTABLE
if( IsVirtual(pItem->pTab) ){
rc = whereLoopAddVirtual(&sSubBuild, mExtra);
@@ -115910,6 +120110,9 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){
{
rc = whereLoopAddBtree(&sSubBuild, mExtra);
}
+ if( rc==SQLITE_OK ){
+ rc = whereLoopAddOr(&sSubBuild, mExtra);
+ }
assert( rc==SQLITE_OK || sCur.n==0 );
if( sCur.n==0 ){
sSum.n = 0;
@@ -115954,6 +120157,7 @@ static int whereLoopAddOr(WhereLoopBuilder *pBuilder, Bitmask mExtra){
pNew->prereq = sSum.a[i].prereq;
rc = whereLoopInsert(pBuilder, pNew);
}
+ WHERETRACE(0x200, ("End processing OR-clause %p\n", pTerm));
}
}
return rc;
@@ -116013,7 +120217,7 @@ static int whereLoopAddAll(WhereLoopBuilder *pBuilder){
** strict. With GROUP BY and DISTINCT the only requirement is that
** equivalent rows appear immediately adjacent to one another. GROUP BY
** and DISTINCT do not require rows to appear in any particular order as long
-** as equivelent rows are grouped together. Thus for GROUP BY and DISTINCT
+** as equivalent rows are grouped together. Thus for GROUP BY and DISTINCT
** the pOrderBy terms can be matched in any order. With ORDER BY, the
** pOrderBy terms must be matched in strict left-to-right order.
*/
@@ -116142,7 +120346,7 @@ static i8 wherePathSatisfiesOrderBy(
/* Skip over == and IS NULL terms */
if( j<pLoop->u.btree.nEq
- && pLoop->u.btree.nSkip==0
+ && pLoop->nSkip==0
&& ((i = pLoop->aLTerm[j]->eOperator) & (WO_EQ|WO_ISNULL))!=0
){
if( i & WO_ISNULL ){
@@ -116197,7 +120401,7 @@ static i8 wherePathSatisfiesOrderBy(
isMatch = 1;
break;
}
- if( isMatch && (pWInfo->wctrlFlags & WHERE_GROUPBY)==0 ){
+ if( isMatch && (wctrlFlags & WHERE_GROUPBY)==0 ){
/* Make sure the sort order is compatible in an ORDER BY clause.
** Sort order is irrelevant for a GROUP BY clause. */
if( revSet ){
@@ -116596,7 +120800,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
}
#ifdef WHERETRACE_ENABLED /* >=2 */
- if( sqlite3WhereTrace>=2 ){
+ if( sqlite3WhereTrace & 0x02 ){
sqlite3DebugPrintf("---- after round %d ----\n", iLoop);
for(ii=0, pTo=aTo; ii<nTo; ii++, pTo++){
sqlite3DebugPrintf(" %s cost=%-3d nrow=%-3d order=%c",
@@ -116662,12 +120866,15 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){
if( (pWInfo->wctrlFlags & WHERE_SORTBYGROUP)
&& pWInfo->nOBSat==pWInfo->pOrderBy->nExpr
){
- Bitmask notUsed = 0;
+ Bitmask revMask = 0;
int nOrder = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pOrderBy,
- pFrom, 0, nLoop-1, pFrom->aLoop[nLoop-1], &notUsed
+ pFrom, 0, nLoop-1, pFrom->aLoop[nLoop-1], &revMask
);
assert( pWInfo->sorted==0 );
- pWInfo->sorted = (nOrder==pWInfo->pOrderBy->nExpr);
+ if( nOrder==pWInfo->pOrderBy->nExpr ){
+ pWInfo->sorted = 1;
+ pWInfo->revMask = revMask;
+ }
}
}
@@ -116712,7 +120919,7 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
pWC = &pWInfo->sWC;
pLoop = pBuilder->pNew;
pLoop->wsFlags = 0;
- pLoop->u.btree.nSkip = 0;
+ pLoop->nSkip = 0;
pTerm = findTerm(pWC, iCur, -1, 0, WO_EQ, 0);
if( pTerm ){
pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_IPK|WHERE_ONEROW;
@@ -116724,7 +120931,6 @@ static int whereShortCut(WhereLoopBuilder *pBuilder){
}else{
for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
assert( pLoop->aLTermSpace==pLoop->aLTerm );
- assert( ArraySize(pLoop->aLTermSpace)==4 );
if( !IsUniqueIndex(pIdx)
|| pIdx->pPartIdxWhere!=0
|| pIdx->nKeyCol>ArraySize(pLoop->aLTermSpace)
@@ -117020,23 +121226,16 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
/* Construct the WhereLoop objects */
WHERETRACE(0xffff,("*** Optimizer Start ***\n"));
+#if defined(WHERETRACE_ENABLED)
/* Display all terms of the WHERE clause */
-#if defined(WHERETRACE_ENABLED) && defined(SQLITE_ENABLE_TREE_EXPLAIN)
if( sqlite3WhereTrace & 0x100 ){
int i;
- Vdbe *v = pParse->pVdbe;
- sqlite3ExplainBegin(v);
for(i=0; i<sWLB.pWC->nTerm; i++){
- sqlite3ExplainPrintf(v, "#%-2d ", i);
- sqlite3ExplainPush(v);
- whereExplainTerm(v, &sWLB.pWC->a[i]);
- sqlite3ExplainPop(v);
- sqlite3ExplainNL(v);
+ whereTermPrint(&sWLB.pWC->a[i], i);
}
- sqlite3ExplainFinish(v);
- sqlite3DebugPrintf("%s", sqlite3VdbeExplanation(v));
}
#endif
+
if( nTabList!=1 || whereShortCut(&sWLB)==0 ){
rc = whereLoopAddAll(&sWLB);
if( rc ) goto whereBeginError;
@@ -117240,7 +121439,10 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
*/
notReady = ~(Bitmask)0;
for(ii=0; ii<nTabList; ii++){
+ int addrExplain;
+ int wsFlags;
pLevel = &pWInfo->a[ii];
+ wsFlags = pLevel->pWLoop->wsFlags;
#ifndef SQLITE_OMIT_AUTOMATIC_INDEX
if( (pLevel->pWLoop->wsFlags & WHERE_AUTO_INDEX)!=0 ){
constructAutomaticIndex(pParse, &pWInfo->sWC,
@@ -117248,10 +121450,15 @@ SQLITE_PRIVATE WhereInfo *sqlite3WhereBegin(
if( db->mallocFailed ) goto whereBeginError;
}
#endif
- explainOneScan(pParse, pTabList, pLevel, ii, pLevel->iFrom, wctrlFlags);
+ addrExplain = explainOneScan(
+ pParse, pTabList, pLevel, ii, pLevel->iFrom, wctrlFlags
+ );
pLevel->addrBody = sqlite3VdbeCurrentAddr(v);
notReady = codeOneLoopStart(pWInfo, ii, notReady);
pWInfo->iContinue = pLevel->addrCont;
+ if( (wsFlags&WHERE_MULTI_OR)==0 && (wctrlFlags&WHERE_ONETABLE_ONLY)==0 ){
+ addScanStatus(v, pTabList, pLevel, addrExplain);
+ }
}
/* Done. */
@@ -117563,7 +121770,7 @@ struct AttachKey { int type; Token key; };
** unary TK_ISNULL or TK_NOTNULL expression. */
static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){
sqlite3 *db = pParse->db;
- if( db->mallocFailed==0 && pY->op==TK_NULL ){
+ if( pY && pA && pY->op==TK_NULL ){
pA->op = (u8)op;
sqlite3ExprDelete(db, pA->pRight);
pA->pRight = 0;
@@ -118790,9 +122997,9 @@ static void yyGrowStack(yyParser *p){
** A pointer to a parser. This pointer is used in subsequent calls
** to sqlite3Parser and sqlite3ParserFree.
*/
-SQLITE_PRIVATE void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){
+SQLITE_PRIVATE void *sqlite3ParserAlloc(void *(*mallocProc)(u64)){
yyParser *pParser;
- pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
+ pParser = (yyParser*)(*mallocProc)( (u64)sizeof(yyParser) );
if( pParser ){
pParser->yyidx = -1;
#ifdef YYTRACKMAXSTACKDEPTH
@@ -119822,9 +124029,6 @@ static void yy_reduce(
{
SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0};
sqlite3Select(pParse, yymsp[0].minor.yy3, &dest);
- sqlite3ExplainBegin(pParse->pVdbe);
- sqlite3ExplainSelect(pParse->pVdbe, yymsp[0].minor.yy3);
- sqlite3ExplainFinish(pParse->pVdbe);
sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy3);
}
break;
@@ -119835,13 +124039,19 @@ static void yy_reduce(
int cnt = 0, mxSelect;
p->pWith = yymsp[-1].minor.yy59;
if( p->pPrior ){
+ u16 allValues = SF_Values;
pNext = 0;
for(pLoop=p; pLoop; pNext=pLoop, pLoop=pLoop->pPrior, cnt++){
pLoop->pNext = pNext;
pLoop->selFlags |= SF_Compound;
+ allValues &= pLoop->selFlags;
}
- mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT];
- if( mxSelect && cnt>mxSelect ){
+ if( allValues ){
+ p->selFlags |= SF_AllValues;
+ }else if(
+ (mxSelect = pParse->db->aLimit[SQLITE_LIMIT_COMPOUND_SELECT])>0
+ && cnt>mxSelect
+ ){
sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
}
}
@@ -119881,6 +124091,30 @@ static void yy_reduce(
case 118: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */
{
yygotominor.yy3 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor.yy65,yymsp[-4].minor.yy132,yymsp[-3].minor.yy14,yymsp[-2].minor.yy132,yymsp[-1].minor.yy14,yymsp[-7].minor.yy381,yymsp[0].minor.yy476.pLimit,yymsp[0].minor.yy476.pOffset);
+#if SELECTTRACE_ENABLED
+ /* Populate the Select.zSelName[] string that is used to help with
+ ** query planner debugging, to differentiate between multiple Select
+ ** objects in a complex query.
+ **
+ ** If the SELECT keyword is immediately followed by a C-style comment
+ ** then extract the first few alphanumeric characters from within that
+ ** comment to be the zSelName value. Otherwise, the label is #N where
+ ** is an integer that is incremented with each SELECT statement seen.
+ */
+ if( yygotominor.yy3!=0 ){
+ const char *z = yymsp[-8].minor.yy0.z+6;
+ int i;
+ sqlite3_snprintf(sizeof(yygotominor.yy3->zSelName), yygotominor.yy3->zSelName, "#%d",
+ ++pParse->nSelect);
+ while( z[0]==' ' ) z++;
+ if( z[0]=='/' && z[1]=='*' ){
+ z += 2;
+ while( z[0]==' ' ) z++;
+ for(i=0; sqlite3Isalnum(z[i]); i++){}
+ sqlite3_snprintf(sizeof(yygotominor.yy3->zSelName), yygotominor.yy3->zSelName, "%.*s", i, z);
+ }
+ }
+#endif /* SELECTRACE_ENABLED */
}
break;
case 120: /* values ::= VALUES LP nexprlist RP */
@@ -121347,7 +125581,7 @@ SQLITE_PRIVATE int sqlite3KeywordCode(const unsigned char *z, int n){
** end result.
**
** Ticket #1066. the SQL standard does not allow '$' in the
-** middle of identfiers. But many SQL implementations do.
+** middle of identifiers. But many SQL implementations do.
** SQLite will allow '$' in identifiers for compatibility.
** But the feature is undocumented.
*/
@@ -121372,6 +125606,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[] = {
};
#define IdChar(C) (((c=C)>=0x42 && sqlite3IsEbcdicIdChar[c-0x40]))
#endif
+SQLITE_PRIVATE int sqlite3IsIdChar(u8 c){ return IdChar(c); }
/*
@@ -121660,6 +125895,9 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr
int mxSqlLen; /* Max length of an SQL string */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( zSql==0 || pzErrMsg==0 ) return SQLITE_MISUSE_BKPT;
+#endif
mxSqlLen = db->aLimit[SQLITE_LIMIT_SQL_LENGTH];
if( db->nVdbeActive==0 ){
db->u1.isInterrupted = 0;
@@ -121668,7 +125906,7 @@ SQLITE_PRIVATE int sqlite3RunParser(Parse *pParse, const char *zSql, char **pzEr
pParse->zTail = zSql;
i = 0;
assert( pzErrMsg!=0 );
- pEngine = sqlite3ParserAlloc((void*(*)(size_t))sqlite3Malloc);
+ pEngine = sqlite3ParserAlloc(sqlite3Malloc);
if( pEngine==0 ){
db->mallocFailed = 1;
return SQLITE_NOMEM;
@@ -121863,7 +126101,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[];
** a statement.
**
** (4) CREATE The keyword CREATE has been seen at the beginning of a
-** statement, possibly preceeded by EXPLAIN and/or followed by
+** statement, possibly preceded by EXPLAIN and/or followed by
** TEMP or TEMPORARY
**
** (5) TRIGGER We are in the middle of a trigger definition that must be
@@ -121873,7 +126111,7 @@ SQLITE_PRIVATE const char sqlite3IsEbcdicIdChar[];
** the end of a trigger definition.
**
** (7) END We've seen the ";END" of the ";END;" that occurs at the end
-** of a trigger difinition.
+** of a trigger definition.
**
** Transitions between states above are determined by tokens extracted
** from the input. The following tokens are significant:
@@ -121916,7 +126154,7 @@ SQLITE_API int sqlite3_complete(const char *zSql){
};
#else
/* If triggers are not supported by this compile then the statement machine
- ** used to detect the end of a statement is much simplier
+ ** used to detect the end of a statement is much simpler
*/
static const u8 trans[3][3] = {
/* Token: */
@@ -121927,6 +126165,13 @@ SQLITE_API int sqlite3_complete(const char *zSql){
};
#endif /* SQLITE_OMIT_TRIGGER */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( zSql==0 ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
+
while( *zSql ){
switch( *zSql ){
case ';': { /* A semicolon */
@@ -122228,7 +126473,7 @@ SQLITE_API int sqlite3_threadsafe(void){ return SQLITE_THREADSAFE; }
** I/O active are written using this function. These messages
** are intended for debugging activity only.
*/
-SQLITE_PRIVATE void (*sqlite3IoTrace)(const char*, ...) = 0;
+/* not-private */ void (*sqlite3IoTrace)(const char*, ...) = 0;
#endif
/*
@@ -122437,6 +126682,13 @@ SQLITE_API int sqlite3_initialize(void){
** when this routine is invoked, then this routine is a harmless no-op.
*/
SQLITE_API int sqlite3_shutdown(void){
+#ifdef SQLITE_OMIT_WSD
+ int rc = sqlite3_wsd_init(4096, 24);
+ if( rc!=SQLITE_OK ){
+ return rc;
+ }
+#endif
+
if( sqlite3GlobalConfig.isInit ){
#ifdef SQLITE_EXTRA_SHUTDOWN
void SQLITE_EXTRA_SHUTDOWN(void);
@@ -122495,15 +126747,17 @@ SQLITE_API int sqlite3_config(int op, ...){
switch( op ){
/* Mutex configuration options are only available in a threadsafe
- ** compile.
+ ** compile.
*/
-#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0
+#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-54466-46756 */
case SQLITE_CONFIG_SINGLETHREAD: {
/* Disable all mutexing */
sqlite3GlobalConfig.bCoreMutex = 0;
sqlite3GlobalConfig.bFullMutex = 0;
break;
}
+#endif
+#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-20520-54086 */
case SQLITE_CONFIG_MULTITHREAD: {
/* Disable mutexing of database connections */
/* Enable mutexing of core data structures */
@@ -122511,17 +126765,23 @@ SQLITE_API int sqlite3_config(int op, ...){
sqlite3GlobalConfig.bFullMutex = 0;
break;
}
+#endif
+#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-59593-21810 */
case SQLITE_CONFIG_SERIALIZED: {
/* Enable all mutexing */
sqlite3GlobalConfig.bCoreMutex = 1;
sqlite3GlobalConfig.bFullMutex = 1;
break;
}
+#endif
+#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-63666-48755 */
case SQLITE_CONFIG_MUTEX: {
/* Specify an alternative mutex implementation */
sqlite3GlobalConfig.mutex = *va_arg(ap, sqlite3_mutex_methods*);
break;
}
+#endif
+#if defined(SQLITE_THREADSAFE) && SQLITE_THREADSAFE>0 /* IMP: R-14450-37597 */
case SQLITE_CONFIG_GETMUTEX: {
/* Retrieve the current mutex implementation */
*va_arg(ap, sqlite3_mutex_methods*) = sqlite3GlobalConfig.mutex;
@@ -122529,37 +126789,61 @@ SQLITE_API int sqlite3_config(int op, ...){
}
#endif
-
case SQLITE_CONFIG_MALLOC: {
- /* Specify an alternative malloc implementation */
+ /* EVIDENCE-OF: R-55594-21030 The SQLITE_CONFIG_MALLOC option takes a
+ ** single argument which is a pointer to an instance of the
+ ** sqlite3_mem_methods structure. The argument specifies alternative
+ ** low-level memory allocation routines to be used in place of the memory
+ ** allocation routines built into SQLite. */
sqlite3GlobalConfig.m = *va_arg(ap, sqlite3_mem_methods*);
break;
}
case SQLITE_CONFIG_GETMALLOC: {
- /* Retrieve the current malloc() implementation */
+ /* EVIDENCE-OF: R-51213-46414 The SQLITE_CONFIG_GETMALLOC option takes a
+ ** single argument which is a pointer to an instance of the
+ ** sqlite3_mem_methods structure. The sqlite3_mem_methods structure is
+ ** filled with the currently defined memory allocation routines. */
if( sqlite3GlobalConfig.m.xMalloc==0 ) sqlite3MemSetDefault();
*va_arg(ap, sqlite3_mem_methods*) = sqlite3GlobalConfig.m;
break;
}
case SQLITE_CONFIG_MEMSTATUS: {
- /* Enable or disable the malloc status collection */
+ /* EVIDENCE-OF: R-61275-35157 The SQLITE_CONFIG_MEMSTATUS option takes
+ ** single argument of type int, interpreted as a boolean, which enables
+ ** or disables the collection of memory allocation statistics. */
sqlite3GlobalConfig.bMemstat = va_arg(ap, int);
break;
}
case SQLITE_CONFIG_SCRATCH: {
- /* Designate a buffer for scratch memory space */
+ /* EVIDENCE-OF: R-08404-60887 There are three arguments to
+ ** SQLITE_CONFIG_SCRATCH: A pointer an 8-byte aligned memory buffer from
+ ** which the scratch allocations will be drawn, the size of each scratch
+ ** allocation (sz), and the maximum number of scratch allocations (N). */
sqlite3GlobalConfig.pScratch = va_arg(ap, void*);
sqlite3GlobalConfig.szScratch = va_arg(ap, int);
sqlite3GlobalConfig.nScratch = va_arg(ap, int);
break;
}
case SQLITE_CONFIG_PAGECACHE: {
- /* Designate a buffer for page cache memory space */
+ /* EVIDENCE-OF: R-31408-40510 There are three arguments to
+ ** SQLITE_CONFIG_PAGECACHE: A pointer to 8-byte aligned memory, the size
+ ** of each page buffer (sz), and the number of pages (N). */
sqlite3GlobalConfig.pPage = va_arg(ap, void*);
sqlite3GlobalConfig.szPage = va_arg(ap, int);
sqlite3GlobalConfig.nPage = va_arg(ap, int);
break;
}
+ case SQLITE_CONFIG_PCACHE_HDRSZ: {
+ /* EVIDENCE-OF: R-39100-27317 The SQLITE_CONFIG_PCACHE_HDRSZ option takes
+ ** a single parameter which is a pointer to an integer and writes into
+ ** that integer the number of extra bytes per page required for each page
+ ** in SQLITE_CONFIG_PAGECACHE. */
+ *va_arg(ap, int*) =
+ sqlite3HeaderSizeBtree() +
+ sqlite3HeaderSizePcache() +
+ sqlite3HeaderSizePcache1();
+ break;
+ }
case SQLITE_CONFIG_PCACHE: {
/* no-op */
@@ -122572,11 +126856,18 @@ SQLITE_API int sqlite3_config(int op, ...){
}
case SQLITE_CONFIG_PCACHE2: {
- /* Specify an alternative page cache implementation */
+ /* EVIDENCE-OF: R-63325-48378 The SQLITE_CONFIG_PCACHE2 option takes a
+ ** single argument which is a pointer to an sqlite3_pcache_methods2
+ ** object. This object specifies the interface to a custom page cache
+ ** implementation. */
sqlite3GlobalConfig.pcache2 = *va_arg(ap, sqlite3_pcache_methods2*);
break;
}
case SQLITE_CONFIG_GETPCACHE2: {
+ /* EVIDENCE-OF: R-22035-46182 The SQLITE_CONFIG_GETPCACHE2 option takes a
+ ** single argument which is a pointer to an sqlite3_pcache_methods2
+ ** object. SQLite copies of the current page cache implementation into
+ ** that object. */
if( sqlite3GlobalConfig.pcache2.xInit==0 ){
sqlite3PCacheSetDefault();
}
@@ -122584,9 +126875,14 @@ SQLITE_API int sqlite3_config(int op, ...){
break;
}
+/* EVIDENCE-OF: R-06626-12911 The SQLITE_CONFIG_HEAP option is only
+** available if SQLite is compiled with either SQLITE_ENABLE_MEMSYS3 or
+** SQLITE_ENABLE_MEMSYS5 and returns SQLITE_ERROR if invoked otherwise. */
#if defined(SQLITE_ENABLE_MEMSYS3) || defined(SQLITE_ENABLE_MEMSYS5)
case SQLITE_CONFIG_HEAP: {
- /* Designate a buffer for heap memory space */
+ /* EVIDENCE-OF: R-19854-42126 There are three arguments to
+ ** SQLITE_CONFIG_HEAP: An 8-byte aligned pointer to the memory, the
+ ** number of bytes in the memory buffer, and the minimum allocation size. */
sqlite3GlobalConfig.pHeap = va_arg(ap, void*);
sqlite3GlobalConfig.nHeap = va_arg(ap, int);
sqlite3GlobalConfig.mnReq = va_arg(ap, int);
@@ -122599,17 +126895,19 @@ SQLITE_API int sqlite3_config(int op, ...){
}
if( sqlite3GlobalConfig.pHeap==0 ){
- /* If the heap pointer is NULL, then restore the malloc implementation
- ** back to NULL pointers too. This will cause the malloc to go
- ** back to its default implementation when sqlite3_initialize() is
- ** run.
+ /* EVIDENCE-OF: R-49920-60189 If the first pointer (the memory pointer)
+ ** is NULL, then SQLite reverts to using its default memory allocator
+ ** (the system malloc() implementation), undoing any prior invocation of
+ ** SQLITE_CONFIG_MALLOC.
+ **
+ ** Setting sqlite3GlobalConfig.m to all zeros will cause malloc to
+ ** revert to its default implementation when sqlite3_initialize() is run
*/
memset(&sqlite3GlobalConfig.m, 0, sizeof(sqlite3GlobalConfig.m));
}else{
- /* The heap pointer is not NULL, then install one of the
- ** mem5.c/mem3.c methods. The enclosing #if guarantees at
- ** least one of these methods is currently enabled.
- */
+ /* EVIDENCE-OF: R-61006-08918 If the memory pointer is not NULL then the
+ ** alternative memory allocator is engaged to handle all of SQLites
+ ** memory allocation needs. */
#ifdef SQLITE_ENABLE_MEMSYS3
sqlite3GlobalConfig.m = *sqlite3MemGetMemsys3();
#endif
@@ -122642,12 +126940,25 @@ SQLITE_API int sqlite3_config(int op, ...){
break;
}
+ /* EVIDENCE-OF: R-55548-33817 The compile-time setting for URI filenames
+ ** can be changed at start-time using the
+ ** sqlite3_config(SQLITE_CONFIG_URI,1) or
+ ** sqlite3_config(SQLITE_CONFIG_URI,0) configuration calls.
+ */
case SQLITE_CONFIG_URI: {
+ /* EVIDENCE-OF: R-25451-61125 The SQLITE_CONFIG_URI option takes a single
+ ** argument of type int. If non-zero, then URI handling is globally
+ ** enabled. If the parameter is zero, then URI handling is globally
+ ** disabled. */
sqlite3GlobalConfig.bOpenUri = va_arg(ap, int);
break;
}
case SQLITE_CONFIG_COVERING_INDEX_SCAN: {
+ /* EVIDENCE-OF: R-36592-02772 The SQLITE_CONFIG_COVERING_INDEX_SCAN
+ ** option takes a single integer argument which is interpreted as a
+ ** boolean in order to enable or disable the use of covering indices for
+ ** full table scans in the query optimizer. */
sqlite3GlobalConfig.bUseCis = va_arg(ap, int);
break;
}
@@ -122662,25 +126973,43 @@ SQLITE_API int sqlite3_config(int op, ...){
#endif
case SQLITE_CONFIG_MMAP_SIZE: {
+ /* EVIDENCE-OF: R-58063-38258 SQLITE_CONFIG_MMAP_SIZE takes two 64-bit
+ ** integer (sqlite3_int64) values that are the default mmap size limit
+ ** (the default setting for PRAGMA mmap_size) and the maximum allowed
+ ** mmap size limit. */
sqlite3_int64 szMmap = va_arg(ap, sqlite3_int64);
sqlite3_int64 mxMmap = va_arg(ap, sqlite3_int64);
- if( mxMmap<0 || mxMmap>SQLITE_MAX_MMAP_SIZE ){
- mxMmap = SQLITE_MAX_MMAP_SIZE;
- }
- sqlite3GlobalConfig.mxMmap = mxMmap;
+ /* EVIDENCE-OF: R-53367-43190 If either argument to this option is
+ ** negative, then that argument is changed to its compile-time default.
+ **
+ ** EVIDENCE-OF: R-34993-45031 The maximum allowed mmap size will be
+ ** silently truncated if necessary so that it does not exceed the
+ ** compile-time maximum mmap size set by the SQLITE_MAX_MMAP_SIZE
+ ** compile-time option.
+ */
+ if( mxMmap<0 || mxMmap>SQLITE_MAX_MMAP_SIZE ) mxMmap = SQLITE_MAX_MMAP_SIZE;
if( szMmap<0 ) szMmap = SQLITE_DEFAULT_MMAP_SIZE;
if( szMmap>mxMmap) szMmap = mxMmap;
+ sqlite3GlobalConfig.mxMmap = mxMmap;
sqlite3GlobalConfig.szMmap = szMmap;
break;
}
-#if SQLITE_OS_WIN && defined(SQLITE_WIN32_MALLOC)
+#if SQLITE_OS_WIN && defined(SQLITE_WIN32_MALLOC) /* IMP: R-04780-55815 */
case SQLITE_CONFIG_WIN32_HEAPSIZE: {
+ /* EVIDENCE-OF: R-34926-03360 SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit
+ ** unsigned integer value that specifies the maximum size of the created
+ ** heap. */
sqlite3GlobalConfig.nHeap = va_arg(ap, int);
break;
}
#endif
+ case SQLITE_CONFIG_PMASZ: {
+ sqlite3GlobalConfig.szPma = va_arg(ap, unsigned int);
+ break;
+ }
+
default: {
rc = SQLITE_ERROR;
break;
@@ -122759,6 +127088,12 @@ static int setupLookaside(sqlite3 *db, void *pBuf, int sz, int cnt){
** Return the mutex associated with a database connection.
*/
SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return db->mutex;
}
@@ -122768,6 +127103,10 @@ SQLITE_API sqlite3_mutex *sqlite3_db_mutex(sqlite3 *db){
*/
SQLITE_API int sqlite3_db_release_memory(sqlite3 *db){
int i;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
sqlite3BtreeEnterAll(db);
for(i=0; i<db->nDb; i++){
@@ -122857,13 +127196,20 @@ static int binCollFunc(
){
int rc, n;
n = nKey1<nKey2 ? nKey1 : nKey2;
+ /* EVIDENCE-OF: R-65033-28449 The built-in BINARY collation compares
+ ** strings byte by byte using the memcmp() function from the standard C
+ ** library. */
rc = memcmp(pKey1, pKey2, n);
if( rc==0 ){
if( padFlag
&& allSpaces(((char*)pKey1)+n, nKey1-n)
&& allSpaces(((char*)pKey2)+n, nKey2-n)
){
- /* Leave rc unchanged at 0 */
+ /* EVIDENCE-OF: R-31624-24737 RTRIM is like BINARY except that extra
+ ** spaces at the end of either string do not change the result. In other
+ ** words, strings will compare equal to one another as long as they
+ ** differ only in the number of spaces at the end.
+ */
}else{
rc = nKey1 - nKey2;
}
@@ -122898,6 +127244,12 @@ static int nocaseCollatingFunc(
** Return the ROWID of the most recent insert
*/
SQLITE_API sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return db->lastRowid;
}
@@ -122905,6 +127257,12 @@ SQLITE_API sqlite_int64 sqlite3_last_insert_rowid(sqlite3 *db){
** Return the number of changes in the most recent call to sqlite3_exec().
*/
SQLITE_API int sqlite3_changes(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return db->nChange;
}
@@ -122912,6 +127270,12 @@ SQLITE_API int sqlite3_changes(sqlite3 *db){
** Return the number of changes since the database handle was opened.
*/
SQLITE_API int sqlite3_total_changes(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return db->nTotalChange;
}
@@ -123018,7 +127382,7 @@ static int sqlite3Close(sqlite3 *db, int forceZombie){
** SQLITE_BUSY if the connection can not be closed immediately.
*/
if( !forceZombie && connectionIsBusy(db) ){
- sqlite3Error(db, SQLITE_BUSY, "unable to close due to unfinalized "
+ sqlite3ErrorWithMsg(db, SQLITE_BUSY, "unable to close due to unfinalized "
"statements or unfinished backups");
sqlite3_mutex_leave(db->mutex);
return SQLITE_BUSY;
@@ -123148,9 +127512,13 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
sqlite3HashClear(&db->aModule);
#endif
- sqlite3Error(db, SQLITE_OK, 0); /* Deallocates any cached error strings. */
+ sqlite3Error(db, SQLITE_OK); /* Deallocates any cached error strings. */
sqlite3ValueFree(db->pErr);
sqlite3CloseExtensions(db);
+#if SQLITE_USER_AUTHENTICATION
+ sqlite3_free(db->auth.zAuthUser);
+ sqlite3_free(db->auth.zAuthPW);
+#endif
db->magic = SQLITE_MAGIC_ERROR;
@@ -123173,13 +127541,15 @@ SQLITE_PRIVATE void sqlite3LeaveMutexAndCloseZombie(sqlite3 *db){
/*
** Rollback all database files. If tripCode is not SQLITE_OK, then
-** any open cursors are invalidated ("tripped" - as in "tripping a circuit
+** any write cursors are invalidated ("tripped" - as in "tripping a circuit
** breaker") and made to return tripCode if there are any further
-** attempts to use that cursor.
+** attempts to use that cursor. Read cursors remain open and valid
+** but are "saved" in case the table pages are moved around.
*/
SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){
int i;
int inTrans = 0;
+ int schemaChange;
assert( sqlite3_mutex_held(db->mutex) );
sqlite3BeginBenignMalloc();
@@ -123190,6 +127560,7 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){
** the database rollback and schema reset, which can cause false
** corruption reports in some cases. */
sqlite3BtreeEnterAll(db);
+ schemaChange = (db->flags & SQLITE_InternChanges)!=0 && db->init.busy==0;
for(i=0; i<db->nDb; i++){
Btree *p = db->aDb[i].pBt;
@@ -123197,7 +127568,7 @@ SQLITE_PRIVATE void sqlite3RollbackAll(sqlite3 *db, int tripCode){
if( sqlite3BtreeIsInTrans(p) ){
inTrans = 1;
}
- sqlite3BtreeRollback(p, tripCode);
+ sqlite3BtreeRollback(p, tripCode, !schemaChange);
}
}
sqlite3VtabRollback(db);
@@ -123390,7 +127761,7 @@ static int sqliteDefaultBusyCallback(
void *ptr, /* Database connection */
int count /* Number of times table has been busy */
){
-#if SQLITE_OS_WIN || (defined(HAVE_USLEEP) && HAVE_USLEEP)
+#if SQLITE_OS_WIN || HAVE_USLEEP
static const u8 delays[] =
{ 1, 2, 5, 10, 15, 20, 25, 25, 25, 50, 50, 100 };
static const u8 totals[] =
@@ -123453,6 +127824,9 @@ SQLITE_API int sqlite3_busy_handler(
int (*xBusy)(void*,int),
void *pArg
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE;
+#endif
sqlite3_mutex_enter(db->mutex);
db->busyHandler.xFunc = xBusy;
db->busyHandler.pArg = pArg;
@@ -123474,6 +127848,12 @@ SQLITE_API void sqlite3_progress_handler(
int (*xProgress)(void*),
void *pArg
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
if( nOps>0 ){
db->xProgress = xProgress;
@@ -123494,6 +127874,9 @@ SQLITE_API void sqlite3_progress_handler(
** specified number of milliseconds before returning 0.
*/
SQLITE_API int sqlite3_busy_timeout(sqlite3 *db, int ms){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
if( ms>0 ){
sqlite3_busy_handler(db, sqliteDefaultBusyCallback, (void*)db);
db->busyTimeout = ms;
@@ -123507,6 +127890,12 @@ SQLITE_API int sqlite3_busy_timeout(sqlite3 *db, int ms){
** Cause any pending operation to stop at its earliest opportunity.
*/
SQLITE_API void sqlite3_interrupt(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return;
+ }
+#endif
db->u1.isInterrupted = 1;
}
@@ -123581,7 +127970,7 @@ SQLITE_PRIVATE int sqlite3CreateFunc(
p = sqlite3FindFunction(db, zFunctionName, nName, nArg, (u8)enc, 0);
if( p && (p->funcFlags & SQLITE_FUNC_ENCMASK)==enc && p->nArg==nArg ){
if( db->nVdbeActive ){
- sqlite3Error(db, SQLITE_BUSY,
+ sqlite3ErrorWithMsg(db, SQLITE_BUSY,
"unable to delete/modify user-function due to active statements");
assert( !db->mallocFailed );
return SQLITE_BUSY;
@@ -123644,6 +128033,12 @@ SQLITE_API int sqlite3_create_function_v2(
){
int rc = SQLITE_ERROR;
FuncDestructor *pArg = 0;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
if( xDestroy ){
pArg = (FuncDestructor *)sqlite3DbMallocZero(db, sizeof(FuncDestructor));
@@ -123680,6 +128075,10 @@ SQLITE_API int sqlite3_create_function16(
){
int rc;
char *zFunc8;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zFunctionName==0 ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
assert( !db->mallocFailed );
zFunc8 = sqlite3Utf16to8(db, zFunctionName, -1, SQLITE_UTF16NATIVE);
@@ -123711,6 +128110,12 @@ SQLITE_API int sqlite3_overload_function(
){
int nName = sqlite3Strlen30(zName);
int rc = SQLITE_OK;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 || nArg<-2 ){
+ return SQLITE_MISUSE_BKPT;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
if( sqlite3FindFunction(db, zName, nName, nArg, SQLITE_UTF8, 0)==0 ){
rc = sqlite3CreateFunc(db, zName, nArg, SQLITE_UTF8,
@@ -123732,6 +128137,13 @@ SQLITE_API int sqlite3_overload_function(
*/
SQLITE_API void *sqlite3_trace(sqlite3 *db, void (*xTrace)(void*,const char*), void *pArg){
void *pOld;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pOld = db->pTraceArg;
db->xTrace = xTrace;
@@ -123753,6 +128165,13 @@ SQLITE_API void *sqlite3_profile(
void *pArg
){
void *pOld;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pOld = db->pProfileArg;
db->xProfile = xProfile;
@@ -123773,6 +128192,13 @@ SQLITE_API void *sqlite3_commit_hook(
void *pArg /* Argument to the function */
){
void *pOld;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pOld = db->pCommitArg;
db->xCommitCallback = xCallback;
@@ -123791,6 +128217,13 @@ SQLITE_API void *sqlite3_update_hook(
void *pArg /* Argument to the function */
){
void *pRet;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pRet = db->pUpdateArg;
db->xUpdateCallback = xCallback;
@@ -123809,6 +128242,13 @@ SQLITE_API void *sqlite3_rollback_hook(
void *pArg /* Argument to the function */
){
void *pRet;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pRet = db->pRollbackArg;
db->xRollbackCallback = xCallback;
@@ -123855,6 +128295,9 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int nFrame){
UNUSED_PARAMETER(db);
UNUSED_PARAMETER(nFrame);
#else
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
if( nFrame>0 ){
sqlite3_wal_hook(db, sqlite3WalDefaultHook, SQLITE_INT_TO_PTR(nFrame));
}else{
@@ -123875,6 +128318,12 @@ SQLITE_API void *sqlite3_wal_hook(
){
#ifndef SQLITE_OMIT_WAL
void *pRet;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
sqlite3_mutex_enter(db->mutex);
pRet = db->pWalArg;
db->xWalCallback = xCallback;
@@ -123902,14 +128351,21 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
int rc; /* Return code */
int iDb = SQLITE_MAX_ATTACHED; /* sqlite3.aDb[] index of db to checkpoint */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
+
/* Initialize the output variables to -1 in case an error occurs. */
if( pnLog ) *pnLog = -1;
if( pnCkpt ) *pnCkpt = -1;
- assert( SQLITE_CHECKPOINT_FULL>SQLITE_CHECKPOINT_PASSIVE );
- assert( SQLITE_CHECKPOINT_FULL<SQLITE_CHECKPOINT_RESTART );
- assert( SQLITE_CHECKPOINT_PASSIVE+2==SQLITE_CHECKPOINT_RESTART );
- if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_RESTART ){
+ assert( SQLITE_CHECKPOINT_PASSIVE==0 );
+ assert( SQLITE_CHECKPOINT_FULL==1 );
+ assert( SQLITE_CHECKPOINT_RESTART==2 );
+ assert( SQLITE_CHECKPOINT_TRUNCATE==3 );
+ if( eMode<SQLITE_CHECKPOINT_PASSIVE || eMode>SQLITE_CHECKPOINT_TRUNCATE ){
+ /* EVIDENCE-OF: R-03996-12088 The M parameter must be a valid checkpoint
+ ** mode: */
return SQLITE_MISUSE;
}
@@ -123919,10 +128375,11 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
}
if( iDb<0 ){
rc = SQLITE_ERROR;
- sqlite3Error(db, SQLITE_ERROR, "unknown database: %s", zDb);
+ sqlite3ErrorWithMsg(db, SQLITE_ERROR, "unknown database: %s", zDb);
}else{
+ db->busyHandler.nBusy = 0;
rc = sqlite3Checkpoint(db, iDb, eMode, pnLog, pnCkpt);
- sqlite3Error(db, rc, 0);
+ sqlite3Error(db, rc);
}
rc = sqlite3ApiExit(db, rc);
sqlite3_mutex_leave(db->mutex);
@@ -123937,7 +128394,9 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
** checkpointed.
*/
SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb){
- return sqlite3_wal_checkpoint_v2(db, zDb, SQLITE_CHECKPOINT_PASSIVE, 0, 0);
+ /* EVIDENCE-OF: R-41613-20553 The sqlite3_wal_checkpoint(D,X) is equivalent to
+ ** sqlite3_wal_checkpoint_v2(D,X,SQLITE_CHECKPOINT_PASSIVE,0,0). */
+ return sqlite3_wal_checkpoint_v2(db,zDb,SQLITE_CHECKPOINT_PASSIVE,0,0);
}
#ifndef SQLITE_OMIT_WAL
@@ -124077,7 +128536,7 @@ SQLITE_API const void *sqlite3_errmsg16(sqlite3 *db){
}else{
z = sqlite3_value_text16(db->pErr);
if( z==0 ){
- sqlite3Error(db, db->errCode, sqlite3ErrStr(db->errCode));
+ sqlite3ErrorWithMsg(db, db->errCode, sqlite3ErrStr(db->errCode));
z = sqlite3_value_text16(db->pErr);
}
/* A malloc() may have failed within the call to sqlite3_value_text16()
@@ -124125,32 +128584,6 @@ SQLITE_API const char *sqlite3_errstr(int rc){
}
/*
-** Invalidate all cached KeyInfo objects for database connection "db"
-*/
-static void invalidateCachedKeyInfo(sqlite3 *db){
- Db *pDb; /* A single database */
- int iDb; /* The database index number */
- HashElem *k; /* For looping over tables in pDb */
- Table *pTab; /* A table in the database */
- Index *pIdx; /* Each index */
-
- for(iDb=0, pDb=db->aDb; iDb<db->nDb; iDb++, pDb++){
- if( pDb->pBt==0 ) continue;
- sqlite3BtreeEnter(pDb->pBt);
- for(k=sqliteHashFirst(&pDb->pSchema->tblHash); k; k=sqliteHashNext(k)){
- pTab = (Table*)sqliteHashData(k);
- for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
- if( pIdx->pKeyInfo && pIdx->pKeyInfo->db==db ){
- sqlite3KeyInfoUnref(pIdx->pKeyInfo);
- pIdx->pKeyInfo = 0;
- }
- }
- }
- sqlite3BtreeLeave(pDb->pBt);
- }
-}
-
-/*
** Create a new collating function for database "db". The name is zName
** and the encoding is enc.
*/
@@ -124164,7 +128597,6 @@ static int createCollation(
){
CollSeq *pColl;
int enc2;
- int nName = sqlite3Strlen30(zName);
assert( sqlite3_mutex_held(db->mutex) );
@@ -124189,12 +128621,11 @@ static int createCollation(
pColl = sqlite3FindCollSeq(db, (u8)enc2, zName, 0);
if( pColl && pColl->xCmp ){
if( db->nVdbeActive ){
- sqlite3Error(db, SQLITE_BUSY,
+ sqlite3ErrorWithMsg(db, SQLITE_BUSY,
"unable to delete/modify collation sequence due to active statements");
return SQLITE_BUSY;
}
sqlite3ExpirePreparedStatements(db);
- invalidateCachedKeyInfo(db);
/* If collation sequence pColl was created directly by a call to
** sqlite3_create_collation, and not generated by synthCollSeq(),
@@ -124203,7 +128634,7 @@ static int createCollation(
** to be called.
*/
if( (pColl->enc & ~SQLITE_UTF16_ALIGNED)==enc2 ){
- CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName, nName);
+ CollSeq *aColl = sqlite3HashFind(&db->aCollSeq, zName);
int j;
for(j=0; j<3; j++){
CollSeq *p = &aColl[j];
@@ -124223,7 +128654,7 @@ static int createCollation(
pColl->pUser = pCtx;
pColl->xDel = xDel;
pColl->enc = (u8)(enc2 | (enc & SQLITE_UTF16_ALIGNED));
- sqlite3Error(db, SQLITE_OK, 0);
+ sqlite3Error(db, SQLITE_OK);
return SQLITE_OK;
}
@@ -124245,6 +128676,7 @@ static const int aHardLimit[] = {
SQLITE_MAX_LIKE_PATTERN_LENGTH,
SQLITE_MAX_VARIABLE_NUMBER, /* IMP: R-38091-32352 */
SQLITE_MAX_TRIGGER_DEPTH,
+ SQLITE_MAX_WORKER_THREADS,
};
/*
@@ -124280,6 +128712,9 @@ static const int aHardLimit[] = {
#if SQLITE_MAX_TRIGGER_DEPTH<1
# error SQLITE_MAX_TRIGGER_DEPTH must be at least 1
#endif
+#if SQLITE_MAX_WORKER_THREADS<0 || SQLITE_MAX_WORKER_THREADS>50
+# error SQLITE_MAX_WORKER_THREADS must be between 0 and 50
+#endif
/*
@@ -124295,6 +128730,12 @@ static const int aHardLimit[] = {
SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
int oldLimit;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return -1;
+ }
+#endif
/* EVIDENCE-OF: R-30189-54097 For each limit category SQLITE_LIMIT_NAME
** there is a hard upper bound set at compile-time by a C preprocessor
@@ -124313,7 +128754,8 @@ SQLITE_API int sqlite3_limit(sqlite3 *db, int limitId, int newLimit){
SQLITE_MAX_LIKE_PATTERN_LENGTH );
assert( aHardLimit[SQLITE_LIMIT_VARIABLE_NUMBER]==SQLITE_MAX_VARIABLE_NUMBER);
assert( aHardLimit[SQLITE_LIMIT_TRIGGER_DEPTH]==SQLITE_MAX_TRIGGER_DEPTH );
- assert( SQLITE_LIMIT_TRIGGER_DEPTH==(SQLITE_N_LIMIT-1) );
+ assert( aHardLimit[SQLITE_LIMIT_WORKER_THREADS]==SQLITE_MAX_WORKER_THREADS );
+ assert( SQLITE_LIMIT_WORKER_THREADS==(SQLITE_N_LIMIT-1) );
if( limitId<0 || limitId>=SQLITE_N_LIMIT ){
@@ -124370,8 +128812,9 @@ SQLITE_PRIVATE int sqlite3ParseUri(
assert( *pzErrMsg==0 );
- if( ((flags & SQLITE_OPEN_URI) || sqlite3GlobalConfig.bOpenUri)
- && nUri>=5 && memcmp(zUri, "file:", 5)==0
+ if( ((flags & SQLITE_OPEN_URI) /* IMP: R-48725-32206 */
+ || sqlite3GlobalConfig.bOpenUri) /* IMP: R-51689-46548 */
+ && nUri>=5 && memcmp(zUri, "file:", 5)==0 /* IMP: R-57884-37496 */
){
char *zOpt;
int eState; /* Parser state when parsing URI */
@@ -124579,6 +129022,9 @@ static int openDatabase(
char *zOpen = 0; /* Filename argument to pass to BtreeOpen() */
char *zErrMsg = 0; /* Error message from sqlite3ParseUri() */
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( ppDb==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*ppDb = 0;
#ifndef SQLITE_OMIT_AUTOINIT
rc = sqlite3_initialize();
@@ -124601,7 +129047,9 @@ static int openDatabase(
testcase( (1<<(flags&7))==0x02 ); /* READONLY */
testcase( (1<<(flags&7))==0x04 ); /* READWRITE */
testcase( (1<<(flags&7))==0x40 ); /* READWRITE | CREATE */
- if( ((1<<(flags&7)) & 0x46)==0 ) return SQLITE_MISUSE_BKPT;
+ if( ((1<<(flags&7)) & 0x46)==0 ){
+ return SQLITE_MISUSE_BKPT; /* IMP: R-65497-44594 */
+ }
if( sqlite3GlobalConfig.bCoreMutex==0 ){
isThreadsafe = 0;
@@ -124660,10 +129108,12 @@ static int openDatabase(
assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));
+ db->aLimit[SQLITE_LIMIT_WORKER_THREADS] = SQLITE_DEFAULT_WORKER_THREADS;
db->autoCommit = 1;
db->nextAutovac = -1;
db->szMmap = sqlite3GlobalConfig.szMmap;
db->nextPagesize = 0;
+ db->nMaxSorterMmap = 0x7FFFFFFF;
db->flags |= SQLITE_ShortColNames | SQLITE_EnableTrigger | SQLITE_CacheSpill
#if !defined(SQLITE_DEFAULT_AUTOMATIC_INDEX) || SQLITE_DEFAULT_AUTOMATIC_INDEX
| SQLITE_AutoIndex
@@ -124680,6 +129130,9 @@ static int openDatabase(
#if defined(SQLITE_DEFAULT_FOREIGN_KEYS) && SQLITE_DEFAULT_FOREIGN_KEYS
| SQLITE_ForeignKeys
#endif
+#if defined(SQLITE_REVERSE_UNORDERED_SELECTS)
+ | SQLITE_ReverseOrder
+#endif
;
sqlite3HashInit(&db->aCollSeq);
#ifndef SQLITE_OMIT_VIRTUALTABLE
@@ -124689,26 +129142,30 @@ static int openDatabase(
/* Add the default collation sequence BINARY. BINARY works for both UTF-8
** and UTF-16, so add a version for each to avoid any unnecessary
** conversions. The only error that can occur here is a malloc() failure.
+ **
+ ** EVIDENCE-OF: R-52786-44878 SQLite defines three built-in collating
+ ** functions:
*/
createCollation(db, "BINARY", SQLITE_UTF8, 0, binCollFunc, 0);
createCollation(db, "BINARY", SQLITE_UTF16BE, 0, binCollFunc, 0);
createCollation(db, "BINARY", SQLITE_UTF16LE, 0, binCollFunc, 0);
+ createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0);
createCollation(db, "RTRIM", SQLITE_UTF8, (void*)1, binCollFunc, 0);
if( db->mallocFailed ){
goto opendb_out;
}
+ /* EVIDENCE-OF: R-08308-17224 The default collating function for all
+ ** strings is BINARY.
+ */
db->pDfltColl = sqlite3FindCollSeq(db, SQLITE_UTF8, "BINARY", 0);
assert( db->pDfltColl!=0 );
- /* Also add a UTF-8 case-insensitive collation sequence. */
- createCollation(db, "NOCASE", SQLITE_UTF8, 0, nocaseCollatingFunc, 0);
-
/* Parse the filename/URI argument. */
db->openFlags = flags;
rc = sqlite3ParseUri(zVfs, zFilename, &flags, &db->pVfs, &zOpen, &zErrMsg);
if( rc!=SQLITE_OK ){
if( rc==SQLITE_NOMEM ) db->mallocFailed = 1;
- sqlite3Error(db, rc, zErrMsg ? "%s" : 0, zErrMsg);
+ sqlite3ErrorWithMsg(db, rc, zErrMsg ? "%s" : 0, zErrMsg);
sqlite3_free(zErrMsg);
goto opendb_out;
}
@@ -124720,13 +129177,15 @@ static int openDatabase(
if( rc==SQLITE_IOERR_NOMEM ){
rc = SQLITE_NOMEM;
}
- sqlite3Error(db, rc, 0);
+ sqlite3Error(db, rc);
goto opendb_out;
}
+ sqlite3BtreeEnter(db->aDb[0].pBt);
db->aDb[0].pSchema = sqlite3SchemaGet(db, db->aDb[0].pBt);
+ if( !db->mallocFailed ) ENC(db) = SCHEMA_ENC(db);
+ sqlite3BtreeLeave(db->aDb[0].pBt);
db->aDb[1].pSchema = sqlite3SchemaGet(db, 0);
-
/* The default safety_level for the main database is 'full'; for the temp
** database it is 'NONE'. This matches the pager layer defaults.
*/
@@ -124744,7 +129203,7 @@ static int openDatabase(
** database schema yet. This is delayed until the first time the database
** is accessed.
*/
- sqlite3Error(db, SQLITE_OK, 0);
+ sqlite3Error(db, SQLITE_OK);
sqlite3RegisterBuiltinFunctions(db);
/* Load automatic extensions - extensions that have been registered
@@ -124801,7 +129260,7 @@ static int openDatabase(
SQLITE_DEFAULT_LOCKING_MODE);
#endif
- if( rc ) sqlite3Error(db, rc, 0);
+ if( rc ) sqlite3Error(db, rc);
/* Enable the lookaside-malloc subsystem */
setupLookaside(db, 0, sqlite3GlobalConfig.szLookaside,
@@ -124865,13 +129324,15 @@ SQLITE_API int sqlite3_open16(
sqlite3_value *pVal;
int rc;
- assert( zFilename );
- assert( ppDb );
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( ppDb==0 ) return SQLITE_MISUSE_BKPT;
+#endif
*ppDb = 0;
#ifndef SQLITE_OMIT_AUTOINIT
rc = sqlite3_initialize();
if( rc ) return rc;
#endif
+ if( zFilename==0 ) zFilename = "\000\000";
pVal = sqlite3ValueNew(0);
sqlite3ValueSetStr(pVal, -1, zFilename, SQLITE_UTF16NATIVE, SQLITE_STATIC);
zFilename8 = sqlite3ValueText(pVal, SQLITE_UTF8);
@@ -124880,7 +129341,7 @@ SQLITE_API int sqlite3_open16(
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, 0);
assert( *ppDb || rc==SQLITE_NOMEM );
if( rc==SQLITE_OK && !DbHasProperty(*ppDb, 0, DB_SchemaLoaded) ){
- ENC(*ppDb) = SQLITE_UTF16NATIVE;
+ SCHEMA_ENC(*ppDb) = ENC(*ppDb) = SQLITE_UTF16NATIVE;
}
}else{
rc = SQLITE_NOMEM;
@@ -124901,13 +129362,7 @@ SQLITE_API int sqlite3_create_collation(
void* pCtx,
int(*xCompare)(void*,int,const void*,int,const void*)
){
- int rc;
- sqlite3_mutex_enter(db->mutex);
- assert( !db->mallocFailed );
- rc = createCollation(db, zName, (u8)enc, pCtx, xCompare, 0);
- rc = sqlite3ApiExit(db, rc);
- sqlite3_mutex_leave(db->mutex);
- return rc;
+ return sqlite3_create_collation_v2(db, zName, enc, pCtx, xCompare, 0);
}
/*
@@ -124922,6 +129377,10 @@ SQLITE_API int sqlite3_create_collation_v2(
void(*xDel)(void*)
){
int rc;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
assert( !db->mallocFailed );
rc = createCollation(db, zName, (u8)enc, pCtx, xCompare, xDel);
@@ -124943,6 +129402,10 @@ SQLITE_API int sqlite3_create_collation16(
){
int rc = SQLITE_OK;
char *zName8;
+
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) || zName==0 ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
assert( !db->mallocFailed );
zName8 = sqlite3Utf16to8(db, zName, -1, SQLITE_UTF16NATIVE);
@@ -124965,6 +129428,9 @@ SQLITE_API int sqlite3_collation_needed(
void *pCollNeededArg,
void(*xCollNeeded)(void*,sqlite3*,int eTextRep,const char*)
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
db->xCollNeeded = xCollNeeded;
db->xCollNeeded16 = 0;
@@ -124983,6 +129449,9 @@ SQLITE_API int sqlite3_collation_needed16(
void *pCollNeededArg,
void(*xCollNeeded16)(void*,sqlite3*,int eTextRep,const void*)
){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
db->xCollNeeded = 0;
db->xCollNeeded16 = xCollNeeded16;
@@ -125009,13 +129478,19 @@ SQLITE_API int sqlite3_global_recover(void){
** by the next COMMIT or ROLLBACK.
*/
SQLITE_API int sqlite3_get_autocommit(sqlite3 *db){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
return db->autoCommit;
}
/*
-** The following routines are subtitutes for constants SQLITE_CORRUPT,
+** The following routines are substitutes for constants SQLITE_CORRUPT,
** SQLITE_MISUSE, SQLITE_CANTOPEN, SQLITE_IOERR and possibly other error
-** constants. They server two purposes:
+** constants. They serve two purposes:
**
** 1. Serve as a convenient place to set a breakpoint in a debugger
** to detect when version error conditions occurs.
@@ -125062,7 +129537,6 @@ SQLITE_API void sqlite3_thread_cleanup(void){
** Return meta information about a specific column of a database table.
** See comment in sqlite3.h (sqlite.h.in) for details.
*/
-#ifdef SQLITE_ENABLE_COLUMN_METADATA
SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
const char *zDbName, /* Database name or NULL */
@@ -125078,7 +129552,7 @@ SQLITE_API int sqlite3_table_column_metadata(
char *zErrMsg = 0;
Table *pTab = 0;
Column *pCol = 0;
- int iCol;
+ int iCol = 0;
char const *zDataType = 0;
char const *zCollSeq = 0;
@@ -125102,11 +129576,8 @@ SQLITE_API int sqlite3_table_column_metadata(
}
/* Find the column for which info is requested */
- if( sqlite3IsRowid(zColumnName) ){
- iCol = pTab->iPKey;
- if( iCol>=0 ){
- pCol = &pTab->aCol[iCol];
- }
+ if( zColumnName==0 ){
+ /* Query for existance of table only */
}else{
for(iCol=0; iCol<pTab->nCol; iCol++){
pCol = &pTab->aCol[iCol];
@@ -125115,8 +129586,13 @@ SQLITE_API int sqlite3_table_column_metadata(
}
}
if( iCol==pTab->nCol ){
- pTab = 0;
- goto error_out;
+ if( HasRowid(pTab) && sqlite3IsRowid(zColumnName) ){
+ iCol = pTab->iPKey;
+ pCol = iCol>=0 ? &pTab->aCol[iCol] : 0;
+ }else{
+ pTab = 0;
+ goto error_out;
+ }
}
}
@@ -125163,13 +129639,12 @@ error_out:
zColumnName);
rc = SQLITE_ERROR;
}
- sqlite3Error(db, rc, (zErrMsg?"%s":0), zErrMsg);
+ sqlite3ErrorWithMsg(db, rc, (zErrMsg?"%s":0), zErrMsg);
sqlite3DbFree(db, zErrMsg);
rc = sqlite3ApiExit(db, rc);
sqlite3_mutex_leave(db->mutex);
return rc;
}
-#endif
/*
** Sleep for a little while. Return the amount of time slept.
@@ -125191,6 +129666,9 @@ SQLITE_API int sqlite3_sleep(int ms){
** Enable or disable the extended result codes.
*/
SQLITE_API int sqlite3_extended_result_codes(sqlite3 *db, int onoff){
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
db->errMask = onoff ? 0xffffffff : 0xff;
sqlite3_mutex_leave(db->mutex);
@@ -125204,6 +129682,9 @@ SQLITE_API int sqlite3_file_control(sqlite3 *db, const char *zDbName, int op, vo
int rc = SQLITE_ERROR;
Btree *pBtree;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ) return SQLITE_MISUSE_BKPT;
+#endif
sqlite3_mutex_enter(db->mutex);
pBtree = sqlite3DbNameToBtree(db, zDbName);
if( pBtree ){
@@ -125329,7 +129810,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
** IMPORTANT: Changing the PENDING byte from 0x40000000 results in
** an incompatible database file format. Changing the PENDING byte
** while any database connection is open results in undefined and
- ** dileterious behavior.
+ ** deleterious behavior.
*/
case SQLITE_TESTCTRL_PENDING_BYTE: {
rc = PENDING_BYTE;
@@ -125484,22 +129965,6 @@ SQLITE_API int sqlite3_test_control(int op, ...){
break;
}
-#if defined(SQLITE_ENABLE_TREE_EXPLAIN)
- /* sqlite3_test_control(SQLITE_TESTCTRL_EXPLAIN_STMT,
- ** sqlite3_stmt*,const char**);
- **
- ** If compiled with SQLITE_ENABLE_TREE_EXPLAIN, each sqlite3_stmt holds
- ** a string that describes the optimized parse tree. This test-control
- ** returns a pointer to that string.
- */
- case SQLITE_TESTCTRL_EXPLAIN_STMT: {
- sqlite3_stmt *pStmt = va_arg(ap, sqlite3_stmt*);
- const char **pzRet = va_arg(ap, const char**);
- *pzRet = sqlite3VdbeExplanation((Vdbe*)pStmt);
- break;
- }
-#endif
-
/* sqlite3_test_control(SQLITE_TESTCTRL_NEVER_CORRUPT, int);
**
** Set or clear a flag that indicates that the database file is always well-
@@ -125528,6 +129993,13 @@ SQLITE_API int sqlite3_test_control(int op, ...){
break;
}
+ /* sqlite3_test_control(SQLITE_TESTCTRL_SORTER_MMAP, db, nMax); */
+ case SQLITE_TESTCTRL_SORTER_MMAP: {
+ sqlite3 *db = va_arg(ap, sqlite3*);
+ db->nMaxSorterMmap = va_arg(ap, int);
+ break;
+ }
+
/* sqlite3_test_control(SQLITE_TESTCTRL_ISINIT);
**
** Return SQLITE_OK if SQLite has been initialized and SQLITE_ERROR if
@@ -125537,7 +130009,6 @@ SQLITE_API int sqlite3_test_control(int op, ...){
if( sqlite3GlobalConfig.isInit==0 ) rc = SQLITE_ERROR;
break;
}
-
}
va_end(ap);
#endif /* SQLITE_OMIT_BUILTIN_TEST */
@@ -125556,7 +130027,7 @@ SQLITE_API int sqlite3_test_control(int op, ...){
** returns a NULL pointer.
*/
SQLITE_API const char *sqlite3_uri_parameter(const char *zFilename, const char *zParam){
- if( zFilename==0 ) return 0;
+ if( zFilename==0 || zParam==0 ) return 0;
zFilename += sqlite3Strlen30(zFilename) + 1;
while( zFilename[0] ){
int x = strcmp(zFilename, zParam);
@@ -125612,7 +130083,14 @@ SQLITE_PRIVATE Btree *sqlite3DbNameToBtree(sqlite3 *db, const char *zDbName){
** connection.
*/
SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){
- Btree *pBt = sqlite3DbNameToBtree(db, zDbName);
+ Btree *pBt;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return 0;
+ }
+#endif
+ pBt = sqlite3DbNameToBtree(db, zDbName);
return pBt ? sqlite3BtreeGetFilename(pBt) : 0;
}
@@ -125621,7 +130099,14 @@ SQLITE_API const char *sqlite3_db_filename(sqlite3 *db, const char *zDbName){
** no such database exists.
*/
SQLITE_API int sqlite3_db_readonly(sqlite3 *db, const char *zDbName){
- Btree *pBt = sqlite3DbNameToBtree(db, zDbName);
+ Btree *pBt;
+#ifdef SQLITE_ENABLE_API_ARMOR
+ if( !sqlite3SafetyCheckOk(db) ){
+ (void)SQLITE_MISUSE_BKPT;
+ return -1;
+ }
+#endif
+ pBt = sqlite3DbNameToBtree(db, zDbName);
return pBt ? sqlite3BtreeIsReadonly(pBt) : -1;
}
@@ -125811,7 +130296,7 @@ SQLITE_API int sqlite3_unlock_notify(
leaveMutex();
assert( !db->mallocFailed );
- sqlite3Error(db, rc, (rc?"database is deadlocked":0));
+ sqlite3ErrorWithMsg(db, rc, (rc?"database is deadlocked":0));
sqlite3_mutex_leave(db->mutex);
return rc;
}
@@ -128690,7 +133175,7 @@ static int fts3SelectLeaf(
sqlite3_int64 *piLeaf, /* Selected leaf node */
sqlite3_int64 *piLeaf2 /* Selected leaf node */
){
- int rc; /* Return code */
+ int rc = SQLITE_OK; /* Return code */
int iHeight; /* Height of this node in tree */
assert( piLeaf || piLeaf2 );
@@ -128701,7 +133186,7 @@ static int fts3SelectLeaf(
if( rc==SQLITE_OK && iHeight>1 ){
char *zBlob = 0; /* Blob read from %_segments table */
- int nBlob; /* Size of zBlob in bytes */
+ int nBlob = 0; /* Size of zBlob in bytes */
if( piLeaf && piLeaf2 && (*piLeaf!=*piLeaf2) ){
rc = sqlite3Fts3ReadBlock(p, *piLeaf, &zBlob, &nBlob, 0);
@@ -129923,7 +134408,7 @@ static int fts3FilterMethod(
int nVal, /* Number of elements in apVal */
sqlite3_value **apVal /* Arguments for the indexing scheme */
){
- int rc;
+ int rc = SQLITE_OK;
char *zSql; /* SQL statement used to access %_content */
int eSearch;
Fts3Table *p = (Fts3Table *)pCursor->pVtab;
@@ -129953,6 +134438,7 @@ static int fts3FilterMethod(
/* In case the cursor has been used before, clear it now. */
sqlite3_finalize(pCsr->pStmt);
sqlite3_free(pCsr->aDoclist);
+ sqlite3_free(pCsr->aMatchinfo);
sqlite3Fts3ExprFree(pCsr->pExpr);
memset(&pCursor[1], 0, sizeof(Fts3Cursor)-sizeof(sqlite3_vtab_cursor));
@@ -131263,7 +135749,7 @@ static int fts3EvalIncrPhraseNext(
bMaxSet = 1;
}
}
- assert( rc!=SQLITE_OK || a[p->nToken-1].bIgnore==0 );
+ assert( rc!=SQLITE_OK || (p->nToken>=1 && a[p->nToken-1].bIgnore==0) );
assert( rc!=SQLITE_OK || bMaxSet );
/* Keep advancing iterators until they all point to the same document */
@@ -133380,7 +137866,7 @@ static int getNextToken(
/* Set variable i to the maximum number of bytes of input to tokenize. */
for(i=0; i<n; i++){
if( sqlite3_fts3_enable_parentheses && (z[i]=='(' || z[i]==')') ) break;
- if( z[i]=='*' || z[i]=='"' ) break;
+ if( z[i]=='"' ) break;
}
*pnConsumed = i;
@@ -135041,7 +139527,7 @@ static int isVowel(const char *z){
** by a consonant.
**
** In this routine z[] is in reverse order. So we are really looking
-** for an instance of of a consonant followed by a vowel.
+** for an instance of a consonant followed by a vowel.
*/
static int m_gt_0(const char *z){
while( isVowel(z) ){ z++; }
@@ -136410,7 +140896,7 @@ static int fts3tokConnectMethod(
sqlite3_vtab **ppVtab, /* OUT: New sqlite3_vtab object */
char **pzErr /* OUT: sqlite3_malloc'd error message */
){
- Fts3tokTable *pTab;
+ Fts3tokTable *pTab = 0;
const sqlite3_tokenizer_module *pMod = 0;
sqlite3_tokenizer *pTok = 0;
int rc;
@@ -139785,8 +144271,8 @@ static int fts3PromoteSegments(
if( bOk ){
int iIdx = 0;
- sqlite3_stmt *pUpdate1;
- sqlite3_stmt *pUpdate2;
+ sqlite3_stmt *pUpdate1 = 0;
+ sqlite3_stmt *pUpdate2 = 0;
if( rc==SQLITE_OK ){
rc = fts3SqlStmt(p, SQL_UPDATE_LEVEL_IDX, &pUpdate1, 0);
@@ -145018,13 +149504,12 @@ static int readInt16(u8 *p){
return (p[0]<<8) + p[1];
}
static void readCoord(u8 *p, RtreeCoord *pCoord){
- u32 i = (
+ pCoord->u = (
(((u32)p[0]) << 24) +
(((u32)p[1]) << 16) +
(((u32)p[2]) << 8) +
(((u32)p[3]) << 0)
);
- *(u32 *)pCoord = i;
}
static i64 readInt64(u8 *p){
return (
@@ -145053,7 +149538,7 @@ static int writeCoord(u8 *p, RtreeCoord *pCoord){
u32 i;
assert( sizeof(RtreeCoord)==4 );
assert( sizeof(u32)==4 );
- i = *(u32 *)pCoord;
+ i = pCoord->u;
p[0] = (i>>24)&0xFF;
p[1] = (i>>16)&0xFF;
p[2] = (i>> 8)&0xFF;
@@ -145384,14 +149869,13 @@ static void nodeGetCell(
RtreeCell *pCell /* OUT: Write the cell contents here */
){
u8 *pData;
- u8 *pEnd;
RtreeCoord *pCoord;
+ int ii;
pCell->iRowid = nodeGetRowid(pRtree, pNode, iCell);
pData = pNode->zData + (12 + pRtree->nBytesPerCell*iCell);
- pEnd = pData + pRtree->nDim*8;
pCoord = pCell->aCoord;
- for(; pData<pEnd; pData+=4, pCoord++){
- readCoord(pData, pCoord);
+ for(ii=0; ii<pRtree->nDim*2; ii++){
+ readCoord(&pData[ii*4], &pCoord[ii]);
}
}
@@ -145831,7 +150315,7 @@ static RtreeSearchPoint *rtreeEnqueue(
pNew = pCur->aPoint + i;
pNew->rScore = rScore;
pNew->iLevel = iLevel;
- assert( iLevel>=0 && iLevel<=RTREE_MAX_DEPTH );
+ assert( iLevel<=RTREE_MAX_DEPTH );
while( i>0 ){
RtreeSearchPoint *pParent;
j = (i-1)/2;
@@ -147455,6 +151939,8 @@ static int rtreeUpdate(
rtreeReference(pRtree);
assert(nData>=1);
+ cell.iRowid = 0; /* Used only to suppress a compiler warning */
+
/* Constraint handling. A write operation on an r-tree table may return
** SQLITE_CONSTRAINT for two reasons:
**
diff --git a/src/3rdparty/sqlite/sqlite3.h b/src/3rdparty/sqlite/sqlite3.h
index 9879f80d40..bd64ec82c8 100644
--- a/src/3rdparty/sqlite/sqlite3.h
+++ b/src/3rdparty/sqlite/sqlite3.h
@@ -57,7 +57,7 @@ extern "C" {
/*
** These no-op macros are used in front of interfaces to mark those
** interfaces as either deprecated or experimental. New applications
-** should not use deprecated interfaces - they are support for backwards
+** should not use deprecated interfaces - they are supported for backwards
** compatibility only. Application writers should be aware that
** experimental interfaces are subject to change in point releases.
**
@@ -107,9 +107,9 @@ extern "C" {
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
** [sqlite_version()] and [sqlite_source_id()].
*/
-#define SQLITE_VERSION "3.8.6"
-#define SQLITE_VERSION_NUMBER 3008006
-#define SQLITE_SOURCE_ID "2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e"
+#define SQLITE_VERSION "3.8.8.2"
+#define SQLITE_VERSION_NUMBER 3008008
+#define SQLITE_SOURCE_ID "2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098"
/*
** CAPI3REF: Run-Time Library Version Numbers
@@ -201,7 +201,7 @@ SQLITE_API const char *sqlite3_compileoption_get(int N);
** SQLITE_THREADSAFE=1 or =2 then mutexes are enabled by default but
** can be fully or partially disabled using a call to [sqlite3_config()]
** with the verbs [SQLITE_CONFIG_SINGLETHREAD], [SQLITE_CONFIG_MULTITHREAD],
-** or [SQLITE_CONFIG_MUTEX]. ^(The return value of the
+** or [SQLITE_CONFIG_SERIALIZED]. ^(The return value of the
** sqlite3_threadsafe() function shows only the compile-time setting of
** thread safety, not any run-time changes to that setting made by
** sqlite3_config(). In other words, the return value from sqlite3_threadsafe()
@@ -497,6 +497,7 @@ SQLITE_API int sqlite3_exec(
#define SQLITE_NOTICE_RECOVER_WAL (SQLITE_NOTICE | (1<<8))
#define SQLITE_NOTICE_RECOVER_ROLLBACK (SQLITE_NOTICE | (2<<8))
#define SQLITE_WARNING_AUTOINDEX (SQLITE_WARNING | (1<<8))
+#define SQLITE_AUTH_USER (SQLITE_AUTH | (1<<8))
/*
** CAPI3REF: Flags For File Open Operations
@@ -1220,7 +1221,7 @@ struct sqlite3_vfs {
** </ul>
**
** When unlocking, the same SHARED or EXCLUSIVE flag must be supplied as
-** was given no the corresponding lock.
+** was given on the corresponding lock.
**
** The xShmLock method can transition between unlocked and SHARED or
** between unlocked and EXCLUSIVE. It cannot transition between SHARED
@@ -1503,26 +1504,28 @@ struct sqlite3_mem_methods {
** SQLITE_CONFIG_SERIALIZED configuration option.</dd>
**
** [[SQLITE_CONFIG_MALLOC]] <dt>SQLITE_CONFIG_MALLOC</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mem_methods] structure. The argument specifies
+** <dd> ^(The SQLITE_CONFIG_MALLOC option takes a single argument which is
+** a pointer to an instance of the [sqlite3_mem_methods] structure.
+** The argument specifies
** alternative low-level memory allocation routines to be used in place of
** the memory allocation routines built into SQLite.)^ ^SQLite makes
** its own private copy of the content of the [sqlite3_mem_methods] structure
** before the [sqlite3_config()] call returns.</dd>
**
** [[SQLITE_CONFIG_GETMALLOC]] <dt>SQLITE_CONFIG_GETMALLOC</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mem_methods] structure. The [sqlite3_mem_methods]
+** <dd> ^(The SQLITE_CONFIG_GETMALLOC option takes a single argument which
+** is a pointer to an instance of the [sqlite3_mem_methods] structure.
+** The [sqlite3_mem_methods]
** structure is filled with the currently defined memory allocation routines.)^
** This option can be used to overload the default memory allocation
** routines with a wrapper that simulations memory allocation failure or
** tracks memory usage, for example. </dd>
**
** [[SQLITE_CONFIG_MEMSTATUS]] <dt>SQLITE_CONFIG_MEMSTATUS</dt>
-** <dd> ^This option takes single argument of type int, interpreted as a
-** boolean, which enables or disables the collection of memory allocation
-** statistics. ^(When memory allocation statistics are disabled, the
-** following SQLite interfaces become non-operational:
+** <dd> ^The SQLITE_CONFIG_MEMSTATUS option takes single argument of type int,
+** interpreted as a boolean, which enables or disables the collection of
+** memory allocation statistics. ^(When memory allocation statistics are
+** disabled, the following SQLite interfaces become non-operational:
** <ul>
** <li> [sqlite3_memory_used()]
** <li> [sqlite3_memory_highwater()]
@@ -1535,53 +1538,67 @@ struct sqlite3_mem_methods {
** </dd>
**
** [[SQLITE_CONFIG_SCRATCH]] <dt>SQLITE_CONFIG_SCRATCH</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** scratch memory. There are three arguments: A pointer an 8-byte
+** <dd> ^The SQLITE_CONFIG_SCRATCH option specifies a static memory buffer
+** that SQLite can use for scratch memory. ^(There are three arguments
+** to SQLITE_CONFIG_SCRATCH: A pointer an 8-byte
** aligned memory buffer from which the scratch allocations will be
** drawn, the size of each scratch allocation (sz),
-** and the maximum number of scratch allocations (N). The sz
-** argument must be a multiple of 16.
+** and the maximum number of scratch allocations (N).)^
** The first argument must be a pointer to an 8-byte aligned buffer
** of at least sz*N bytes of memory.
-** ^SQLite will use no more than two scratch buffers per thread. So
-** N should be set to twice the expected maximum number of threads.
-** ^SQLite will never require a scratch buffer that is more than 6
-** times the database page size. ^If SQLite needs needs additional
+** ^SQLite will not use more than one scratch buffers per thread.
+** ^SQLite will never request a scratch buffer that is more than 6
+** times the database page size.
+** ^If SQLite needs needs additional
** scratch memory beyond what is provided by this configuration option, then
-** [sqlite3_malloc()] will be used to obtain the memory needed.</dd>
+** [sqlite3_malloc()] will be used to obtain the memory needed.<p>
+** ^When the application provides any amount of scratch memory using
+** SQLITE_CONFIG_SCRATCH, SQLite avoids unnecessary large
+** [sqlite3_malloc|heap allocations].
+** This can help [Robson proof|prevent memory allocation failures] due to heap
+** fragmentation in low-memory embedded systems.
+** </dd>
**
** [[SQLITE_CONFIG_PAGECACHE]] <dt>SQLITE_CONFIG_PAGECACHE</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite can use for
-** the database page cache with the default page cache implementation.
+** <dd> ^The SQLITE_CONFIG_PAGECACHE option specifies a static memory buffer
+** that SQLite can use for the database page cache with the default page
+** cache implementation.
** This configuration should not be used if an application-define page
-** cache implementation is loaded using the SQLITE_CONFIG_PCACHE2 option.
-** There are three arguments to this option: A pointer to 8-byte aligned
+** cache implementation is loaded using the [SQLITE_CONFIG_PCACHE2]
+** configuration option.
+** ^There are three arguments to SQLITE_CONFIG_PAGECACHE: A pointer to
+** 8-byte aligned
** memory, the size of each page buffer (sz), and the number of pages (N).
** The sz argument should be the size of the largest database page
-** (a power of two between 512 and 32768) plus a little extra for each
-** page header. ^The page header size is 20 to 40 bytes depending on
-** the host architecture. ^It is harmless, apart from the wasted memory,
-** to make sz a little too large. The first
-** argument should point to an allocation of at least sz*N bytes of memory.
+** (a power of two between 512 and 65536) plus some extra bytes for each
+** page header. ^The number of extra bytes needed by the page header
+** can be determined using the [SQLITE_CONFIG_PCACHE_HDRSZ] option
+** to [sqlite3_config()].
+** ^It is harmless, apart from the wasted memory,
+** for the sz parameter to be larger than necessary. The first
+** argument should pointer to an 8-byte aligned block of memory that
+** is at least sz*N bytes of memory, otherwise subsequent behavior is
+** undefined.
** ^SQLite will use the memory provided by the first argument to satisfy its
** memory needs for the first N pages that it adds to cache. ^If additional
** page cache memory is needed beyond what is provided by this option, then
-** SQLite goes to [sqlite3_malloc()] for the additional storage space.
-** The pointer in the first argument must
-** be aligned to an 8-byte boundary or subsequent behavior of SQLite
-** will be undefined.</dd>
+** SQLite goes to [sqlite3_malloc()] for the additional storage space.</dd>
**
** [[SQLITE_CONFIG_HEAP]] <dt>SQLITE_CONFIG_HEAP</dt>
-** <dd> ^This option specifies a static memory buffer that SQLite will use
-** for all of its dynamic memory allocation needs beyond those provided
-** for by [SQLITE_CONFIG_SCRATCH] and [SQLITE_CONFIG_PAGECACHE].
-** There are three arguments: An 8-byte aligned pointer to the memory,
+** <dd> ^The SQLITE_CONFIG_HEAP option specifies a static memory buffer
+** that SQLite will use for all of its dynamic memory allocation needs
+** beyond those provided for by [SQLITE_CONFIG_SCRATCH] and
+** [SQLITE_CONFIG_PAGECACHE].
+** ^The SQLITE_CONFIG_HEAP option is only available if SQLite is compiled
+** with either [SQLITE_ENABLE_MEMSYS3] or [SQLITE_ENABLE_MEMSYS5] and returns
+** [SQLITE_ERROR] if invoked otherwise.
+** ^There are three arguments to SQLITE_CONFIG_HEAP:
+** An 8-byte aligned pointer to the memory,
** the number of bytes in the memory buffer, and the minimum allocation size.
** ^If the first pointer (the memory pointer) is NULL, then SQLite reverts
** to using its default memory allocator (the system malloc() implementation),
** undoing any prior invocation of [SQLITE_CONFIG_MALLOC]. ^If the
-** memory pointer is not NULL and either [SQLITE_ENABLE_MEMSYS3] or
-** [SQLITE_ENABLE_MEMSYS5] are defined, then the alternative memory
+** memory pointer is not NULL then the alternative memory
** allocator is engaged to handle all of SQLites memory allocation needs.
** The first pointer (the memory pointer) must be aligned to an 8-byte
** boundary or subsequent behavior of SQLite will be undefined.
@@ -1589,11 +1606,11 @@ struct sqlite3_mem_methods {
** for the minimum allocation size are 2**5 through 2**8.</dd>
**
** [[SQLITE_CONFIG_MUTEX]] <dt>SQLITE_CONFIG_MUTEX</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mutex_methods] structure. The argument specifies
-** alternative low-level mutex routines to be used in place
-** the mutex routines built into SQLite.)^ ^SQLite makes a copy of the
-** content of the [sqlite3_mutex_methods] structure before the call to
+** <dd> ^(The SQLITE_CONFIG_MUTEX option takes a single argument which is a
+** pointer to an instance of the [sqlite3_mutex_methods] structure.
+** The argument specifies alternative low-level mutex routines to be used
+** in place the mutex routines built into SQLite.)^ ^SQLite makes a copy of
+** the content of the [sqlite3_mutex_methods] structure before the call to
** [sqlite3_config()] returns. ^If SQLite is compiled with
** the [SQLITE_THREADSAFE | SQLITE_THREADSAFE=0] compile-time option then
** the entire mutexing subsystem is omitted from the build and hence calls to
@@ -1601,8 +1618,8 @@ struct sqlite3_mem_methods {
** return [SQLITE_ERROR].</dd>
**
** [[SQLITE_CONFIG_GETMUTEX]] <dt>SQLITE_CONFIG_GETMUTEX</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** instance of the [sqlite3_mutex_methods] structure. The
+** <dd> ^(The SQLITE_CONFIG_GETMUTEX option takes a single argument which
+** is a pointer to an instance of the [sqlite3_mutex_methods] structure. The
** [sqlite3_mutex_methods]
** structure is filled with the currently defined mutex routines.)^
** This option can be used to overload the default mutex allocation
@@ -1614,25 +1631,25 @@ struct sqlite3_mem_methods {
** return [SQLITE_ERROR].</dd>
**
** [[SQLITE_CONFIG_LOOKASIDE]] <dt>SQLITE_CONFIG_LOOKASIDE</dt>
-** <dd> ^(This option takes two arguments that determine the default
-** memory allocation for the lookaside memory allocator on each
-** [database connection]. The first argument is the
+** <dd> ^(The SQLITE_CONFIG_LOOKASIDE option takes two arguments that determine
+** the default size of lookaside memory on each [database connection].
+** The first argument is the
** size of each lookaside buffer slot and the second is the number of
-** slots allocated to each database connection.)^ ^(This option sets the
-** <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
-** verb to [sqlite3_db_config()] can be used to change the lookaside
+** slots allocated to each database connection.)^ ^(SQLITE_CONFIG_LOOKASIDE
+** sets the <i>default</i> lookaside size. The [SQLITE_DBCONFIG_LOOKASIDE]
+** option to [sqlite3_db_config()] can be used to change the lookaside
** configuration on individual connections.)^ </dd>
**
** [[SQLITE_CONFIG_PCACHE2]] <dt>SQLITE_CONFIG_PCACHE2</dt>
-** <dd> ^(This option takes a single argument which is a pointer to
-** an [sqlite3_pcache_methods2] object. This object specifies the interface
-** to a custom page cache implementation.)^ ^SQLite makes a copy of the
-** object and uses it for page cache memory allocations.</dd>
+** <dd> ^(The SQLITE_CONFIG_PCACHE2 option takes a single argument which is
+** a pointer to an [sqlite3_pcache_methods2] object. This object specifies
+** the interface to a custom page cache implementation.)^
+** ^SQLite makes a copy of the [sqlite3_pcache_methods2] object.</dd>
**
** [[SQLITE_CONFIG_GETPCACHE2]] <dt>SQLITE_CONFIG_GETPCACHE2</dt>
-** <dd> ^(This option takes a single argument which is a pointer to an
-** [sqlite3_pcache_methods2] object. SQLite copies of the current
-** page cache implementation into that object.)^ </dd>
+** <dd> ^(The SQLITE_CONFIG_GETPCACHE2 option takes a single argument which
+** is a pointer to an [sqlite3_pcache_methods2] object. SQLite copies of
+** the current page cache implementation into that object.)^ </dd>
**
** [[SQLITE_CONFIG_LOG]] <dt>SQLITE_CONFIG_LOG</dt>
** <dd> The SQLITE_CONFIG_LOG option is used to configure the SQLite
@@ -1655,10 +1672,11 @@ struct sqlite3_mem_methods {
** function must be threadsafe. </dd>
**
** [[SQLITE_CONFIG_URI]] <dt>SQLITE_CONFIG_URI
-** <dd>^(This option takes a single argument of type int. If non-zero, then
-** URI handling is globally enabled. If the parameter is zero, then URI handling
-** is globally disabled.)^ ^If URI handling is globally enabled, all filenames
-** passed to [sqlite3_open()], [sqlite3_open_v2()], [sqlite3_open16()] or
+** <dd>^(The SQLITE_CONFIG_URI option takes a single argument of type int.
+** If non-zero, then URI handling is globally enabled. If the parameter is zero,
+** then URI handling is globally disabled.)^ ^If URI handling is globally
+** enabled, all filenames passed to [sqlite3_open()], [sqlite3_open_v2()],
+** [sqlite3_open16()] or
** specified as part of [ATTACH] commands are interpreted as URIs, regardless
** of whether or not the [SQLITE_OPEN_URI] flag is set when the database
** connection is opened. ^If it is globally disabled, filenames are
@@ -1668,9 +1686,10 @@ struct sqlite3_mem_methods {
** [SQLITE_USE_URI] symbol defined.)^
**
** [[SQLITE_CONFIG_COVERING_INDEX_SCAN]] <dt>SQLITE_CONFIG_COVERING_INDEX_SCAN
-** <dd>^This option takes a single integer argument which is interpreted as
-** a boolean in order to enable or disable the use of covering indices for
-** full table scans in the query optimizer. ^The default setting is determined
+** <dd>^The SQLITE_CONFIG_COVERING_INDEX_SCAN option takes a single integer
+** argument which is interpreted as a boolean in order to enable or disable
+** the use of covering indices for full table scans in the query optimizer.
+** ^The default setting is determined
** by the [SQLITE_ALLOW_COVERING_INDEX_SCAN] compile-time option, or is "on"
** if that compile-time option is omitted.
** The ability to disable the use of covering indices for full table scans
@@ -1710,19 +1729,39 @@ struct sqlite3_mem_methods {
** ^The default setting can be overridden by each database connection using
** either the [PRAGMA mmap_size] command, or by using the
** [SQLITE_FCNTL_MMAP_SIZE] file control. ^(The maximum allowed mmap size
-** cannot be changed at run-time. Nor may the maximum allowed mmap size
-** exceed the compile-time maximum mmap size set by the
+** will be silently truncated if necessary so that it does not exceed the
+** compile-time maximum mmap size set by the
** [SQLITE_MAX_MMAP_SIZE] compile-time option.)^
** ^If either argument to this option is negative, then that argument is
** changed to its compile-time default.
**
** [[SQLITE_CONFIG_WIN32_HEAPSIZE]]
** <dt>SQLITE_CONFIG_WIN32_HEAPSIZE
-** <dd>^This option is only available if SQLite is compiled for Windows
-** with the [SQLITE_WIN32_MALLOC] pre-processor macro defined.
-** SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
+** <dd>^The SQLITE_CONFIG_WIN32_HEAPSIZE option is only available if SQLite is
+** compiled for Windows with the [SQLITE_WIN32_MALLOC] pre-processor macro
+** defined. ^SQLITE_CONFIG_WIN32_HEAPSIZE takes a 32-bit unsigned integer value
** that specifies the maximum size of the created heap.
** </dl>
+**
+** [[SQLITE_CONFIG_PCACHE_HDRSZ]]
+** <dt>SQLITE_CONFIG_PCACHE_HDRSZ
+** <dd>^The SQLITE_CONFIG_PCACHE_HDRSZ option takes a single parameter which
+** is a pointer to an integer and writes into that integer the number of extra
+** bytes per page required for each page in [SQLITE_CONFIG_PAGECACHE].
+** The amount of extra space required can change depending on the compiler,
+** target platform, and SQLite version.
+**
+** [[SQLITE_CONFIG_PMASZ]]
+** <dt>SQLITE_CONFIG_PMASZ
+** <dd>^The SQLITE_CONFIG_PMASZ option takes a single parameter which
+** is an unsigned integer and sets the "Minimum PMA Size" for the multithreaded
+** sorter to that integer. The default minimum PMA Size is set by the
+** [SQLITE_SORTER_PMASZ] compile-time option. New threads are launched
+** to help with sort operations when multithreaded sorting
+** is enabled (using the [PRAGMA threads] command) and the amount of content
+** to be sorted exceeds the page size times the minimum of the
+** [PRAGMA cache_size] setting and this value.
+** </dl>
*/
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
#define SQLITE_CONFIG_MULTITHREAD 2 /* nil */
@@ -1747,6 +1786,8 @@ struct sqlite3_mem_methods {
#define SQLITE_CONFIG_SQLLOG 21 /* xSqllog, void* */
#define SQLITE_CONFIG_MMAP_SIZE 22 /* sqlite3_int64, sqlite3_int64 */
#define SQLITE_CONFIG_WIN32_HEAPSIZE 23 /* int nByte */
+#define SQLITE_CONFIG_PCACHE_HDRSZ 24 /* int *psz */
+#define SQLITE_CONFIG_PMASZ 25 /* unsigned int szPma */
/*
** CAPI3REF: Database Connection Configuration Options
@@ -1874,47 +1915,45 @@ SQLITE_API sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
/*
** CAPI3REF: Count The Number Of Rows Modified
**
-** ^This function returns the number of database rows that were changed
-** or inserted or deleted by the most recently completed SQL statement
-** on the [database connection] specified by the first parameter.
-** ^(Only changes that are directly specified by the [INSERT], [UPDATE],
-** or [DELETE] statement are counted. Auxiliary changes caused by
-** triggers or [foreign key actions] are not counted.)^ Use the
-** [sqlite3_total_changes()] function to find the total number of changes
-** including changes caused by triggers and foreign key actions.
-**
-** ^Changes to a view that are simulated by an [INSTEAD OF trigger]
-** are not counted. Only real table changes are counted.
-**
-** ^(A "row change" is a change to a single row of a single table
-** caused by an INSERT, DELETE, or UPDATE statement. Rows that
-** are changed as side effects of [REPLACE] constraint resolution,
-** rollback, ABORT processing, [DROP TABLE], or by any other
-** mechanisms do not count as direct row changes.)^
-**
-** A "trigger context" is a scope of execution that begins and
-** ends with the script of a [CREATE TRIGGER | trigger].
-** Most SQL statements are
-** evaluated outside of any trigger. This is the "top level"
-** trigger context. If a trigger fires from the top level, a
-** new trigger context is entered for the duration of that one
-** trigger. Subtriggers create subcontexts for their duration.
-**
-** ^Calling [sqlite3_exec()] or [sqlite3_step()] recursively does
-** not create a new trigger context.
-**
-** ^This function returns the number of direct row changes in the
-** most recent INSERT, UPDATE, or DELETE statement within the same
-** trigger context.
-**
-** ^Thus, when called from the top level, this function returns the
-** number of changes in the most recent INSERT, UPDATE, or DELETE
-** that also occurred at the top level. ^(Within the body of a trigger,
-** the sqlite3_changes() interface can be called to find the number of
-** changes in the most recently completed INSERT, UPDATE, or DELETE
-** statement within the body of the same trigger.
-** However, the number returned does not include changes
-** caused by subtriggers since those have their own context.)^
+** ^This function returns the number of rows modified, inserted or
+** deleted by the most recently completed INSERT, UPDATE or DELETE
+** statement on the database connection specified by the only parameter.
+** ^Executing any other type of SQL statement does not modify the value
+** returned by this function.
+**
+** ^Only changes made directly by the INSERT, UPDATE or DELETE statement are
+** considered - auxiliary changes caused by [CREATE TRIGGER | triggers],
+** [foreign key actions] or [REPLACE] constraint resolution are not counted.
+**
+** Changes to a view that are intercepted by
+** [INSTEAD OF trigger | INSTEAD OF triggers] are not counted. ^The value
+** returned by sqlite3_changes() immediately after an INSERT, UPDATE or
+** DELETE statement run on a view is always zero. Only changes made to real
+** tables are counted.
+**
+** Things are more complicated if the sqlite3_changes() function is
+** executed while a trigger program is running. This may happen if the
+** program uses the [changes() SQL function], or if some other callback
+** function invokes sqlite3_changes() directly. Essentially:
+**
+** <ul>
+** <li> ^(Before entering a trigger program the value returned by
+** sqlite3_changes() function is saved. After the trigger program
+** has finished, the original value is restored.)^
+**
+** <li> ^(Within a trigger program each INSERT, UPDATE and DELETE
+** statement sets the value returned by sqlite3_changes()
+** upon completion as normal. Of course, this value will not include
+** any changes performed by sub-triggers, as the sqlite3_changes()
+** value will be saved and restored after each sub-trigger has run.)^
+** </ul>
+**
+** ^This means that if the changes() SQL function (or similar) is used
+** by the first INSERT, UPDATE or DELETE statement within a trigger, it
+** returns the value as set when the calling statement began executing.
+** ^If it is used by the second or subsequent such statement within a trigger
+** program, the value returned reflects the number of rows modified by the
+** previous INSERT, UPDATE or DELETE statement within the same trigger.
**
** See also the [sqlite3_total_changes()] interface, the
** [count_changes pragma], and the [changes() SQL function].
@@ -1928,20 +1967,17 @@ SQLITE_API int sqlite3_changes(sqlite3*);
/*
** CAPI3REF: Total Number Of Rows Modified
**
-** ^This function returns the number of row changes caused by [INSERT],
-** [UPDATE] or [DELETE] statements since the [database connection] was opened.
-** ^(The count returned by sqlite3_total_changes() includes all changes
-** from all [CREATE TRIGGER | trigger] contexts and changes made by
-** [foreign key actions]. However,
-** the count does not include changes used to implement [REPLACE] constraints,
-** do rollbacks or ABORT processing, or [DROP TABLE] processing. The
-** count does not include rows of views that fire an [INSTEAD OF trigger],
-** though if the INSTEAD OF trigger makes changes of its own, those changes
-** are counted.)^
-** ^The sqlite3_total_changes() function counts the changes as soon as
-** the statement that makes them is completed (when the statement handle
-** is passed to [sqlite3_reset()] or [sqlite3_finalize()]).
-**
+** ^This function returns the total number of rows inserted, modified or
+** deleted by all [INSERT], [UPDATE] or [DELETE] statements completed
+** since the database connection was opened, including those executed as
+** part of trigger programs. ^Executing any other type of SQL statement
+** does not affect the value returned by sqlite3_total_changes().
+**
+** ^Changes made as part of [foreign key actions] are included in the
+** count, but those made as part of REPLACE constraint resolution are
+** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
+** are not counted.
+**
** See also the [sqlite3_changes()] interface, the
** [count_changes pragma], and the [total_changes() SQL function].
**
@@ -2028,6 +2064,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
/*
** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors
+** KEYWORDS: {busy-handler callback} {busy handler}
**
** ^The sqlite3_busy_handler(D,X,P) routine sets a callback function X
** that might be invoked with argument P whenever
@@ -2044,7 +2081,7 @@ SQLITE_API int sqlite3_complete16(const void *sql);
** ^The first argument to the busy handler is a copy of the void* pointer which
** is the third argument to sqlite3_busy_handler(). ^The second argument to
** the busy handler callback is the number of times that the busy handler has
-** been invoked for the same locking event. ^If the
+** been invoked previously for the same locking event. ^If the
** busy callback returns 0, then no additional attempts are made to
** access the database and [SQLITE_BUSY] is returned
** to the application.
@@ -2099,7 +2136,7 @@ SQLITE_API int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
** turns off all busy handlers.
**
** ^(There can only be a single busy handler for a particular
-** [database connection] any any given moment. If another busy handler
+** [database connection] at any given moment. If another busy handler
** was defined (using [sqlite3_busy_handler()]) prior to calling
** this routine, that other busy handler is cleared.)^
**
@@ -2303,6 +2340,10 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** sqlite3_malloc() is zero or negative then sqlite3_malloc() returns
** a NULL pointer.
**
+** ^The sqlite3_malloc64(N) routine works just like
+** sqlite3_malloc(N) except that N is an unsigned 64-bit integer instead
+** of a signed 32-bit integer.
+**
** ^Calling sqlite3_free() with a pointer previously returned
** by sqlite3_malloc() or sqlite3_realloc() releases that memory so
** that it might be reused. ^The sqlite3_free() routine is
@@ -2314,24 +2355,38 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** might result if sqlite3_free() is called with a non-NULL pointer that
** was not obtained from sqlite3_malloc() or sqlite3_realloc().
**
-** ^(The sqlite3_realloc() interface attempts to resize a
-** prior memory allocation to be at least N bytes, where N is the
-** second parameter. The memory allocation to be resized is the first
-** parameter.)^ ^ If the first parameter to sqlite3_realloc()
+** ^The sqlite3_realloc(X,N) interface attempts to resize a
+** prior memory allocation X to be at least N bytes.
+** ^If the X parameter to sqlite3_realloc(X,N)
** is a NULL pointer then its behavior is identical to calling
-** sqlite3_malloc(N) where N is the second parameter to sqlite3_realloc().
-** ^If the second parameter to sqlite3_realloc() is zero or
+** sqlite3_malloc(N).
+** ^If the N parameter to sqlite3_realloc(X,N) is zero or
** negative then the behavior is exactly the same as calling
-** sqlite3_free(P) where P is the first parameter to sqlite3_realloc().
-** ^sqlite3_realloc() returns a pointer to a memory allocation
-** of at least N bytes in size or NULL if sufficient memory is unavailable.
+** sqlite3_free(X).
+** ^sqlite3_realloc(X,N) returns a pointer to a memory allocation
+** of at least N bytes in size or NULL if insufficient memory is available.
** ^If M is the size of the prior allocation, then min(N,M) bytes
** of the prior allocation are copied into the beginning of buffer returned
-** by sqlite3_realloc() and the prior allocation is freed.
-** ^If sqlite3_realloc() returns NULL, then the prior allocation
-** is not freed.
-**
-** ^The memory returned by sqlite3_malloc() and sqlite3_realloc()
+** by sqlite3_realloc(X,N) and the prior allocation is freed.
+** ^If sqlite3_realloc(X,N) returns NULL and N is positive, then the
+** prior allocation is not freed.
+**
+** ^The sqlite3_realloc64(X,N) interfaces works the same as
+** sqlite3_realloc(X,N) except that N is a 64-bit unsigned integer instead
+** of a 32-bit signed integer.
+**
+** ^If X is a memory allocation previously obtained from sqlite3_malloc(),
+** sqlite3_malloc64(), sqlite3_realloc(), or sqlite3_realloc64(), then
+** sqlite3_msize(X) returns the size of that memory allocation in bytes.
+** ^The value returned by sqlite3_msize(X) might be larger than the number
+** of bytes requested when X was allocated. ^If X is a NULL pointer then
+** sqlite3_msize(X) returns zero. If X points to something that is not
+** the beginning of memory allocation, or if it points to a formerly
+** valid memory allocation that has now been freed, then the behavior
+** of sqlite3_msize(X) is undefined and possibly harmful.
+**
+** ^The memory returned by sqlite3_malloc(), sqlite3_realloc(),
+** sqlite3_malloc64(), and sqlite3_realloc64()
** is always aligned to at least an 8 byte boundary, or to a
** 4 byte boundary if the [SQLITE_4_BYTE_ALIGNED_MALLOC] compile-time
** option is used.
@@ -2359,8 +2414,11 @@ SQLITE_API char *sqlite3_vsnprintf(int,char*,const char*, va_list);
** [sqlite3_free()] or [sqlite3_realloc()].
*/
SQLITE_API void *sqlite3_malloc(int);
+SQLITE_API void *sqlite3_malloc64(sqlite3_uint64);
SQLITE_API void *sqlite3_realloc(void*, int);
+SQLITE_API void *sqlite3_realloc64(void*, sqlite3_uint64);
SQLITE_API void sqlite3_free(void*);
+SQLITE_API sqlite3_uint64 sqlite3_msize(void*);
/*
** CAPI3REF: Memory Allocator Statistics
@@ -2398,13 +2456,14 @@ SQLITE_API sqlite3_int64 sqlite3_memory_highwater(int resetFlag);
** applications to access the same PRNG for other purposes.
**
** ^A call to this routine stores N bytes of randomness into buffer P.
-** ^If N is less than one, then P can be a NULL pointer.
+** ^The P parameter can be a NULL pointer.
**
** ^If this routine has not been previously called or if the previous
-** call had N less than one, then the PRNG is seeded using randomness
-** obtained from the xRandomness method of the default [sqlite3_vfs] object.
-** ^If the previous call to this routine had an N of 1 or more then
-** the pseudo-randomness is generated
+** call had N less than one or a NULL pointer for P, then the PRNG is
+** seeded using randomness obtained from the xRandomness method of
+** the default [sqlite3_vfs] object.
+** ^If the previous call to this routine had an N of 1 or more and a
+** non-NULL P then the pseudo-randomness is generated
** internally and without recourse to the [sqlite3_vfs] xRandomness
** method.
*/
@@ -2647,9 +2706,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** an English language description of the error following a failure of any
** of the sqlite3_open() routines.
**
-** ^The default encoding for the database will be UTF-8 if
-** sqlite3_open() or sqlite3_open_v2() is called and
-** UTF-16 in the native byte order if sqlite3_open16() is used.
+** ^The default encoding will be UTF-8 for databases created using
+** sqlite3_open() or sqlite3_open_v2(). ^The default encoding for databases
+** created using sqlite3_open16() will be UTF-16 in the native byte order.
**
** Whether or not an error occurs when it is opened, resources
** associated with the [database connection] handle should be released by
@@ -2737,13 +2796,14 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** then it is interpreted as an absolute path. ^If the path does not begin
** with a '/' (meaning that the authority section is omitted from the URI)
** then the path is interpreted as a relative path.
-** ^On windows, the first component of an absolute path
-** is a drive specification (e.g. "C:").
+** ^(On windows, the first component of an absolute path
+** is a drive specification (e.g. "C:").)^
**
** [[core URI query parameters]]
** The query component of a URI may contain parameters that are interpreted
** either by SQLite itself, or by a [VFS | custom VFS implementation].
-** SQLite interprets the following three query parameters:
+** SQLite and its built-in [VFSes] interpret the
+** following query parameters:
**
** <ul>
** <li> <b>vfs</b>: ^The "vfs" parameter may be used to specify the name of
@@ -2778,11 +2838,9 @@ SQLITE_API void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
** a URI filename, its value overrides any behavior requested by setting
** SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
**
-** <li> <b>psow</b>: ^The psow parameter may be "true" (or "on" or "yes" or
-** "1") or "false" (or "off" or "no" or "0") to indicate that the
+** <li> <b>psow</b>: ^The psow parameter indicates whether or not the
** [powersafe overwrite] property does or does not apply to the
-** storage media on which the database file resides. ^The psow query
-** parameter only works for the built-in unix and Windows VFSes.
+** storage media on which the database file resides.
**
** <li> <b>nolock</b>: ^The nolock parameter is a boolean query parameter
** which if set disables file locking in rollback journal modes. This
@@ -3078,6 +3136,10 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
**
** [[SQLITE_LIMIT_TRIGGER_DEPTH]] ^(<dt>SQLITE_LIMIT_TRIGGER_DEPTH</dt>
** <dd>The maximum depth of recursion for triggers.</dd>)^
+**
+** [[SQLITE_LIMIT_WORKER_THREADS]] ^(<dt>SQLITE_LIMIT_WORKER_THREADS</dt>
+** <dd>The maximum number of auxiliary worker threads that a single
+** [prepared statement] may start.</dd>)^
** </dl>
*/
#define SQLITE_LIMIT_LENGTH 0
@@ -3091,6 +3153,7 @@ SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
#define SQLITE_LIMIT_LIKE_PATTERN_LENGTH 8
#define SQLITE_LIMIT_VARIABLE_NUMBER 9
#define SQLITE_LIMIT_TRIGGER_DEPTH 10
+#define SQLITE_LIMIT_WORKER_THREADS 11
/*
** CAPI3REF: Compiling An SQL Statement
@@ -3364,18 +3427,18 @@ typedef struct sqlite3_context sqlite3_context;
** If the fourth parameter to sqlite3_bind_blob() is negative, then
** the behavior is undefined.
** If a non-negative fourth parameter is provided to sqlite3_bind_text()
-** or sqlite3_bind_text16() then that parameter must be the byte offset
+** or sqlite3_bind_text16() or sqlite3_bind_text64() then
+** that parameter must be the byte offset
** where the NUL terminator would occur assuming the string were NUL
** terminated. If any NUL characters occur at byte offsets less than
** the value of the fourth parameter then the resulting string value will
** contain embedded NULs. The result of expressions involving strings
** with embedded NULs is undefined.
**
-** ^The fifth argument to sqlite3_bind_blob(), sqlite3_bind_text(), and
-** sqlite3_bind_text16() is a destructor used to dispose of the BLOB or
+** ^The fifth argument to the BLOB and string binding interfaces
+** is a destructor used to dispose of the BLOB or
** string after SQLite has finished with it. ^The destructor is called
-** to dispose of the BLOB or string even if the call to sqlite3_bind_blob(),
-** sqlite3_bind_text(), or sqlite3_bind_text16() fails.
+** to dispose of the BLOB or string even if the call to bind API fails.
** ^If the fifth argument is
** the special value [SQLITE_STATIC], then SQLite assumes that the
** information is in static, unmanaged space and does not need to be freed.
@@ -3383,6 +3446,14 @@ typedef struct sqlite3_context sqlite3_context;
** SQLite makes its own private copy of the data immediately, before
** the sqlite3_bind_*() routine returns.
**
+** ^The sixth argument to sqlite3_bind_text64() must be one of
+** [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE]
+** to specify the encoding of the text in the third parameter. If
+** the sixth argument to sqlite3_bind_text64() is not one of the
+** allowed values shown above, or if the text encoding is different
+** from the encoding specified by the sixth parameter, then the behavior
+** is undefined.
+**
** ^The sqlite3_bind_zeroblob() routine binds a BLOB of length N that
** is filled with zeroes. ^A zeroblob uses a fixed amount of memory
** (just an integer to hold its size) while it is being processed.
@@ -3403,6 +3474,9 @@ typedef struct sqlite3_context sqlite3_context;
**
** ^The sqlite3_bind_* routines return [SQLITE_OK] on success or an
** [error code] if anything goes wrong.
+** ^[SQLITE_TOOBIG] might be returned if the size of a string or BLOB
+** exceeds limits imposed by [sqlite3_limit]([SQLITE_LIMIT_LENGTH]) or
+** [SQLITE_MAX_LENGTH].
** ^[SQLITE_RANGE] is returned if the parameter
** index is out of range. ^[SQLITE_NOMEM] is returned if malloc() fails.
**
@@ -3410,12 +3484,16 @@ typedef struct sqlite3_context sqlite3_context;
** [sqlite3_bind_parameter_name()], and [sqlite3_bind_parameter_index()].
*/
SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_blob64(sqlite3_stmt*, int, const void*, sqlite3_uint64,
+ void(*)(void*));
SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
-SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
+SQLITE_API int sqlite3_bind_text(sqlite3_stmt*,int,const char*,int,void(*)(void*));
SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
+SQLITE_API int sqlite3_bind_text64(sqlite3_stmt*, int, const char*, sqlite3_uint64,
+ void(*)(void*), unsigned char encoding);
SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);
SQLITE_API int sqlite3_bind_zeroblob(sqlite3_stmt*, int, int n);
@@ -4107,9 +4185,9 @@ SQLITE_API int sqlite3_create_function_v2(
** These constant define integer codes that represent the various
** text encodings supported by SQLite.
*/
-#define SQLITE_UTF8 1
-#define SQLITE_UTF16LE 2
-#define SQLITE_UTF16BE 3
+#define SQLITE_UTF8 1 /* IMP: R-37514-35566 */
+#define SQLITE_UTF16LE 2 /* IMP: R-03371-37637 */
+#define SQLITE_UTF16BE 3 /* IMP: R-51971-34154 */
#define SQLITE_UTF16 4 /* Use native byte order */
#define SQLITE_ANY 5 /* Deprecated */
#define SQLITE_UTF16_ALIGNED 8 /* sqlite3_create_collation only */
@@ -4164,7 +4242,7 @@ SQLITE_API SQLITE_DEPRECATED int sqlite3_memory_alarm(void(*)(void*,sqlite3_int6
** object results in undefined behavior.
**
** ^These routines work just like the corresponding [column access functions]
-** except that these routines take a single [protected sqlite3_value] object
+** except that these routines take a single [protected sqlite3_value] object
** pointer instead of a [sqlite3_stmt*] pointer and an integer column number.
**
** ^The sqlite3_value_text16() interface extracts a UTF-16 string
@@ -4411,6 +4489,10 @@ typedef void (*sqlite3_destructor_type)(void*);
** set the return value of the application-defined function to be
** a text string which is represented as UTF-8, UTF-16 native byte order,
** UTF-16 little endian, or UTF-16 big endian, respectively.
+** ^The sqlite3_result_text64() interface sets the return value of an
+** application-defined function to be a text string in an encoding
+** specified by the fifth (and last) parameter, which must be one
+** of [SQLITE_UTF8], [SQLITE_UTF16], [SQLITE_UTF16BE], or [SQLITE_UTF16LE].
** ^SQLite takes the text result from the application from
** the 2nd parameter of the sqlite3_result_text* interfaces.
** ^If the 3rd parameter to the sqlite3_result_text* interfaces
@@ -4454,6 +4536,8 @@ typedef void (*sqlite3_destructor_type)(void*);
** the [sqlite3_context] pointer, the results are undefined.
*/
SQLITE_API void sqlite3_result_blob(sqlite3_context*, const void*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_blob64(sqlite3_context*,const void*,
+ sqlite3_uint64,void(*)(void*));
SQLITE_API void sqlite3_result_double(sqlite3_context*, double);
SQLITE_API void sqlite3_result_error(sqlite3_context*, const char*, int);
SQLITE_API void sqlite3_result_error16(sqlite3_context*, const void*, int);
@@ -4464,6 +4548,8 @@ SQLITE_API void sqlite3_result_int(sqlite3_context*, int);
SQLITE_API void sqlite3_result_int64(sqlite3_context*, sqlite3_int64);
SQLITE_API void sqlite3_result_null(sqlite3_context*);
SQLITE_API void sqlite3_result_text(sqlite3_context*, const char*, int, void(*)(void*));
+SQLITE_API void sqlite3_result_text64(sqlite3_context*, const char*,sqlite3_uint64,
+ void(*)(void*), unsigned char encoding);
SQLITE_API void sqlite3_result_text16(sqlite3_context*, const void*, int, void(*)(void*));
SQLITE_API void sqlite3_result_text16le(sqlite3_context*, const void*, int,void(*)(void*));
SQLITE_API void sqlite3_result_text16be(sqlite3_context*, const void*, int,void(*)(void*));
@@ -5083,20 +5169,27 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
/*
** CAPI3REF: Extract Metadata About A Column Of A Table
**
-** ^This routine returns metadata about a specific column of a specific
-** database table accessible using the [database connection] handle
-** passed as the first function argument.
+** ^(The sqlite3_table_column_metadata(X,D,T,C,....) routine returns
+** information about column C of table T in database D
+** on [database connection] X.)^ ^The sqlite3_table_column_metadata()
+** interface returns SQLITE_OK and fills in the non-NULL pointers in
+** the final five arguments with appropriate values if the specified
+** column exists. ^The sqlite3_table_column_metadata() interface returns
+** SQLITE_ERROR and if the specified column does not exist.
+** ^If the column-name parameter to sqlite3_table_column_metadata() is a
+** NULL pointer, then this routine simply checks for the existance of the
+** table and returns SQLITE_OK if the table exists and SQLITE_ERROR if it
+** does not.
**
** ^The column is identified by the second, third and fourth parameters to
-** this function. ^The second parameter is either the name of the database
+** this function. ^(The second parameter is either the name of the database
** (i.e. "main", "temp", or an attached database) containing the specified
-** table or NULL. ^If it is NULL, then all attached databases are searched
+** table or NULL.)^ ^If it is NULL, then all attached databases are searched
** for the table using the same algorithm used by the database engine to
** resolve unqualified table references.
**
** ^The third and fourth parameters to this function are the table and column
-** name of the desired column, respectively. Neither of these parameters
-** may be NULL.
+** name of the desired column, respectively.
**
** ^Metadata is returned by writing to the memory locations passed as the 5th
** and subsequent parameters to this function. ^Any of these arguments may be
@@ -5115,16 +5208,17 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
** </blockquote>)^
**
** ^The memory pointed to by the character pointers returned for the
-** declaration type and collation sequence is valid only until the next
+** declaration type and collation sequence is valid until the next
** call to any SQLite API function.
**
** ^If the specified table is actually a view, an [error code] is returned.
**
-** ^If the specified column is "rowid", "oid" or "_rowid_" and an
+** ^If the specified column is "rowid", "oid" or "_rowid_" and the table
+** is not a [WITHOUT ROWID] table and an
** [INTEGER PRIMARY KEY] column has been explicitly declared, then the output
** parameters are set for the explicitly declared column. ^(If there is no
-** explicitly declared [INTEGER PRIMARY KEY] column, then the output
-** parameters are set as follows:
+** [INTEGER PRIMARY KEY] column, then the outputs
+** for the [rowid] are set as follows:
**
** <pre>
** data type: "INTEGER"
@@ -5134,13 +5228,9 @@ SQLITE_API SQLITE_DEPRECATED void sqlite3_soft_heap_limit(int N);
** auto increment: 0
** </pre>)^
**
-** ^(This function may load one or more schemas from database files. If an
-** error occurs during this process, or if the requested table or column
-** cannot be found, an [error code] is returned and an error message left
-** in the [database connection] (to be retrieved using sqlite3_errmsg()).)^
-**
-** ^This API is only available if the library was compiled with the
-** [SQLITE_ENABLE_COLUMN_METADATA] C-preprocessor symbol defined.
+** ^This function causes all database schemas to be read from disk and
+** parsed, if that has not already been done, and returns an error if
+** any errors are encountered while loading the schema.
*/
SQLITE_API int sqlite3_table_column_metadata(
sqlite3 *db, /* Connection handle */
@@ -5593,26 +5683,42 @@ typedef struct sqlite3_blob sqlite3_blob;
** SELECT zColumn FROM zDb.zTable WHERE [rowid] = iRow;
** </pre>)^
**
+** ^(Parameter zDb is not the filename that contains the database, but
+** rather the symbolic name of the database. For attached databases, this is
+** the name that appears after the AS keyword in the [ATTACH] statement.
+** For the main database file, the database name is "main". For TEMP
+** tables, the database name is "temp".)^
+**
** ^If the flags parameter is non-zero, then the BLOB is opened for read
-** and write access. ^If it is zero, the BLOB is opened for read access.
-** ^It is not possible to open a column that is part of an index or primary
-** key for writing. ^If [foreign key constraints] are enabled, it is
-** not possible to open a column that is part of a [child key] for writing.
-**
-** ^Note that the database name is not the filename that contains
-** the database but rather the symbolic name of the database that
-** appears after the AS keyword when the database is connected using [ATTACH].
-** ^For the main database file, the database name is "main".
-** ^For TEMP tables, the database name is "temp".
-**
-** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is written
-** to *ppBlob. Otherwise an [error code] is returned and *ppBlob is set
-** to be a null pointer.)^
-** ^This function sets the [database connection] error code and message
-** accessible via [sqlite3_errcode()] and [sqlite3_errmsg()] and related
-** functions. ^Note that the *ppBlob variable is always initialized in a
-** way that makes it safe to invoke [sqlite3_blob_close()] on *ppBlob
-** regardless of the success or failure of this routine.
+** and write access. ^If the flags parameter is zero, the BLOB is opened for
+** read-only access.
+**
+** ^(On success, [SQLITE_OK] is returned and the new [BLOB handle] is stored
+** in *ppBlob. Otherwise an [error code] is returned and, unless the error
+** code is SQLITE_MISUSE, *ppBlob is set to NULL.)^ ^This means that, provided
+** the API is not misused, it is always safe to call [sqlite3_blob_close()]
+** on *ppBlob after this function it returns.
+**
+** This function fails with SQLITE_ERROR if any of the following are true:
+** <ul>
+** <li> ^(Database zDb does not exist)^,
+** <li> ^(Table zTable does not exist within database zDb)^,
+** <li> ^(Table zTable is a WITHOUT ROWID table)^,
+** <li> ^(Column zColumn does not exist)^,
+** <li> ^(Row iRow is not present in the table)^,
+** <li> ^(The specified column of row iRow contains a value that is not
+** a TEXT or BLOB value)^,
+** <li> ^(Column zColumn is part of an index, PRIMARY KEY or UNIQUE
+** constraint and the blob is being opened for read/write access)^,
+** <li> ^([foreign key constraints | Foreign key constraints] are enabled,
+** column zColumn is part of a [child key] definition and the blob is
+** being opened for read/write access)^.
+** </ul>
+**
+** ^Unless it returns SQLITE_MISUSE, this function sets the
+** [database connection] error code and message accessible via
+** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
+**
**
** ^(If the row that a BLOB handle points to is modified by an
** [UPDATE], [DELETE], or by [ON CONFLICT] side-effects
@@ -5630,13 +5736,9 @@ typedef struct sqlite3_blob sqlite3_blob;
** interface. Use the [UPDATE] SQL command to change the size of a
** blob.
**
-** ^The [sqlite3_blob_open()] interface will fail for a [WITHOUT ROWID]
-** table. Incremental BLOB I/O is not possible on [WITHOUT ROWID] tables.
-**
** ^The [sqlite3_bind_zeroblob()] and [sqlite3_result_zeroblob()] interfaces
-** and the built-in [zeroblob] SQL function can be used, if desired,
-** to create an empty, zero-filled blob in which to read or write using
-** this interface.
+** and the built-in [zeroblob] SQL function may be used to create a
+** zero-filled blob to read or write using the incremental-blob interface.
**
** To avoid a resource leak, every open [BLOB handle] should eventually
** be released by a call to [sqlite3_blob_close()].
@@ -5678,24 +5780,22 @@ SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_blob_reopen(sqlite3_blob *, sqlite3_i
/*
** CAPI3REF: Close A BLOB Handle
**
-** ^Closes an open [BLOB handle].
-**
-** ^Closing a BLOB shall cause the current transaction to commit
-** if there are no other BLOBs, no pending prepared statements, and the
-** database connection is in [autocommit mode].
-** ^If any writes were made to the BLOB, they might be held in cache
-** until the close operation if they will fit.
+** ^This function closes an open [BLOB handle]. ^(The BLOB handle is closed
+** unconditionally. Even if this routine returns an error code, the
+** handle is still closed.)^
**
-** ^(Closing the BLOB often forces the changes
-** out to disk and so if any I/O errors occur, they will likely occur
-** at the time when the BLOB is closed. Any errors that occur during
-** closing are reported as a non-zero return value.)^
+** ^If the blob handle being closed was opened for read-write access, and if
+** the database is in auto-commit mode and there are no other open read-write
+** blob handles or active write statements, the current transaction is
+** committed. ^If an error occurs while committing the transaction, an error
+** code is returned and the transaction rolled back.
**
-** ^(The BLOB is closed unconditionally. Even if this routine returns
-** an error code, the BLOB is still closed.)^
-**
-** ^Calling this routine with a null pointer (such as would be returned
-** by a failed call to [sqlite3_blob_open()]) is a harmless no-op.
+** Calling this function with an argument that is not a NULL pointer or an
+** open blob handle results in undefined behaviour. ^Calling this routine
+** with a null pointer (such as would be returned by a failed call to
+** [sqlite3_blob_open()]) is a harmless no-op. ^Otherwise, if this function
+** is passed a valid open blob handle, the values returned by the
+** sqlite3_errcode() and sqlite3_errmsg() functions are set before returning.
*/
SQLITE_API int sqlite3_blob_close(sqlite3_blob *);
@@ -5745,21 +5845,27 @@ SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
/*
** CAPI3REF: Write Data Into A BLOB Incrementally
**
-** ^This function is used to write data into an open [BLOB handle] from a
-** caller-supplied buffer. ^N bytes of data are copied from the buffer Z
-** into the open BLOB, starting at offset iOffset.
+** ^(This function is used to write data into an open [BLOB handle] from a
+** caller-supplied buffer. N bytes of data are copied from the buffer Z
+** into the open BLOB, starting at offset iOffset.)^
+**
+** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
+** Otherwise, an [error code] or an [extended error code] is returned.)^
+** ^Unless SQLITE_MISUSE is returned, this function sets the
+** [database connection] error code and message accessible via
+** [sqlite3_errcode()] and [sqlite3_errmsg()] and related functions.
**
** ^If the [BLOB handle] passed as the first argument was not opened for
** writing (the flags parameter to [sqlite3_blob_open()] was zero),
** this function returns [SQLITE_READONLY].
**
-** ^This function may only modify the contents of the BLOB; it is
+** This function may only modify the contents of the BLOB; it is
** not possible to increase the size of a BLOB using this API.
** ^If offset iOffset is less than N bytes from the end of the BLOB,
-** [SQLITE_ERROR] is returned and no data is written. ^If N is
-** less than zero [SQLITE_ERROR] is returned and no data is written.
-** The size of the BLOB (and hence the maximum value of N+iOffset)
-** can be determined using the [sqlite3_blob_bytes()] interface.
+** [SQLITE_ERROR] is returned and no data is written. The size of the
+** BLOB (and hence the maximum value of N+iOffset) can be determined
+** using the [sqlite3_blob_bytes()] interface. ^If N or iOffset are less
+** than zero [SQLITE_ERROR] is returned and no data is written.
**
** ^An attempt to write to an expired [BLOB handle] fails with an
** error code of [SQLITE_ABORT]. ^Writes to the BLOB that occurred
@@ -5768,9 +5874,6 @@ SQLITE_API int sqlite3_blob_read(sqlite3_blob *, void *Z, int N, int iOffset);
** have been overwritten by the statement that expired the BLOB handle
** or by other independent statements.
**
-** ^(On success, sqlite3_blob_write() returns SQLITE_OK.
-** Otherwise, an [error code] or an [extended error code] is returned.)^
-**
** This routine only works on a [BLOB handle] which has been created
** by a prior successful call to [sqlite3_blob_open()] and which has not
** been closed by [sqlite3_blob_close()]. Passing any other pointer in
@@ -5823,34 +5926,34 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
**
** The SQLite source code contains multiple implementations
** of these mutex routines. An appropriate implementation
-** is selected automatically at compile-time. ^(The following
+** is selected automatically at compile-time. The following
** implementations are available in the SQLite core:
**
** <ul>
** <li> SQLITE_MUTEX_PTHREADS
** <li> SQLITE_MUTEX_W32
** <li> SQLITE_MUTEX_NOOP
-** </ul>)^
+** </ul>
**
-** ^The SQLITE_MUTEX_NOOP implementation is a set of routines
+** The SQLITE_MUTEX_NOOP implementation is a set of routines
** that does no real locking and is appropriate for use in
-** a single-threaded application. ^The SQLITE_MUTEX_PTHREADS and
+** a single-threaded application. The SQLITE_MUTEX_PTHREADS and
** SQLITE_MUTEX_W32 implementations are appropriate for use on Unix
** and Windows.
**
-** ^(If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
+** If SQLite is compiled with the SQLITE_MUTEX_APPDEF preprocessor
** macro defined (with "-DSQLITE_MUTEX_APPDEF=1"), then no mutex
** implementation is included with the library. In this case the
** application must supply a custom mutex implementation using the
** [SQLITE_CONFIG_MUTEX] option of the sqlite3_config() function
** before calling sqlite3_initialize() or any other public sqlite3_
-** function that calls sqlite3_initialize().)^
+** function that calls sqlite3_initialize().
**
** ^The sqlite3_mutex_alloc() routine allocates a new
-** mutex and returns a pointer to it. ^If it returns NULL
-** that means that a mutex could not be allocated. ^SQLite
-** will unwind its stack and return an error. ^(The argument
-** to sqlite3_mutex_alloc() is one of these integer constants:
+** mutex and returns a pointer to it. ^The sqlite3_mutex_alloc()
+** routine returns NULL if it is unable to allocate the requested
+** mutex. The argument to sqlite3_mutex_alloc() must one of these
+** integer constants:
**
** <ul>
** <li> SQLITE_MUTEX_FAST
@@ -5863,7 +5966,8 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** <li> SQLITE_MUTEX_STATIC_PMEM
** <li> SQLITE_MUTEX_STATIC_APP1
** <li> SQLITE_MUTEX_STATIC_APP2
-** </ul>)^
+** <li> SQLITE_MUTEX_STATIC_APP3
+** </ul>
**
** ^The first two constants (SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE)
** cause sqlite3_mutex_alloc() to create
@@ -5871,14 +5975,14 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** is used but not necessarily so when SQLITE_MUTEX_FAST is used.
** The mutex implementation does not need to make a distinction
** between SQLITE_MUTEX_RECURSIVE and SQLITE_MUTEX_FAST if it does
-** not want to. ^SQLite will only request a recursive mutex in
-** cases where it really needs one. ^If a faster non-recursive mutex
+** not want to. SQLite will only request a recursive mutex in
+** cases where it really needs one. If a faster non-recursive mutex
** implementation is available on the host platform, the mutex subsystem
** might return such a mutex in response to SQLITE_MUTEX_FAST.
**
** ^The other allowed parameters to sqlite3_mutex_alloc() (anything other
** than SQLITE_MUTEX_FAST and SQLITE_MUTEX_RECURSIVE) each return
-** a pointer to a static preexisting mutex. ^Six static mutexes are
+** a pointer to a static preexisting mutex. ^Nine static mutexes are
** used by the current version of SQLite. Future versions of SQLite
** may add additional static mutexes. Static mutexes are for internal
** use by SQLite only. Applications that use SQLite mutexes should
@@ -5887,16 +5991,13 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
**
** ^Note that if one of the dynamic mutex parameters (SQLITE_MUTEX_FAST
** or SQLITE_MUTEX_RECURSIVE) is used then sqlite3_mutex_alloc()
-** returns a different mutex on every call. ^But for the static
+** returns a different mutex on every call. ^For the static
** mutex types, the same mutex is returned on every call that has
** the same type number.
**
** ^The sqlite3_mutex_free() routine deallocates a previously
-** allocated dynamic mutex. ^SQLite is careful to deallocate every
-** dynamic mutex that it allocates. The dynamic mutexes must not be in
-** use when they are deallocated. Attempting to deallocate a static
-** mutex results in undefined behavior. ^SQLite never deallocates
-** a static mutex.
+** allocated dynamic mutex. Attempting to deallocate a static
+** mutex results in undefined behavior.
**
** ^The sqlite3_mutex_enter() and sqlite3_mutex_try() routines attempt
** to enter a mutex. ^If another thread is already within the mutex,
@@ -5904,23 +6005,21 @@ SQLITE_API int sqlite3_vfs_unregister(sqlite3_vfs*);
** SQLITE_BUSY. ^The sqlite3_mutex_try() interface returns [SQLITE_OK]
** upon successful entry. ^(Mutexes created using
** SQLITE_MUTEX_RECURSIVE can be entered multiple times by the same thread.
-** In such cases the,
+** In such cases, the
** mutex must be exited an equal number of times before another thread
-** can enter.)^ ^(If the same thread tries to enter any other
-** kind of mutex more than once, the behavior is undefined.
-** SQLite will never exhibit
-** such behavior in its own use of mutexes.)^
+** can enter.)^ If the same thread tries to enter any mutex other
+** than an SQLITE_MUTEX_RECURSIVE more than once, the behavior is undefined.
**
** ^(Some systems (for example, Windows 95) do not support the operation
** implemented by sqlite3_mutex_try(). On those systems, sqlite3_mutex_try()
-** will always return SQLITE_BUSY. The SQLite core only ever uses
-** sqlite3_mutex_try() as an optimization so this is acceptable behavior.)^
+** will always return SQLITE_BUSY. The SQLite core only ever uses
+** sqlite3_mutex_try() as an optimization so this is acceptable
+** behavior.)^
**
** ^The sqlite3_mutex_leave() routine exits a mutex that was
-** previously entered by the same thread. ^(The behavior
+** previously entered by the same thread. The behavior
** is undefined if the mutex is not currently entered by the
-** calling thread or is not currently allocated. SQLite will
-** never do either.)^
+** calling thread or is not currently allocated.
**
** ^If the argument to sqlite3_mutex_enter(), sqlite3_mutex_try(), or
** sqlite3_mutex_leave() is a NULL pointer, then all three routines
@@ -5941,9 +6040,9 @@ SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
** used to allocate and use mutexes.
**
** Usually, the default mutex implementations provided by SQLite are
-** sufficient, however the user has the option of substituting a custom
+** sufficient, however the application has the option of substituting a custom
** implementation for specialized deployments or systems for which SQLite
-** does not provide a suitable implementation. In this case, the user
+** does not provide a suitable implementation. In this case, the application
** creates and populates an instance of this structure to pass
** to sqlite3_config() along with the [SQLITE_CONFIG_MUTEX] option.
** Additionally, an instance of this structure can be used as an
@@ -5984,13 +6083,13 @@ SQLITE_API void sqlite3_mutex_leave(sqlite3_mutex*);
** (i.e. it is acceptable to provide an implementation that segfaults if
** it is passed a NULL pointer).
**
-** The xMutexInit() method must be threadsafe. ^It must be harmless to
+** The xMutexInit() method must be threadsafe. It must be harmless to
** invoke xMutexInit() multiple times within the same process and without
** intervening calls to xMutexEnd(). Second and subsequent calls to
** xMutexInit() must be no-ops.
**
-** ^xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
-** and its associates). ^Similarly, xMutexAlloc() must not use SQLite memory
+** xMutexInit() must not use SQLite memory allocation ([sqlite3_malloc()]
+** and its associates). Similarly, xMutexAlloc() must not use SQLite memory
** allocation for a static mutex. ^However xMutexAlloc() may use SQLite
** memory allocation for a fast or recursive mutex.
**
@@ -6016,29 +6115,29 @@ struct sqlite3_mutex_methods {
** CAPI3REF: Mutex Verification Routines
**
** The sqlite3_mutex_held() and sqlite3_mutex_notheld() routines
-** are intended for use inside assert() statements. ^The SQLite core
+** are intended for use inside assert() statements. The SQLite core
** never uses these routines except inside an assert() and applications
-** are advised to follow the lead of the core. ^The SQLite core only
+** are advised to follow the lead of the core. The SQLite core only
** provides implementations for these routines when it is compiled
-** with the SQLITE_DEBUG flag. ^External mutex implementations
+** with the SQLITE_DEBUG flag. External mutex implementations
** are only required to provide these routines if SQLITE_DEBUG is
** defined and if NDEBUG is not defined.
**
-** ^These routines should return true if the mutex in their argument
+** These routines should return true if the mutex in their argument
** is held or not held, respectively, by the calling thread.
**
-** ^The implementation is not required to provide versions of these
+** The implementation is not required to provide versions of these
** routines that actually work. If the implementation does not provide working
** versions of these routines, it should at least provide stubs that always
** return true so that one does not get spurious assertion failures.
**
-** ^If the argument to sqlite3_mutex_held() is a NULL pointer then
+** If the argument to sqlite3_mutex_held() is a NULL pointer then
** the routine should return 1. This seems counter-intuitive since
** clearly the mutex cannot be held if it does not exist. But
** the reason the mutex does not exist is because the build is not
** using mutexes. And we do not want the assert() containing the
** call to sqlite3_mutex_held() to fail, so a non-zero return is
-** the appropriate thing to do. ^The sqlite3_mutex_notheld()
+** the appropriate thing to do. The sqlite3_mutex_notheld()
** interface should also return 1 when given a NULL pointer.
*/
#ifndef NDEBUG
@@ -6160,12 +6259,13 @@ SQLITE_API int sqlite3_test_control(int op, ...);
#define SQLITE_TESTCTRL_ISKEYWORD 16
#define SQLITE_TESTCTRL_SCRATCHMALLOC 17
#define SQLITE_TESTCTRL_LOCALTIME_FAULT 18
-#define SQLITE_TESTCTRL_EXPLAIN_STMT 19
+#define SQLITE_TESTCTRL_EXPLAIN_STMT 19 /* NOT USED */
#define SQLITE_TESTCTRL_NEVER_CORRUPT 20
#define SQLITE_TESTCTRL_VDBE_COVERAGE 21
#define SQLITE_TESTCTRL_BYTEORDER 22
#define SQLITE_TESTCTRL_ISINIT 23
-#define SQLITE_TESTCTRL_LAST 23
+#define SQLITE_TESTCTRL_SORTER_MMAP 24
+#define SQLITE_TESTCTRL_LAST 24
/*
** CAPI3REF: SQLite Runtime Status
@@ -6356,12 +6456,12 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** the current value is always zero.)^
**
** [[SQLITE_DBSTATUS_CACHE_USED]] ^(<dt>SQLITE_DBSTATUS_CACHE_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** memory used by all pager caches associated with the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_CACHE_USED is always 0.
**
** [[SQLITE_DBSTATUS_SCHEMA_USED]] ^(<dt>SQLITE_DBSTATUS_SCHEMA_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** memory used to store the schema for all databases associated
** with the connection - main, temp, and any [ATTACH]-ed databases.)^
** ^The full amount of memory used by the schemas is reported, even if the
@@ -6370,7 +6470,7 @@ SQLITE_API int sqlite3_db_status(sqlite3*, int op, int *pCur, int *pHiwtr, int r
** ^The highwater mark associated with SQLITE_DBSTATUS_SCHEMA_USED is always 0.
**
** [[SQLITE_DBSTATUS_STMT_USED]] ^(<dt>SQLITE_DBSTATUS_STMT_USED</dt>
-** <dd>This parameter returns the approximate number of of bytes of heap
+** <dd>This parameter returns the approximate number of bytes of heap
** and lookaside memory used by all prepared statements associated with
** the database connection.)^
** ^The highwater mark associated with SQLITE_DBSTATUS_STMT_USED is always 0.
@@ -6770,6 +6870,10 @@ typedef struct sqlite3_backup sqlite3_backup;
** must be different or else sqlite3_backup_init(D,N,S,M) will fail with
** an error.
**
+** ^A call to sqlite3_backup_init() will fail, returning SQLITE_ERROR, if
+** there is already a read or read-write transaction open on the
+** destination database.
+**
** ^If an error occurs within sqlite3_backup_init(D,N,S,M), then NULL is
** returned and an error code and error message are stored in the
** destination [database connection] D.
@@ -7093,12 +7197,10 @@ SQLITE_API void sqlite3_log(int iErrCode, const char *zFormat, ...);
** CAPI3REF: Write-Ahead Log Commit Hook
**
** ^The [sqlite3_wal_hook()] function is used to register a callback that
-** will be invoked each time a database connection commits data to a
-** [write-ahead log] (i.e. whenever a transaction is committed in
-** [journal_mode | journal_mode=WAL mode]).
+** is invoked each time data is committed to a database in wal mode.
**
-** ^The callback is invoked by SQLite after the commit has taken place and
-** the associated write-lock on the database released, so the implementation
+** ^(The callback is invoked by SQLite after the commit has taken place and
+** the associated write-lock on the database released)^, so the implementation
** may read, write or [checkpoint] the database as required.
**
** ^The first parameter passed to the callback function when it is invoked
@@ -7163,97 +7265,114 @@ SQLITE_API int sqlite3_wal_autocheckpoint(sqlite3 *db, int N);
/*
** CAPI3REF: Checkpoint a database
**
-** ^The [sqlite3_wal_checkpoint(D,X)] interface causes database named X
-** on [database connection] D to be [checkpointed]. ^If X is NULL or an
-** empty string, then a checkpoint is run on all databases of
-** connection D. ^If the database connection D is not in
-** [WAL | write-ahead log mode] then this interface is a harmless no-op.
-** ^The [sqlite3_wal_checkpoint(D,X)] interface initiates a
-** [sqlite3_wal_checkpoint_v2|PASSIVE] checkpoint.
-** Use the [sqlite3_wal_checkpoint_v2()] interface to get a FULL
-** or RESET checkpoint.
+** ^(The sqlite3_wal_checkpoint(D,X) is equivalent to
+** [sqlite3_wal_checkpoint_v2](D,X,[SQLITE_CHECKPOINT_PASSIVE],0,0).)^
**
-** ^The [wal_checkpoint pragma] can be used to invoke this interface
-** from SQL. ^The [sqlite3_wal_autocheckpoint()] interface and the
-** [wal_autocheckpoint pragma] can be used to cause this interface to be
-** run whenever the WAL reaches a certain size threshold.
+** In brief, sqlite3_wal_checkpoint(D,X) causes the content in the
+** [write-ahead log] for database X on [database connection] D to be
+** transferred into the database file and for the write-ahead log to
+** be reset. See the [checkpointing] documentation for addition
+** information.
**
-** See also: [sqlite3_wal_checkpoint_v2()]
+** This interface used to be the only way to cause a checkpoint to
+** occur. But then the newer and more powerful [sqlite3_wal_checkpoint_v2()]
+** interface was added. This interface is retained for backwards
+** compatibility and as a convenience for applications that need to manually
+** start a callback but which do not need the full power (and corresponding
+** complication) of [sqlite3_wal_checkpoint_v2()].
*/
SQLITE_API int sqlite3_wal_checkpoint(sqlite3 *db, const char *zDb);
/*
** CAPI3REF: Checkpoint a database
**
-** Run a checkpoint operation on WAL database zDb attached to database
-** handle db. The specific operation is determined by the value of the
-** eMode parameter:
+** ^(The sqlite3_wal_checkpoint_v2(D,X,M,L,C) interface runs a checkpoint
+** operation on database X of [database connection] D in mode M. Status
+** information is written back into integers pointed to by L and C.)^
+** ^(The M parameter must be a valid [checkpoint mode]:)^
**
** <dl>
** <dt>SQLITE_CHECKPOINT_PASSIVE<dd>
-** Checkpoint as many frames as possible without waiting for any database
-** readers or writers to finish. Sync the db file if all frames in the log
-** are checkpointed. This mode is the same as calling
-** sqlite3_wal_checkpoint(). The [sqlite3_busy_handler|busy-handler callback]
-** is never invoked.
+** ^Checkpoint as many frames as possible without waiting for any database
+** readers or writers to finish, then sync the database file if all frames
+** in the log were checkpointed. ^The [busy-handler callback]
+** is never invoked in the SQLITE_CHECKPOINT_PASSIVE mode.
+** ^On the other hand, passive mode might leave the checkpoint unfinished
+** if there are concurrent readers or writers.
**
** <dt>SQLITE_CHECKPOINT_FULL<dd>
-** This mode blocks (it invokes the
+** ^This mode blocks (it invokes the
** [sqlite3_busy_handler|busy-handler callback]) until there is no
** database writer and all readers are reading from the most recent database
-** snapshot. It then checkpoints all frames in the log file and syncs the
-** database file. This call blocks database writers while it is running,
-** but not database readers.
+** snapshot. ^It then checkpoints all frames in the log file and syncs the
+** database file. ^This mode blocks new database writers while it is pending,
+** but new database readers are allowed to continue unimpeded.
**
** <dt>SQLITE_CHECKPOINT_RESTART<dd>
-** This mode works the same way as SQLITE_CHECKPOINT_FULL, except after
-** checkpointing the log file it blocks (calls the
-** [sqlite3_busy_handler|busy-handler callback])
-** until all readers are reading from the database file only. This ensures
-** that the next client to write to the database file restarts the log file
-** from the beginning. This call blocks database writers while it is running,
-** but not database readers.
+** ^This mode works the same way as SQLITE_CHECKPOINT_FULL with the addition
+** that after checkpointing the log file it blocks (calls the
+** [busy-handler callback])
+** until all readers are reading from the database file only. ^This ensures
+** that the next writer will restart the log file from the beginning.
+** ^Like SQLITE_CHECKPOINT_FULL, this mode blocks new
+** database writer attempts while it is pending, but does not impede readers.
+**
+** <dt>SQLITE_CHECKPOINT_TRUNCATE<dd>
+** ^This mode works the same way as SQLITE_CHECKPOINT_RESTART with the
+** addition that it also truncates the log file to zero bytes just prior
+** to a successful return.
** </dl>
**
-** If pnLog is not NULL, then *pnLog is set to the total number of frames in
-** the log file before returning. If pnCkpt is not NULL, then *pnCkpt is set to
-** the total number of checkpointed frames (including any that were already
-** checkpointed when this function is called). *pnLog and *pnCkpt may be
-** populated even if sqlite3_wal_checkpoint_v2() returns other than SQLITE_OK.
-** If no values are available because of an error, they are both set to -1
-** before returning to communicate this to the caller.
-**
-** All calls obtain an exclusive "checkpoint" lock on the database file. If
+** ^If pnLog is not NULL, then *pnLog is set to the total number of frames in
+** the log file or to -1 if the checkpoint could not run because
+** of an error or because the database is not in [WAL mode]. ^If pnCkpt is not
+** NULL,then *pnCkpt is set to the total number of checkpointed frames in the
+** log file (including any that were already checkpointed before the function
+** was called) or to -1 if the checkpoint could not run due to an error or
+** because the database is not in WAL mode. ^Note that upon successful
+** completion of an SQLITE_CHECKPOINT_TRUNCATE, the log file will have been
+** truncated to zero bytes and so both *pnLog and *pnCkpt will be set to zero.
+**
+** ^All calls obtain an exclusive "checkpoint" lock on the database file. ^If
** any other process is running a checkpoint operation at the same time, the
-** lock cannot be obtained and SQLITE_BUSY is returned. Even if there is a
+** lock cannot be obtained and SQLITE_BUSY is returned. ^Even if there is a
** busy-handler configured, it will not be invoked in this case.
**
-** The SQLITE_CHECKPOINT_FULL and RESTART modes also obtain the exclusive
-** "writer" lock on the database file. If the writer lock cannot be obtained
-** immediately, and a busy-handler is configured, it is invoked and the writer
-** lock retried until either the busy-handler returns 0 or the lock is
-** successfully obtained. The busy-handler is also invoked while waiting for
-** database readers as described above. If the busy-handler returns 0 before
+** ^The SQLITE_CHECKPOINT_FULL, RESTART and TRUNCATE modes also obtain the
+** exclusive "writer" lock on the database file. ^If the writer lock cannot be
+** obtained immediately, and a busy-handler is configured, it is invoked and
+** the writer lock retried until either the busy-handler returns 0 or the lock
+** is successfully obtained. ^The busy-handler is also invoked while waiting for
+** database readers as described above. ^If the busy-handler returns 0 before
** the writer lock is obtained or while waiting for database readers, the
** checkpoint operation proceeds from that point in the same way as
** SQLITE_CHECKPOINT_PASSIVE - checkpointing as many frames as possible
-** without blocking any further. SQLITE_BUSY is returned in this case.
+** without blocking any further. ^SQLITE_BUSY is returned in this case.
**
-** If parameter zDb is NULL or points to a zero length string, then the
-** specified operation is attempted on all WAL databases. In this case the
-** values written to output parameters *pnLog and *pnCkpt are undefined. If
+** ^If parameter zDb is NULL or points to a zero length string, then the
+** specified operation is attempted on all WAL databases [attached] to
+** [database connection] db. In this case the
+** values written to output parameters *pnLog and *pnCkpt are undefined. ^If
** an SQLITE_BUSY error is encountered when processing one or more of the
** attached WAL databases, the operation is still attempted on any remaining
-** attached databases and SQLITE_BUSY is returned to the caller. If any other
+** attached databases and SQLITE_BUSY is returned at the end. ^If any other
** error occurs while processing an attached database, processing is abandoned
-** and the error code returned to the caller immediately. If no error
+** and the error code is returned to the caller immediately. ^If no error
** (SQLITE_BUSY or otherwise) is encountered while processing the attached
** databases, SQLITE_OK is returned.
**
-** If database zDb is the name of an attached database that is not in WAL
-** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. If
+** ^If database zDb is the name of an attached database that is not in WAL
+** mode, SQLITE_OK is returned and both *pnLog and *pnCkpt set to -1. ^If
** zDb is not NULL (or a zero length string) and is not the name of any
** attached database, SQLITE_ERROR is returned to the caller.
+**
+** ^Unless it returns SQLITE_MISUSE,
+** the sqlite3_wal_checkpoint_v2() interface
+** sets the error information that is queried by
+** [sqlite3_errcode()] and [sqlite3_errmsg()].
+**
+** ^The [PRAGMA wal_checkpoint] command can be used to invoke this interface
+** from SQL.
*/
SQLITE_API int sqlite3_wal_checkpoint_v2(
sqlite3 *db, /* Database handle */
@@ -7264,16 +7383,18 @@ SQLITE_API int sqlite3_wal_checkpoint_v2(
);
/*
-** CAPI3REF: Checkpoint operation parameters
+** CAPI3REF: Checkpoint Mode Values
+** KEYWORDS: {checkpoint mode}
**
-** These constants can be used as the 3rd parameter to
-** [sqlite3_wal_checkpoint_v2()]. See the [sqlite3_wal_checkpoint_v2()]
-** documentation for additional information about the meaning and use of
-** each of these values.
+** These constants define all valid values for the "checkpoint mode" passed
+** as the third parameter to the [sqlite3_wal_checkpoint_v2()] interface.
+** See the [sqlite3_wal_checkpoint_v2()] documentation for details on the
+** meaning of each of these checkpoint modes.
*/
-#define SQLITE_CHECKPOINT_PASSIVE 0
-#define SQLITE_CHECKPOINT_FULL 1
-#define SQLITE_CHECKPOINT_RESTART 2
+#define SQLITE_CHECKPOINT_PASSIVE 0 /* Do as much as possible w/o blocking */
+#define SQLITE_CHECKPOINT_FULL 1 /* Wait for writers, then checkpoint */
+#define SQLITE_CHECKPOINT_RESTART 2 /* Like FULL but wait for for readers */
+#define SQLITE_CHECKPOINT_TRUNCATE 3 /* Like RESTART but also truncate WAL */
/*
** CAPI3REF: Virtual Table Interface Configuration
@@ -7362,6 +7483,106 @@ SQLITE_API int sqlite3_vtab_on_conflict(sqlite3 *);
/* #define SQLITE_ABORT 4 // Also an error code */
#define SQLITE_REPLACE 5
+/*
+** CAPI3REF: Prepared Statement Scan Status Opcodes
+** KEYWORDS: {scanstatus options}
+**
+** The following constants can be used for the T parameter to the
+** [sqlite3_stmt_scanstatus(S,X,T,V)] interface. Each constant designates a
+** different metric for sqlite3_stmt_scanstatus() to return.
+**
+** When the value returned to V is a string, space to hold that string is
+** managed by the prepared statement S and will be automatically freed when
+** S is finalized.
+**
+** <dl>
+** [[SQLITE_SCANSTAT_NLOOP]] <dt>SQLITE_SCANSTAT_NLOOP</dt>
+** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be
+** set to the total number of times that the X-th loop has run.</dd>
+**
+** [[SQLITE_SCANSTAT_NVISIT]] <dt>SQLITE_SCANSTAT_NVISIT</dt>
+** <dd>^The [sqlite3_int64] variable pointed to by the T parameter will be set
+** to the total number of rows examined by all iterations of the X-th loop.</dd>
+**
+** [[SQLITE_SCANSTAT_EST]] <dt>SQLITE_SCANSTAT_EST</dt>
+** <dd>^The "double" variable pointed to by the T parameter will be set to the
+** query planner's estimate for the average number of rows output from each
+** iteration of the X-th loop. If the query planner's estimates was accurate,
+** then this value will approximate the quotient NVISIT/NLOOP and the
+** product of this value for all prior loops with the same SELECTID will
+** be the NLOOP value for the current loop.
+**
+** [[SQLITE_SCANSTAT_NAME]] <dt>SQLITE_SCANSTAT_NAME</dt>
+** <dd>^The "const char *" variable pointed to by the T parameter will be set
+** to a zero-terminated UTF-8 string containing the name of the index or table
+** used for the X-th loop.
+**
+** [[SQLITE_SCANSTAT_EXPLAIN]] <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
+** <dd>^The "const char *" variable pointed to by the T parameter will be set
+** to a zero-terminated UTF-8 string containing the [EXPLAIN QUERY PLAN]
+** description for the X-th loop.
+**
+** [[SQLITE_SCANSTAT_SELECTID]] <dt>SQLITE_SCANSTAT_SELECT</dt>
+** <dd>^The "int" variable pointed to by the T parameter will be set to the
+** "select-id" for the X-th loop. The select-id identifies which query or
+** subquery the loop is part of. The main query has a select-id of zero.
+** The select-id is the same value as is output in the first column
+** of an [EXPLAIN QUERY PLAN] query.
+** </dl>
+*/
+#define SQLITE_SCANSTAT_NLOOP 0
+#define SQLITE_SCANSTAT_NVISIT 1
+#define SQLITE_SCANSTAT_EST 2
+#define SQLITE_SCANSTAT_NAME 3
+#define SQLITE_SCANSTAT_EXPLAIN 4
+#define SQLITE_SCANSTAT_SELECTID 5
+
+/*
+** CAPI3REF: Prepared Statement Scan Status
+**
+** This interface returns information about the predicted and measured
+** performance for pStmt. Advanced applications can use this
+** interface to compare the predicted and the measured performance and
+** issue warnings and/or rerun [ANALYZE] if discrepancies are found.
+**
+** Since this interface is expected to be rarely used, it is only
+** available if SQLite is compiled using the [SQLITE_ENABLE_STMT_SCANSTATUS]
+** compile-time option.
+**
+** The "iScanStatusOp" parameter determines which status information to return.
+** The "iScanStatusOp" must be one of the [scanstatus options] or the behavior
+** of this interface is undefined.
+** ^The requested measurement is written into a variable pointed to by
+** the "pOut" parameter.
+** Parameter "idx" identifies the specific loop to retrieve statistics for.
+** Loops are numbered starting from zero. ^If idx is out of range - less than
+** zero or greater than or equal to the total number of loops used to implement
+** the statement - a non-zero value is returned and the variable that pOut
+** points to is unchanged.
+**
+** ^Statistics might not be available for all loops in all statements. ^In cases
+** where there exist loops with no available statistics, this function behaves
+** as if the loop did not exist - it returns non-zero and leave the variable
+** that pOut points to unchanged.
+**
+** See also: [sqlite3_stmt_scanstatus_reset()]
+*/
+SQLITE_API SQLITE_EXPERIMENTAL int sqlite3_stmt_scanstatus(
+ sqlite3_stmt *pStmt, /* Prepared statement for which info desired */
+ int idx, /* Index of loop to report on */
+ int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */
+ void *pOut /* Result written here */
+);
+
+/*
+** CAPI3REF: Zero Scan-Status Counters
+**
+** ^Zero all [sqlite3_stmt_scanstatus()] related event counters.
+**
+** This API is only available if the library is built with pre-processor
+** symbol [SQLITE_ENABLE_STMT_SCANSTATUS] defined.
+*/
+SQLITE_API SQLITE_EXPERIMENTAL void sqlite3_stmt_scanstatus_reset(sqlite3_stmt*);
/*