static gboolean cloud_config_simplify(GNode *node, __unused__ gpointer data) { if (node->data) { return false; } GNode *child = g_node_last_child(node); while (child) { if (child->data) { child = g_node_prev_sibling(child); continue; } GNode *remove = child; child = g_node_prev_sibling(child); g_node_append(node->parent, g_node_copy(remove)); g_node_unlink(remove); g_node_destroy(remove); } if (g_node_n_children(node) == 0) { g_node_unlink(node); g_node_destroy(node); } return false; }
/** * get_previous_sibling_node(GNode * cur_node) * @brief Gets previous sibling node, or wraps around if NULL * @param cur_node * @return GNode of sibling previous, or wrapped around */ GNode *get_prev_sibling_node(GNode * cur_node) { GNode *tmp_node = NULL; if ((tmp_node = g_node_prev_sibling(cur_node)) == NULL) { return g_node_last_sibling(cur_node); } return tmp_node; }
plist_t plist_get_prev_sibling(plist_t node) { return (plist_t) g_node_prev_sibling((GNode *) node); }
GNode* ada_gnode_prev_sibling (GNode * node) { return g_node_prev_sibling (node); }