diff options
Diffstat (limited to 'src/3rdparty')
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(¤tHeader->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(¤tHeader->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 Binary files differdeleted file mode 100644 index 44e7cdc173..0000000000 --- a/src/3rdparty/iaccessible2/generated/amd64/IA2TypeLibrary.tlb +++ /dev/null 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 Binary files differdeleted file mode 100644 index b4c56c7aaa..0000000000 --- a/src/3rdparty/iaccessible2/generated/x86/IA2TypeLibrary.tlb +++ /dev/null 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 - @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® Win32® API. For more information, refer to - <a href="http://msdn2.microsoft.com/en-us/library/bb401631.aspx">Interpreting HRESULT Values</a> - in MSDN®. - - 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® Active Accessibility®) 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® 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 + @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® Win32® 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®. + + 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® Active Accessibility®) 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® 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 <a> 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], ¬Used + 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*); /* |