root/include/crm/common/xml.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. numXpathResults

   1 /*
   2  * Copyright 2004-2024 the Pacemaker project contributors
   3  *
   4  * The version control history for this file may have further details.
   5  *
   6  * This source code is licensed under the GNU Lesser General Public License
   7  * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY.
   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  * \file
  37  * \brief Wrappers for and extensions to libxml2
  38  * \ingroup core
  39  */
  40 
  41 typedef const xmlChar *pcmkXmlStr;
  42 
  43 
  44 /*
  45  * Searching & Modifying
  46  */
  47 
  48 // NOTE: sbd (as of at least 1.5.2) uses this
  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 // NOTE: sbd (as of at least 1.5.2) uses this
  57 /*!
  58  * \brief Initialize the CRM XML subsystem
  59  *
  60  * This method sets global XML settings and loads pacemaker schemas into the cache.
  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 // NOTE: sbd (as of at least 1.5.2) uses this
  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)
     /* [previous][next][first][last][top][bottom][index][help] */
  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

/* [previous][next][first][last][top][bottom][index][help] */