]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/tools/docca/include/docca/common.xsl
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / tools / docca / include / docca / common.xsl
1 <xsl:stylesheet version="3.0"
2 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3 xmlns:xs="http://www.w3.org/2001/XMLSchema"
4 xmlns:d="http://github.com/vinniefalco/docca"
5 exclude-result-prefixes="xs d">
6
7 <xsl:variable name="nl" select="'&#xA;'"/>
8
9 <xsl:variable name="leading-ns-regex" select="'^([^:&lt;]+::)+'"/>
10
11 <xsl:function name="d:extract-ns-without-suffix">
12 <xsl:param name="name"/>
13 <xsl:sequence select="replace(d:extract-ns($name), '::$', '')"/>
14 </xsl:function>
15
16 <xsl:function name="d:extract-ns">
17 <xsl:param name="name"/>
18 <xsl:sequence select="replace($name, '('||$leading-ns-regex||').*', '$1')"/>
19 </xsl:function>
20
21 <!-- Strip all C++ namespace prefixes that come at the beginning -->
22 <xsl:function name="d:strip-ns">
23 <xsl:param name="name"/>
24 <xsl:sequence select="replace($name, $leading-ns-regex, '')"/>
25 </xsl:function>
26
27 <!-- Strip the common C++ namespace prefix for the docs as a whole -->
28 <!-- ASSUMPTION: $doc-ns is defined in the customizing stylesheet -->
29 <xsl:function name="d:strip-doc-ns">
30 <xsl:param name="name"/>
31 <xsl:sequence select="if ($name eq $doc-ns)
32 then ''
33 else replace($name, '^'||$doc-ns||'::', '')"/>
34 </xsl:function>
35
36 <xsl:function name="d:make-id">
37 <xsl:param name="name"/>
38 <xsl:sequence select="d:perform-replacements($name, $id-replacements)"/>
39 </xsl:function>
40
41 <xsl:function name="d:perform-replacements">
42 <xsl:param name="name"/>
43 <xsl:param name="replacements"/>
44 <xsl:variable name="next" select="head($replacements)"/>
45 <xsl:variable name="rest" select="tail($replacements)"/>
46 <xsl:sequence select="if (exists($next))
47 then d:perform-replacements(replace($name, $next/@pattern, $next/@with), $rest)
48 else $name"/>
49 </xsl:function>
50
51 <xsl:variable name="id-replacements" select="$additional-id-replacements, $base-id-replacements"/>
52
53 <!-- Can be overridden by a customizing stylesheet -->
54 <xsl:variable name="additional-id-replacements" as="element(replace)*" select="()"/>
55
56 <xsl:variable name="base-id-replacements" as="element(replace)+">
57 <replace pattern="::" with="__"/>
58 <replace pattern="=" with="_eq_"/>
59 <replace pattern="!" with="_not_"/>
60 <replace pattern="->" with="_arrow_"/>
61 <replace pattern="&lt;" with="_lt_"/>
62 <replace pattern=">" with="_gt_"/>
63 <replace pattern="~$" with="_bnot_"/> <!-- bitwise NOT -->
64 <replace pattern="~" with="_dtor_"/> <!-- destructor -->
65 <replace pattern="\[" with="_lb_"/>
66 <replace pattern="\]" with="_rb_"/>
67 <replace pattern="\(" with="_lp_"/>
68 <replace pattern="\)" with="_rp_"/>
69 <replace pattern="\+" with="_plus_"/>
70 <replace pattern="-" with="_minus_"/>
71 <replace pattern="\*" with="_star_"/>
72 <replace pattern="/" with="_slash_"/>
73 <replace pattern=" " with="_"/>
74 </xsl:variable>
75
76 <xsl:function name="d:cleanup-param">
77 <xsl:param name="name"/>
78 <xsl:sequence select="d:perform-replacements($name, $param-replacements)"/>
79 </xsl:function>
80
81 <xsl:function name="d:cleanup-type">
82 <xsl:param name="name"/>
83 <xsl:sequence select="d:perform-replacements($name, $type-replacements)"/>
84 </xsl:function>
85
86 <xsl:variable name="param-replacements" select="$additional-param-replacements, $base-param-replacements"/>
87
88 <!-- Can be overridden by a customizing stylesheet -->
89 <xsl:variable name="additional-param-replacements" as="element(replace)*" select="()"/>
90
91 <xsl:variable name="base-param-replacements" as="element(replace)*">
92 <!-- Reformats '*', '&', and '...' in parameters, e.g. "void const*" -->
93 <replace pattern=" \*$" with="*"/>
94 <replace pattern=" (&amp;&amp;?)(\.{{3}})?$" with="$1$2"/>
95 </xsl:variable>
96
97 <!-- NOTE: $type-replacements includes $param-replacements -->
98 <xsl:variable name="type-replacements" select="$additional-type-replacements, $base-type-replacements, $param-replacements"/>
99
100 <!-- Can be overridden by a customizing stylesheet -->
101 <xsl:variable name="additional-type-replacements" as="element(replace)*" select="()"/>
102
103 <xsl:variable name="base-type-replacements" as="element(replace)*">
104 <replace pattern="^virtual$" with=""/>
105 </xsl:variable>
106
107 </xsl:stylesheet>