xref: /aosp_15_r20/external/dynamic_depth/internal/xmpmeta/xml/search.h (revision a62be0856e8e1158f43b03e41bbad10f4d005fde)
1*a62be085SSadaf Ebrahimi #ifndef DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SEARCH_H_  // NOLINT
2*a62be085SSadaf Ebrahimi #define DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SEARCH_H_  // NOLINT
3*a62be085SSadaf Ebrahimi 
4*a62be085SSadaf Ebrahimi #include <libxml/tree.h>
5*a62be085SSadaf Ebrahimi 
6*a62be085SSadaf Ebrahimi // Performs searches an XML tree.
7*a62be085SSadaf Ebrahimi namespace dynamic_depth {
8*a62be085SSadaf Ebrahimi namespace xmpmeta {
9*a62be085SSadaf Ebrahimi namespace xml {
10*a62be085SSadaf Ebrahimi 
11*a62be085SSadaf Ebrahimi // Depth-first search on the nodes in this XML doc.
12*a62be085SSadaf Ebrahimi // Performs Depth first search on the child XML elements in order.
13*a62be085SSadaf Ebrahimi // Returns the first child element with a matching node name. If not found,
14*a62be085SSadaf Ebrahimi // returns a null pointer.
15*a62be085SSadaf Ebrahimi xmlNodePtr DepthFirstSearch(const xmlDocPtr parent, const char* name);
16*a62be085SSadaf Ebrahimi 
17*a62be085SSadaf Ebrahimi // Returns the first child element with a matching prefix and name.
18*a62be085SSadaf Ebrahimi // If prefix is null or empty, this has the same effect as the method abouve.
19*a62be085SSadaf Ebrahimi // Otherwise, the resulting node's namespace and its name must not be null.
20*a62be085SSadaf Ebrahimi xmlNodePtr DepthFirstSearch(const xmlDocPtr parent, const char* prefix,
21*a62be085SSadaf Ebrahimi                             const char* name);
22*a62be085SSadaf Ebrahimi 
23*a62be085SSadaf Ebrahimi // Depth-first search on the parent, for a child element with the given name.
24*a62be085SSadaf Ebrahimi // The element name excludes its prefix.
25*a62be085SSadaf Ebrahimi // Returns a null pointer if no matching element is found.
26*a62be085SSadaf Ebrahimi xmlNodePtr DepthFirstSearch(const xmlNodePtr parent, const char* name);
27*a62be085SSadaf Ebrahimi 
28*a62be085SSadaf Ebrahimi // Returns the first child element with a matching prefix and name.
29*a62be085SSadaf Ebrahimi // If prefix is null or empty, this has the same effect as the method abouve.
30*a62be085SSadaf Ebrahimi // Otherwise, the resulting node's namespace and its name must not be null.
31*a62be085SSadaf Ebrahimi xmlNodePtr DepthFirstSearch(const xmlNodePtr parent, const char* prefix,
32*a62be085SSadaf Ebrahimi                             const char* name);
33*a62be085SSadaf Ebrahimi 
34*a62be085SSadaf Ebrahimi }  // namespace xml
35*a62be085SSadaf Ebrahimi }  // namespace xmpmeta
36*a62be085SSadaf Ebrahimi }  // namespace dynamic_depth
37*a62be085SSadaf Ebrahimi 
38*a62be085SSadaf Ebrahimi #endif // DYNAMIC_DEPTH_INTERNAL_XMPMETA_XML_SEARCH_H_  // NOLINT
39