1[PATCH] ensure internal print operations are declared before use
2
3Stock rapidxml-1.13 does not allow implementers of the
4`rapidxml_print.hpp` header to build under GCC 4.7 (or newer) due to
5compliation issues. This is a result of "Name lookup changes" introduced
6in GCC 4.7 [1]. The following adds forward declarations required to
7compile with GCC 4.7+.
8
9This issue has been mentioned upstream [2], but it has yet to be fixed
10in official sources.
11
12[1]: https://gcc.gnu.org/gcc-4.7/porting_to.html
13[2]: https://sourceforge.net/p/rapidxml/bugs/16/
14
15Signed-off-by: James Knight <james.knight@rockwellcollins.com>
16
17Index: b/rapidxml_print.hpp
18===================================================================
19--- a/rapidxml_print.hpp
20+++ b/rapidxml_print.hpp
21@@ -101,7 +101,16 @@
22
23         ///////////////////////////////////////////////////////////////////////////
24         // Internal printing operations
25-
26+
27+        template<class OutIt, class Ch> inline OutIt print_cdata_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
28+        template<class OutIt, class Ch> inline OutIt print_children(OutIt out, const xml_node<Ch> *node, int flags, int indent);
29+        template<class OutIt, class Ch> inline OutIt print_comment_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
30+        template<class OutIt, class Ch> inline OutIt print_data_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
31+        template<class OutIt, class Ch> inline OutIt print_declaration_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
32+        template<class OutIt, class Ch> inline OutIt print_doctype_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
33+        template<class OutIt, class Ch> inline OutIt print_element_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
34+        template<class OutIt, class Ch> inline OutIt print_pi_node(OutIt out, const xml_node<Ch> *node, int flags, int indent);
35+
36         // Print node
37         template<class OutIt, class Ch>
38         inline OutIt print_node(OutIt out, const xml_node<Ch> *node, int flags, int indent)
39