|  | // Copyright 2016 The PDFium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|  |  | 
|  | #ifndef PUBLIC_FPDF_STRUCTTREE_H_ | 
|  | #define PUBLIC_FPDF_STRUCTTREE_H_ | 
|  |  | 
|  | // clang-format off | 
|  | // NOLINTNEXTLINE(build/include) | 
|  | #include "fpdfview.h" | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | // Function: FPDF_StructTree_GetForPage | 
|  | //          Get the structure tree for a page. | 
|  | // Parameters: | 
|  | //          page        -   Handle to the page, as returned by FPDF_LoadPage(). | 
|  | // Return value: | 
|  | //          A handle to the structure tree or NULL on error. The caller owns the | 
|  | //          returned handle and must use FPDF_StructTree_Close() to release it. | 
|  | //          The handle should be released before |page| gets released. | 
|  | FPDF_EXPORT FPDF_STRUCTTREE FPDF_CALLCONV | 
|  | FPDF_StructTree_GetForPage(FPDF_PAGE page); | 
|  |  | 
|  | // Function: FPDF_StructTree_Close | 
|  | //          Release a resource allocated by FPDF_StructTree_GetForPage(). | 
|  | // Parameters: | 
|  | //          struct_tree -   Handle to the structure tree, as returned by | 
|  | //                          FPDF_StructTree_LoadPage(). | 
|  | // Return value: | 
|  | //          None. | 
|  | FPDF_EXPORT void FPDF_CALLCONV | 
|  | FPDF_StructTree_Close(FPDF_STRUCTTREE struct_tree); | 
|  |  | 
|  | // Function: FPDF_StructTree_CountChildren | 
|  | //          Count the number of children for the structure tree. | 
|  | // Parameters: | 
|  | //          struct_tree -   Handle to the structure tree, as returned by | 
|  | //                          FPDF_StructTree_LoadPage(). | 
|  | // Return value: | 
|  | //          The number of children, or -1 on error. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructTree_CountChildren(FPDF_STRUCTTREE struct_tree); | 
|  |  | 
|  | // Function: FPDF_StructTree_GetChildAtIndex | 
|  | //          Get a child in the structure tree. | 
|  | // Parameters: | 
|  | //          struct_tree -   Handle to the structure tree, as returned by | 
|  | //                          FPDF_StructTree_LoadPage(). | 
|  | //          index       -   The index for the child, 0-based. | 
|  | // Return value: | 
|  | //          The child at the n-th index or NULL on error. The caller does not | 
|  | //          own the handle. The handle remains valid as long as |struct_tree| | 
|  | //          remains valid. | 
|  | // Comments: | 
|  | //          The |index| must be less than the FPDF_StructTree_CountChildren() | 
|  | //          return value. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT FPDF_CALLCONV | 
|  | FPDF_StructTree_GetChildAtIndex(FPDF_STRUCTTREE struct_tree, int index); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetAltText | 
|  | //          Get the alt text for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          buffer         -   A buffer for output the alt text. May be NULL. | 
|  | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //          The number of bytes in the alt text, including the terminating NUL | 
|  | //          character. The number of bytes is returned regardless of the | 
|  | //          |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //          encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //          |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //          |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetAltText(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetActualText | 
|  | //          Get the actual text for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          buffer         -   A buffer for output the actual text. May be NULL. | 
|  | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //          The number of bytes in the actual text, including the terminating | 
|  | //          NUL character. The number of bytes is returned regardless of the | 
|  | //          |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //          encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //          |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //          |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetActualText(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetID | 
|  | //          Get the ID for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          buffer         -   A buffer for output the ID string. May be NULL. | 
|  | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //          The number of bytes in the ID string, including the terminating NUL | 
|  | //          character. The number of bytes is returned regardless of the | 
|  | //          |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //          encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //          |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //          |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetID(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetLang | 
|  | //          Get the case-insensitive IETF BCP 47 language code for an element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          buffer         -   A buffer for output the lang string. May be NULL. | 
|  | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //          The number of bytes in the ID string, including the terminating NUL | 
|  | //          character. The number of bytes is returned regardless of the | 
|  | //          |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //          encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //          |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //          |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetLang(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetStringAttribute | 
|  | //          Get a struct element attribute of type "name" or "string". | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          attr_name      -   The name of the attribute to retrieve. | 
|  | //          buffer         -   A buffer for output. May be NULL. | 
|  | //          buflen         -   The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //          The number of bytes in the attribute value, including the | 
|  | //          terminating NUL character. The number of bytes is returned | 
|  | //          regardless of the |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //          Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //          encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //          |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //          |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetStringAttribute(FPDF_STRUCTELEMENT struct_element, | 
|  | FPDF_BYTESTRING attr_name, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetMarkedContentID | 
|  | //          Get the marked content ID for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | // Return value: | 
|  | //          The marked content ID of the element. If no ID exists, returns | 
|  | //          -1. | 
|  | // Comments: | 
|  | //          FPDF_StructElement_GetMarkedContentIdAtIndex() may be able to | 
|  | //          extract more marked content IDs out of |struct_element|. This API | 
|  | //          may be deprecated in the future. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_GetMarkedContentID(FPDF_STRUCTELEMENT struct_element); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetType | 
|  | //           Get the type (/S) for a given element. | 
|  | // Parameters: | 
|  | //           struct_element - Handle to the struct element. | 
|  | //           buffer         - A buffer for output. May be NULL. | 
|  | //           buflen         - The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //           The number of bytes in the type, including the terminating NUL | 
|  | //           character. The number of bytes is returned regardless of the | 
|  | //           |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //           Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //           encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //           |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //           |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetType(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetObjType | 
|  | //           Get the object type (/Type) for a given element. | 
|  | // Parameters: | 
|  | //           struct_element - Handle to the struct element. | 
|  | //           buffer         - A buffer for output. May be NULL. | 
|  | //           buflen         - The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //           The number of bytes in the object type, including the terminating | 
|  | //           NUL character. The number of bytes is returned regardless of the | 
|  | //           |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //           Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //           encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //           |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //           |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetObjType(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetTitle | 
|  | //           Get the title (/T) for a given element. | 
|  | // Parameters: | 
|  | //           struct_element - Handle to the struct element. | 
|  | //           buffer         - A buffer for output. May be NULL. | 
|  | //           buflen         - The length of the buffer, in bytes. May be 0. | 
|  | // Return value: | 
|  | //           The number of bytes in the title, including the terminating NUL | 
|  | //           character. The number of bytes is returned regardless of the | 
|  | //           |buffer| and |buflen| parameters. | 
|  | // Comments: | 
|  | //           Regardless of the platform, the |buffer| is always in UTF-16LE | 
|  | //           encoding. The string is terminated by a UTF16 NUL character. If | 
|  | //           |buflen| is less than the required length, or |buffer| is NULL, | 
|  | //           |buffer| will not be modified. | 
|  | FPDF_EXPORT unsigned long FPDF_CALLCONV | 
|  | FPDF_StructElement_GetTitle(FPDF_STRUCTELEMENT struct_element, | 
|  | void* buffer, | 
|  | unsigned long buflen); | 
|  |  | 
|  | // Function: FPDF_StructElement_CountChildren | 
|  | //          Count the number of children for the structure element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | // Return value: | 
|  | //          The number of children, or -1 on error. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_CountChildren(FPDF_STRUCTELEMENT struct_element); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetChildAtIndex | 
|  | //          Get a child in the structure element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          index          -   The index for the child, 0-based. | 
|  | // Return value: | 
|  | //          The child at the n-th index or NULL on error. | 
|  | // Comments: | 
|  | //          If the child exists but is not an element, then this function will | 
|  | //          return NULL. This will also return NULL for out of bounds indices. | 
|  | //          The |index| must be less than the FPDF_StructElement_CountChildren() | 
|  | //          return value. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT FPDF_CALLCONV | 
|  | FPDF_StructElement_GetChildAtIndex(FPDF_STRUCTELEMENT struct_element, | 
|  | int index); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetChildMarkedContentID | 
|  | //          Get the child's content id | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          index          -   The index for the child, 0-based. | 
|  | // Return value: | 
|  | //          The marked content ID of the child. If no ID exists, returns -1. | 
|  | // Comments: | 
|  | //          If the child exists but is not a stream or object, then this | 
|  | //          function will return -1. This will also return -1 for out of bounds | 
|  | //          indices. Compared to FPDF_StructElement_GetMarkedContentIdAtIndex, | 
|  | //          it is scoped to the current page. | 
|  | //          The |index| must be less than the FPDF_StructElement_CountChildren() | 
|  | //          return value. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_GetChildMarkedContentID(FPDF_STRUCTELEMENT struct_element, | 
|  | int index); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetParent | 
|  | //          Get the parent of the structure element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | // Return value: | 
|  | //          The parent structure element or NULL on error. | 
|  | // Comments: | 
|  | //          If structure element is StructTreeRoot, then this function will | 
|  | //          return NULL. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT FPDF_CALLCONV | 
|  | FPDF_StructElement_GetParent(FPDF_STRUCTELEMENT struct_element); | 
|  |  | 
|  | // Function: FPDF_StructElement_GetAttributeCount | 
|  | //          Count the number of attributes for the structure element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | // Return value: | 
|  | //          The number of attributes, or -1 on error. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_GetAttributeCount(FPDF_STRUCTELEMENT struct_element); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetAttributeAtIndex | 
|  | //          Get an attribute object in the structure element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          index          -   The index for the attribute object, 0-based. | 
|  | // Return value: | 
|  | //          The attribute object at the n-th index or NULL on error. | 
|  | // Comments: | 
|  | //          If the attribute object exists but is not a dict, then this | 
|  | //          function will return NULL. This will also return NULL for out of | 
|  | //          bounds indices. The caller does not own the handle. The handle | 
|  | //          remains valid as long as |struct_element| remains valid. | 
|  | //          The |index| must be less than the | 
|  | //          FPDF_StructElement_GetAttributeCount() return value. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT_ATTR FPDF_CALLCONV | 
|  | FPDF_StructElement_GetAttributeAtIndex(FPDF_STRUCTELEMENT struct_element, int index); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetCount | 
|  | //          Count the number of attributes in a structure element attribute map. | 
|  | // Parameters: | 
|  | //          struct_attribute - Handle to the struct element attribute. | 
|  | // Return value: | 
|  | //          The number of attributes, or -1 on error. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetCount(FPDF_STRUCTELEMENT_ATTR struct_attribute); | 
|  |  | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetName | 
|  | //          Get the name of an attribute in a structure element attribute map. | 
|  | // Parameters: | 
|  | //          struct_attribute   - Handle to the struct element attribute. | 
|  | //          index              - The index of attribute in the map. | 
|  | //          buffer             - A buffer for output. May be NULL. This is only | 
|  | //                               modified if |buflen| is longer than the length | 
|  | //                               of the key. Optional, pass null to just | 
|  | //                               retrieve the size of the buffer needed. | 
|  | //          buflen             - The length of the buffer. | 
|  | //          out_buflen         - A pointer to variable that will receive the | 
|  | //                               minimum buffer size to contain the key. Not | 
|  | //                               filled if FALSE is returned. | 
|  | // Return value: | 
|  | //          TRUE if the operation was successful, FALSE otherwise. | 
|  | FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetName(FPDF_STRUCTELEMENT_ATTR struct_attribute, | 
|  | int index, | 
|  | void* buffer, | 
|  | unsigned long buflen, | 
|  | unsigned long* out_buflen); | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetValue | 
|  | //           Get a handle to a value for an attribute in a structure element | 
|  | //           attribute map. | 
|  | // Parameters: | 
|  | //           struct_attribute   - Handle to the struct element attribute. | 
|  | //           name               - The attribute name. | 
|  | // Return value: | 
|  | //           Returns a handle to the value associated with the input, if any. | 
|  | //           Returns NULL on failure. The caller does not own the handle. | 
|  | //           The handle remains valid as long as |struct_attribute| remains | 
|  | //           valid. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT_ATTR_VALUE FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetValue(FPDF_STRUCTELEMENT_ATTR struct_attribute, | 
|  | FPDF_BYTESTRING name); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetType | 
|  | //           Get the type of an attribute in a structure element attribute map. | 
|  | // Parameters: | 
|  | //           value - Handle to the value. | 
|  | // Return value: | 
|  | //           Returns the type of the value, or FPDF_OBJECT_UNKNOWN in case of | 
|  | //           failure. Note that this will never return FPDF_OBJECT_REFERENCE, as | 
|  | //           references are always dereferenced. | 
|  | FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetType(FPDF_STRUCTELEMENT_ATTR_VALUE value); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetBooleanValue | 
|  | //           Get the value of a boolean attribute in an attribute map as | 
|  | //           FPDF_BOOL. FPDF_StructElement_Attr_GetType() should have returned | 
|  | //           FPDF_OBJECT_BOOLEAN for this property. | 
|  | // Parameters: | 
|  | //           value     - Handle to the value. | 
|  | //           out_value - A pointer to variable that will receive the value. Not | 
|  | //                       filled if false is returned. | 
|  | // Return value: | 
|  | //           Returns TRUE if the attribute maps to a boolean value, FALSE | 
|  | //           otherwise. | 
|  | FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetBooleanValue(FPDF_STRUCTELEMENT_ATTR_VALUE value, | 
|  | FPDF_BOOL* out_value); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetNumberValue | 
|  | //           Get the value of a number attribute in an attribute map as float. | 
|  | //           FPDF_StructElement_Attr_GetType() should have returned | 
|  | //           FPDF_OBJECT_NUMBER for this property. | 
|  | // Parameters: | 
|  | //           value     - Handle to the value. | 
|  | //           out_value - A pointer to variable that will receive the value. Not | 
|  | //                       filled if false is returned. | 
|  | // Return value: | 
|  | //           Returns TRUE if the attribute maps to a number value, FALSE | 
|  | //           otherwise. | 
|  | FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetNumberValue(FPDF_STRUCTELEMENT_ATTR_VALUE value, | 
|  | float* out_value); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetStringValue | 
|  | //           Get the value of a string attribute in an attribute map as string. | 
|  | //           FPDF_StructElement_Attr_GetType() should have returned | 
|  | //           FPDF_OBJECT_STRING or FPDF_OBJECT_NAME for this property. | 
|  | // Parameters: | 
|  | //           value      - Handle to the value. | 
|  | //           buffer     - A buffer for holding the returned key in UTF-16LE. | 
|  | //                        This is only modified if |buflen| is longer than the | 
|  | //                        length of the key. Optional, pass null to just | 
|  | //                        retrieve the size of the buffer needed. | 
|  | //           buflen     - The length of the buffer. | 
|  | //           out_buflen - A pointer to variable that will receive the minimum | 
|  | //                        buffer size to contain the key. Not filled if FALSE is | 
|  | //                        returned. | 
|  | // Return value: | 
|  | //           Returns TRUE if the attribute maps to a string value, FALSE | 
|  | //           otherwise. | 
|  | FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetStringValue(FPDF_STRUCTELEMENT_ATTR_VALUE value, | 
|  | void* buffer, | 
|  | unsigned long buflen, | 
|  | unsigned long* out_buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetBlobValue | 
|  | //           Get the value of a blob attribute in an attribute map as string. | 
|  | // Parameters: | 
|  | //           value      - Handle to the value. | 
|  | //           buffer     - A buffer for holding the returned value. This is only | 
|  | //                        modified if |buflen| is at least as long as the length | 
|  | //                        of the value. Optional, pass null to just retrieve the | 
|  | //                        size of the buffer needed. | 
|  | //           buflen     - The length of the buffer. | 
|  | //           out_buflen - A pointer to variable that will receive the minimum | 
|  | //                        buffer size to contain the key. Not filled if FALSE is | 
|  | //                        returned. | 
|  | // Return value: | 
|  | //           Returns TRUE if the attribute maps to a string value, FALSE | 
|  | //           otherwise. | 
|  | FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetBlobValue(FPDF_STRUCTELEMENT_ATTR_VALUE value, | 
|  | void* buffer, | 
|  | unsigned long buflen, | 
|  | unsigned long* out_buflen); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_CountChildren | 
|  | //           Count the number of children values in an attribute. | 
|  | // Parameters: | 
|  | //           value - Handle to the value. | 
|  | // Return value: | 
|  | //           The number of children, or -1 on error. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_CountChildren(FPDF_STRUCTELEMENT_ATTR_VALUE value); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_Attr_GetChildAtIndex | 
|  | //           Get a child from an attribute. | 
|  | // Parameters: | 
|  | //           value - Handle to the value. | 
|  | //           index - The index for the child, 0-based. | 
|  | // Return value: | 
|  | //           The child at the n-th index or NULL on error. | 
|  | // Comments: | 
|  | //           The |index| must be less than the | 
|  | //           FPDF_StructElement_Attr_CountChildren() return value. | 
|  | FPDF_EXPORT FPDF_STRUCTELEMENT_ATTR_VALUE FPDF_CALLCONV | 
|  | FPDF_StructElement_Attr_GetChildAtIndex(FPDF_STRUCTELEMENT_ATTR_VALUE value, | 
|  | int index); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetMarkedContentIdCount | 
|  | //          Get the count of marked content ids for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | // Return value: | 
|  | //          The count of marked content ids or -1 if none exists. | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_GetMarkedContentIdCount(FPDF_STRUCTELEMENT struct_element); | 
|  |  | 
|  | // Experimental API. | 
|  | // Function: FPDF_StructElement_GetMarkedContentIdAtIndex | 
|  | //          Get the marked content id at a given index for a given element. | 
|  | // Parameters: | 
|  | //          struct_element -   Handle to the struct element. | 
|  | //          index          -   The index of the marked content id, 0-based. | 
|  | // Return value: | 
|  | //          The marked content ID of the element. If no ID exists, returns | 
|  | //          -1. | 
|  | // Comments: | 
|  | //          The |index| must be less than the | 
|  | //          FPDF_StructElement_GetMarkedContentIdCount() return value. | 
|  | //          This will likely supersede FPDF_StructElement_GetMarkedContentID(). | 
|  | FPDF_EXPORT int FPDF_CALLCONV | 
|  | FPDF_StructElement_GetMarkedContentIdAtIndex(FPDF_STRUCTELEMENT struct_element, | 
|  | int index); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }  // extern "C" | 
|  | #endif | 
|  |  | 
|  | #endif  // PUBLIC_FPDF_STRUCTTREE_H_ |