15#include <libxml/tree.h>
36 pcmk__assert((table != NULL) && (
id != NULL) && (referrer != NULL));
38 idref = g_hash_table_lookup(table,
id);
44 for (GList *iter = idref->
refs; iter != NULL; iter = iter->next) {
45 if (pcmk__str_eq(referrer, (
const char *) iter->data,
51 crm_trace(
"Added ID %s referrer %s",
id, referrer);
67 g_list_free_full(idref->
refs, free);
88 const char *ref = NULL;
100 if (search == NULL) {
110 "a valid object " QB_XS
" xpath=%s",
111 xml->name, ref, xpath);
140 if (resolved == NULL) {
#define pcmk__assert_alloc(nmemb, size)
#define crm_trace(fmt, args...)
#define pcmk__config_err(fmt...)
pcmk__action_result_t result
#define pcmk__assert(expr)
char * crm_strdup_printf(char const *format,...) G_GNUC_PRINTF(1
#define pcmk__str_copy(str)
Wrappers for and extensions to libxml2.
const char * crm_element_value(const xmlNode *data, const char *name)
Retrieve the value of an XML attribute.
xmlNode * pcmk__xe_first_child(const xmlNode *parent, const char *node_name, const char *attr_n, const char *attr_v)
xmlNode * pcmk__xe_next(const xmlNode *node, const char *element_name)
GList * pcmk__xe_dereference_children(const xmlNode *xml, const char *element_name)
xmlNode * pcmk__xe_resolve_idref(xmlNode *xml, xmlNode *search)
void pcmk__free_idref(gpointer data)
void pcmk__add_idref(GHashTable *table, const char *id, const char *referrer)
xmlNode * pcmk__xpath_find_one(xmlDoc *doc, const char *path, uint8_t level)