This source file includes following definitions.
- numXpathResults
1
2
3
4
5
6
7
8
9
10 #ifndef PCMK__CRM_COMMON_XML__H
11 #define PCMK__CRM_COMMON_XML__H
12
13
14 #include <stdio.h>
15 #include <sys/types.h>
16 #include <unistd.h>
17
18 #include <stdlib.h>
19 #include <errno.h>
20 #include <fcntl.h>
21
22 #include <libxml/tree.h>
23 #include <libxml/xpath.h>
24
25 #include <crm/crm.h>
26 #include <crm/common/nvpair.h>
27 #include <crm/common/schemas.h>
28 #include <crm/common/xml_io.h>
29 #include <crm/common/xml_names.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35
36
37
38
39
40
41 typedef const xmlChar *pcmkXmlStr;
42
43
44
45
46
47
48
49 xmlNode *get_xpath_object(const char *xpath, xmlNode * xml_obj, int error_level);
50
51 char *calculate_on_disk_digest(xmlNode * local_cib);
52 char *calculate_operation_digest(xmlNode * local_cib, const char *version);
53 char *calculate_xml_versioned_digest(xmlNode * input, gboolean sort, gboolean do_filter,
54 const char *version);
55
56
57
58
59
60
61
62 void crm_xml_init(void);
63
64 void crm_xml_cleanup(void);
65
66 void pcmk_free_xml_subtree(xmlNode *xml);
67
68
69 void free_xml(xmlNode * child);
70
71 xmlNode *sorted_xml(xmlNode * input, xmlNode * parent, gboolean recursive);
72 xmlXPathObjectPtr xpath_search(const xmlNode *xml_top, const char *path);
73 void crm_foreach_xpath_result(xmlNode *xml, const char *xpath,
74 void (*helper)(xmlNode*, void*), void *user_data);
75 xmlNode *expand_idref(xmlNode * input, xmlNode * top);
76
77 void freeXpathObject(xmlXPathObjectPtr xpathObj);
78 xmlNode *getXpathResult(xmlXPathObjectPtr xpathObj, int index);
79 void dedupXpathResults(xmlXPathObjectPtr xpathObj);
80
81 static inline int numXpathResults(xmlXPathObjectPtr xpathObj)
82 {
83 if(xpathObj == NULL || xpathObj->nodesetval == NULL) {
84 return 0;
85 }
86 return xpathObj->nodesetval->nodeNr;
87 }
88
89 bool xml_tracking_changes(xmlNode * xml);
90 bool xml_document_dirty(xmlNode *xml);
91 void xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enforce_acls);
92 void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml);
93 void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml);
94 void xml_accept_changes(xmlNode * xml);
95 bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]);
96
97 xmlNode *xml_create_patchset(
98 int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version);
99 int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version);
100
101 void patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, bool with_digest);
102
103 void crm_xml_sanitize_id(char *id);
104 void crm_xml_set_id(xmlNode *xml, const char *format, ...) G_GNUC_PRINTF(2, 3);
105
106 #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1)
107 #include <crm/common/xml_compat.h>
108 #endif
109
110 #ifdef __cplusplus
111 }
112 #endif
113
114 #endif