reference.xsl 64 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3. <!--
  4. Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
  5. Distributed under the Boost Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. -->
  8. <xsl:output method="text"/>
  9. <xsl:strip-space elements="*"/>
  10. <xsl:preserve-space elements="para"/>
  11. <xsl:variable name="newline">
  12. <xsl:text>
  13. </xsl:text>
  14. </xsl:variable>
  15. <!--
  16. Loop over all top-level documentation elements (i.e. classes, functions,
  17. variables and typedefs at namespace scope). The elements are sorted by name.
  18. Anything in a "detail" namespace or with "_handler" in the name is skipped.
  19. -->
  20. <xsl:template match="/doxygen">
  21. <xsl:text>[/
  22. / Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com)
  23. /
  24. / Distributed under the Boost Software License, Version 1.0. (See accompanying
  25. / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  26. /]
  27. [section:reference Reference]
  28. [xinclude quickref.xml]
  29. [include requirements/asynchronous_operations.qbk]
  30. [include requirements/read_write_operations.qbk]
  31. [include requirements/synchronous_socket_operations.qbk]
  32. [include requirements/asynchronous_socket_operations.qbk]
  33. [include requirements/AcceptableProtocol.qbk]
  34. [include requirements/AcceptHandler.qbk]
  35. [include requirements/AsyncRandomAccessReadDevice.qbk]
  36. [include requirements/AsyncRandomAccessWriteDevice.qbk]
  37. [include requirements/AsyncReadStream.qbk]
  38. [include requirements/AsyncWriteStream.qbk]
  39. [include requirements/BufferedHandshakeHandler.qbk]
  40. [include requirements/CompletionCondition.qbk]
  41. [include requirements/CompletionHandler.qbk]
  42. [include requirements/ConnectCondition.qbk]
  43. [include requirements/ConnectHandler.qbk]
  44. [include requirements/ConstBufferSequence.qbk]
  45. [include requirements/DynamicBuffer.qbk]
  46. [include requirements/DynamicBuffer_v1.qbk]
  47. [include requirements/DynamicBuffer_v2.qbk]
  48. [include requirements/Endpoint.qbk]
  49. [include requirements/EndpointSequence.qbk]
  50. [include requirements/ExecutionContext.qbk]
  51. [include requirements/Executor.qbk]
  52. [include requirements/GettableSerialPortOption.qbk]
  53. [include requirements/GettableSocketOption.qbk]
  54. [include requirements/Handler.qbk]
  55. [include requirements/HandshakeHandler.qbk]
  56. [include requirements/InternetProtocol.qbk]
  57. [include requirements/IoControlCommand.qbk]
  58. [include requirements/IoObjectService.qbk]
  59. [include requirements/IteratorConnectHandler.qbk]
  60. [include requirements/LegacyCompletionHandler.qbk]
  61. [include requirements/MoveAcceptHandler.qbk]
  62. [include requirements/MutableBufferSequence.qbk]
  63. [include requirements/ProtoAllocator.qbk]
  64. [include requirements/Protocol.qbk]
  65. [include requirements/RangeConnectHandler.qbk]
  66. [include requirements/ReadHandler.qbk]
  67. [include requirements/ResolveHandler.qbk]
  68. [include requirements/Service.qbk]
  69. [include requirements/SettableSerialPortOption.qbk]
  70. [include requirements/SettableSocketOption.qbk]
  71. [include requirements/ShutdownHandler.qbk]
  72. [include requirements/SignalHandler.qbk]
  73. [include requirements/SyncRandomAccessReadDevice.qbk]
  74. [include requirements/SyncRandomAccessWriteDevice.qbk]
  75. [include requirements/SyncReadStream.qbk]
  76. [include requirements/SyncWriteStream.qbk]
  77. [include requirements/TimeTraits.qbk]
  78. [include requirements/WaitHandler.qbk]
  79. [include requirements/WaitTraits.qbk]
  80. [include requirements/WriteHandler.qbk]
  81. </xsl:text>
  82. <xsl:for-each select="
  83. compounddef[@kind = 'class' or @kind = 'struct'] |
  84. compounddef[@kind = 'namespace']/sectiondef[1]/memberdef">
  85. <xsl:sort select="concat((. | ancestor::*)/compoundname, '::', name, ':x')"/>
  86. <xsl:sort select="name"/>
  87. <xsl:choose>
  88. <xsl:when test="@kind='class' or @kind='struct'">
  89. <xsl:if test="
  90. contains(compoundname, 'asio::') and
  91. not(contains(compoundname, '::detail')) and
  92. not(contains(compoundname, '::service::key')) and
  93. not(contains(compoundname, '_handler')) and
  94. not(contains(compoundname, 'std_allocator_void')) and
  95. not(contains(compoundname, 'thread_function')) and
  96. not(contains(compoundname, 'context_impl')) and
  97. not(contains(compoundname, 'initiate_'))">
  98. <xsl:call-template name="class"/>
  99. </xsl:if>
  100. </xsl:when>
  101. <xsl:otherwise>
  102. <xsl:if test="
  103. not(contains(ancestor::*/compoundname, '::detail')) and
  104. not(contains(ancestor::*/compoundname, '::service::key')) and
  105. not(contains(ancestor::*/compoundname, '_helper')) and
  106. not(contains(ancestor::*/compoundname, 'initiate_')) and
  107. not(contains(name, '_helper')) and
  108. not(contains(name, 'std_allocator_void')) and
  109. not(contains(name, 'thread_function')) and
  110. not(contains(name, 'io_context_impl')) and
  111. not(contains(name, 'initiate_'))">
  112. <xsl:call-template name="namespace-memberdef"/>
  113. </xsl:if>
  114. </xsl:otherwise>
  115. </xsl:choose>
  116. </xsl:for-each>
  117. <xsl:value-of select="$newline"/>
  118. <xsl:text>[endsect]</xsl:text>
  119. </xsl:template>
  120. <!--========== Utilities ==========-->
  121. <xsl:template name="strip-asio-ns">
  122. <xsl:param name="name"/>
  123. <xsl:choose>
  124. <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
  125. <xsl:value-of select="$name"/>
  126. </xsl:when>
  127. <xsl:when test="contains($name, 'asio::')">
  128. <xsl:value-of select="substring-after($name, 'asio::')"/>
  129. </xsl:when>
  130. <xsl:otherwise>
  131. <xsl:value-of select="$name"/>
  132. </xsl:otherwise>
  133. </xsl:choose>
  134. </xsl:template>
  135. <xsl:template name="strip-ns">
  136. <xsl:param name="name"/>
  137. <xsl:choose>
  138. <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
  139. <xsl:value-of select="$name"/>
  140. </xsl:when>
  141. <xsl:when test="contains($name, '::') and contains($name, '&lt;')">
  142. <xsl:choose>
  143. <xsl:when test="string-length(substring-before($name, '::')) &lt; string-length(substring-before($name, '&lt;'))">
  144. <xsl:call-template name="strip-ns">
  145. <xsl:with-param name="name" select="substring-after($name, '::')"/>
  146. </xsl:call-template>
  147. </xsl:when>
  148. <xsl:otherwise>
  149. <xsl:value-of select="$name"/>
  150. </xsl:otherwise>
  151. </xsl:choose>
  152. </xsl:when>
  153. <xsl:when test="contains($name, '::')">
  154. <xsl:call-template name="strip-ns">
  155. <xsl:with-param name="name" select="substring-after($name, '::')"/>
  156. </xsl:call-template>
  157. </xsl:when>
  158. <xsl:otherwise>
  159. <xsl:value-of select="$name"/>
  160. </xsl:otherwise>
  161. </xsl:choose>
  162. </xsl:template>
  163. <xsl:template name="cleanup-type">
  164. <xsl:param name="name"/>
  165. <xsl:variable name="type">
  166. <xsl:choose>
  167. <xsl:when test="contains($name, 'BOOST_ASIO_DECL ')">
  168. <xsl:value-of select="substring-after($name, 'BOOST_ASIO_DECL ')"/>
  169. </xsl:when>
  170. <xsl:when test="contains($name, 'BOOST_ASIO_DECL')">
  171. <xsl:value-of select="substring-after($name, 'BOOST_ASIO_DECL')"/>
  172. </xsl:when>
  173. <xsl:when test="$name = 'virtual'"></xsl:when>
  174. <xsl:otherwise>
  175. <xsl:value-of select="$name"/>
  176. </xsl:otherwise>
  177. </xsl:choose>
  178. </xsl:variable>
  179. <xsl:choose>
  180. <xsl:when test="$type='void_or_deduced'">
  181. <xsl:text>``[link boost_asio.reference.asynchronous_operations.automatic_deduction_of_initiating_function_return_type ['DEDUCED]]``</xsl:text>
  182. </xsl:when>
  183. <xsl:otherwise>
  184. <xsl:value-of select="$type"/>
  185. </xsl:otherwise>
  186. </xsl:choose>
  187. </xsl:template>
  188. <xsl:template name="make-id">
  189. <xsl:param name="name"/>
  190. <xsl:choose>
  191. <xsl:when test="contains($name, 'boost::system::')">
  192. <xsl:call-template name="make-id">
  193. <xsl:with-param name="name"
  194. select="substring-after($name, 'boost::system::')"/>
  195. </xsl:call-template>
  196. </xsl:when>
  197. <xsl:when test="contains($name, 'boost::asio::error::')">
  198. <xsl:call-template name="make-id">
  199. <xsl:with-param name="name"
  200. select="concat(substring-before($name, 'boost::asio::error::'), substring-after($name, 'boost::asio::error::'))"/>
  201. </xsl:call-template>
  202. </xsl:when>
  203. <xsl:when test="contains($name, '::')">
  204. <xsl:call-template name="make-id">
  205. <xsl:with-param name="name"
  206. select="concat(substring-before($name, '::'), '__', substring-after($name, '::'))"/>
  207. </xsl:call-template>
  208. </xsl:when>
  209. <xsl:when test="contains($name, '=')">
  210. <xsl:call-template name="make-id">
  211. <xsl:with-param name="name"
  212. select="concat(substring-before($name, '='), '_eq_', substring-after($name, '='))"/>
  213. </xsl:call-template>
  214. </xsl:when>
  215. <xsl:when test="contains($name, '!')">
  216. <xsl:call-template name="make-id">
  217. <xsl:with-param name="name"
  218. select="concat(substring-before($name, '!'), '_not_', substring-after($name, '!'))"/>
  219. </xsl:call-template>
  220. </xsl:when>
  221. <xsl:when test="contains($name, '-&gt;')">
  222. <xsl:call-template name="make-id">
  223. <xsl:with-param name="name"
  224. select="concat(substring-before($name, '-&gt;'), '_arrow_', substring-after($name, '-&gt;'))"/>
  225. </xsl:call-template>
  226. </xsl:when>
  227. <xsl:when test="contains($name, '&lt;')">
  228. <xsl:call-template name="make-id">
  229. <xsl:with-param name="name"
  230. select="concat(substring-before($name, '&lt;'), '_lt_', substring-after($name, '&lt;'))"/>
  231. </xsl:call-template>
  232. </xsl:when>
  233. <xsl:when test="contains($name, '&gt;')">
  234. <xsl:call-template name="make-id">
  235. <xsl:with-param name="name"
  236. select="concat(substring-before($name, '&gt;'), '_gt_', substring-after($name, '&gt;'))"/>
  237. </xsl:call-template>
  238. </xsl:when>
  239. <xsl:when test="contains($name, '[')">
  240. <xsl:call-template name="make-id">
  241. <xsl:with-param name="name"
  242. select="concat(substring-before($name, '['), '_lb_', substring-after($name, '['))"/>
  243. </xsl:call-template>
  244. </xsl:when>
  245. <xsl:when test="contains($name, ']')">
  246. <xsl:call-template name="make-id">
  247. <xsl:with-param name="name"
  248. select="concat(substring-before($name, ']'), '_rb_', substring-after($name, ']'))"/>
  249. </xsl:call-template>
  250. </xsl:when>
  251. <xsl:when test="contains($name, '(')">
  252. <xsl:call-template name="make-id">
  253. <xsl:with-param name="name"
  254. select="concat(substring-before($name, '('), '_lp_', substring-after($name, '('))"/>
  255. </xsl:call-template>
  256. </xsl:when>
  257. <xsl:when test="contains($name, ')')">
  258. <xsl:call-template name="make-id">
  259. <xsl:with-param name="name"
  260. select="concat(substring-before($name, ')'), '_rp_', substring-after($name, ')'))"/>
  261. </xsl:call-template>
  262. </xsl:when>
  263. <xsl:when test="contains($name, '+')">
  264. <xsl:call-template name="make-id">
  265. <xsl:with-param name="name"
  266. select="concat(substring-before($name, '+'), '_plus_', substring-after($name, '+'))"/>
  267. </xsl:call-template>
  268. </xsl:when>
  269. <xsl:when test="contains($name, '-')">
  270. <xsl:call-template name="make-id">
  271. <xsl:with-param name="name"
  272. select="concat(substring-before($name, '-'), '_minus_', substring-after($name, '-'))"/>
  273. </xsl:call-template>
  274. </xsl:when>
  275. <xsl:when test="contains($name, '*')">
  276. <xsl:call-template name="make-id">
  277. <xsl:with-param name="name"
  278. select="concat(substring-before($name, '*'), '_star_', substring-after($name, '*'))"/>
  279. </xsl:call-template>
  280. </xsl:when>
  281. <xsl:when test="contains($name, '~')">
  282. <xsl:call-template name="make-id">
  283. <xsl:with-param name="name"
  284. select="concat(substring-before($name, '~'), '_', substring-after($name, '~'))"/>
  285. </xsl:call-template>
  286. </xsl:when>
  287. <xsl:when test="contains($name, ',')">
  288. <xsl:call-template name="make-id">
  289. <xsl:with-param name="name"
  290. select="concat(substring-before($name, ','), '_comma_', substring-after($name, ','))"/>
  291. </xsl:call-template>
  292. </xsl:when>
  293. <xsl:when test="contains($name, '...')">
  294. <xsl:call-template name="make-id">
  295. <xsl:with-param name="name"
  296. select="concat(substring-before($name, '...'), '_ellipsis_', substring-after($name, '...'))"/>
  297. </xsl:call-template>
  298. </xsl:when>
  299. <xsl:when test="contains($name, ' ')">
  300. <xsl:call-template name="make-id">
  301. <xsl:with-param name="name"
  302. select="concat(substring-before($name, ' '), '_', substring-after($name, ' '))"/>
  303. </xsl:call-template>
  304. </xsl:when>
  305. <xsl:when test="contains($name, 'boost__posix_time__ptime')">
  306. <xsl:call-template name="make-id">
  307. <xsl:with-param name="name"
  308. select="concat(substring-before($name, 'boost__posix_time__ptime'), 'ptime', substring-after($name, 'boost__posix_time__ptime'))"/>
  309. </xsl:call-template>
  310. </xsl:when>
  311. <xsl:otherwise>
  312. <xsl:value-of select="$name"/>
  313. </xsl:otherwise>
  314. </xsl:choose>
  315. </xsl:template>
  316. <!--========== Markup ==========-->
  317. <xsl:template match="para" mode="markup">
  318. <xsl:text>
  319. </xsl:text><xsl:apply-templates mode="markup"/><xsl:text>
  320. </xsl:text>
  321. </xsl:template>
  322. <xsl:template match="para" mode="markup-nested">
  323. <xsl:apply-templates mode="markup-nested"/>
  324. </xsl:template>
  325. <xsl:template match="title" mode="markup">
  326. <xsl:variable name="title">
  327. <xsl:value-of select="."/>
  328. </xsl:variable>
  329. <xsl:if test="string-length($title) > 0">
  330. [heading <xsl:value-of select="."/>]
  331. </xsl:if>
  332. </xsl:template>
  333. <xsl:template match="programlisting" mode="markup">
  334. <xsl:value-of select="$newline"/>
  335. <xsl:value-of select="$newline"/>
  336. <xsl:apply-templates mode="codeline"/>
  337. <xsl:value-of select="$newline"/>
  338. <xsl:value-of select="$newline"/>
  339. </xsl:template>
  340. <xsl:template match="programlisting" mode="markup-nested">
  341. <xsl:value-of select="$newline"/>
  342. <xsl:text>``</xsl:text>
  343. <xsl:value-of select="$newline"/>
  344. <xsl:apply-templates mode="codeline"/>
  345. <xsl:if test="substring(., string-length(.)) = $newline">
  346. <xsl:value-of select="$newline"/>
  347. </xsl:if>
  348. <xsl:text>``</xsl:text>
  349. <xsl:value-of select="$newline"/>
  350. </xsl:template>
  351. <xsl:template match="codeline" mode="codeline">
  352. <xsl:if test="string-length(.) &gt; 0">
  353. <xsl:text> </xsl:text>
  354. </xsl:if>
  355. <xsl:apply-templates mode="codeline"/>
  356. <xsl:value-of select="$newline"/>
  357. </xsl:template>
  358. <xsl:template match="sp" mode="markup">
  359. <xsl:text> </xsl:text>
  360. </xsl:template>
  361. <xsl:template match="sp" mode="markup-nested">
  362. <xsl:text> </xsl:text>
  363. </xsl:template>
  364. <xsl:template match="sp" mode="codeline">
  365. <xsl:text> </xsl:text>
  366. </xsl:template>
  367. <xsl:template match="linebreak" mode="markup">
  368. <xsl:text>
  369. </xsl:text>
  370. </xsl:template>
  371. <xsl:template match="linebreak" mode="markup-nested">
  372. <xsl:text>
  373. </xsl:text>
  374. </xsl:template>
  375. <xsl:template match="computeroutput" mode="markup">
  376. <xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
  377. </xsl:template>
  378. <xsl:template match="computeroutput" mode="markup-nested">
  379. <xsl:text>`</xsl:text><xsl:value-of select="."/><xsl:text>`</xsl:text>
  380. </xsl:template>
  381. <xsl:template match="listitem" mode="markup">
  382. * <xsl:call-template name="strip-leading-whitespace">
  383. <xsl:with-param name="text">
  384. <xsl:apply-templates mode="markup"/>
  385. </xsl:with-param>
  386. </xsl:call-template>
  387. </xsl:template>
  388. <xsl:template match="bold" mode="markup">[*<xsl:apply-templates mode="markup"/>]</xsl:template>
  389. <xsl:template match="emphasis" mode="markup">['<xsl:apply-templates mode="markup"/>]</xsl:template>
  390. <xsl:template match="parameterlist" mode="markup">
  391. <xsl:choose>
  392. <xsl:when test="@kind='param'">
  393. [heading Parameters]
  394. </xsl:when>
  395. <xsl:when test="@kind='exception'">
  396. [heading Exceptions]
  397. </xsl:when>
  398. </xsl:choose>
  399. [variablelist
  400. <xsl:apply-templates mode="markup"/>
  401. ]
  402. </xsl:template>
  403. <xsl:template match="parameteritem" mode="markup">
  404. [[<xsl:value-of select="parameternamelist"/>][<xsl:apply-templates select="parameterdescription" mode="markup-nested"/>]]
  405. </xsl:template>
  406. <xsl:template match="simplesect" mode="markup">
  407. <xsl:choose>
  408. <xsl:when test="@kind='return'">
  409. [heading Return Value]
  410. <xsl:apply-templates mode="markup"/>
  411. </xsl:when>
  412. <xsl:when test="@kind='see'">
  413. </xsl:when>
  414. <xsl:when test="@kind='note'">
  415. [heading Remarks]
  416. <xsl:apply-templates mode="markup"/>
  417. </xsl:when>
  418. <xsl:when test="@kind='par'">
  419. <xsl:if test="not(starts-with(title, 'Concepts:'))">
  420. <xsl:apply-templates mode="markup"/>
  421. </xsl:if>
  422. </xsl:when>
  423. <xsl:otherwise>
  424. <xsl:apply-templates mode="markup"/>
  425. </xsl:otherwise>
  426. </xsl:choose>
  427. </xsl:template>
  428. <xsl:template match="text()" mode="markup">
  429. <xsl:variable name="text" select="."/>
  430. <xsl:variable name="starts-with-whitespace" select="
  431. starts-with($text, ' ') or starts-with($text, $newline)"/>
  432. <xsl:variable name="preceding-node-name">
  433. <xsl:for-each select="preceding-sibling::*">
  434. <xsl:if test="position() = last()">
  435. <xsl:value-of select="local-name()"/>
  436. </xsl:if>
  437. </xsl:for-each>
  438. </xsl:variable>
  439. <xsl:variable name="after-newline" select="
  440. $preceding-node-name = 'programlisting' or
  441. $preceding-node-name = 'linebreak'"/>
  442. <xsl:choose>
  443. <xsl:when test="$starts-with-whitespace and $after-newline">
  444. <xsl:call-template name="escape-text">
  445. <xsl:with-param name="text">
  446. <xsl:call-template name="strip-leading-whitespace">
  447. <xsl:with-param name="text" select="$text"/>
  448. </xsl:call-template>
  449. </xsl:with-param>
  450. </xsl:call-template>
  451. </xsl:when>
  452. <xsl:otherwise>
  453. <xsl:call-template name="escape-text">
  454. <xsl:with-param name="text" select="$text"/>
  455. </xsl:call-template>
  456. </xsl:otherwise>
  457. </xsl:choose>
  458. </xsl:template>
  459. <xsl:template match="text()" mode="markup-nested">
  460. <xsl:variable name="text" select="."/>
  461. <xsl:variable name="starts-with-whitespace" select="
  462. starts-with($text, ' ') or starts-with($text, $newline)"/>
  463. <xsl:variable name="preceding-node-name">
  464. <xsl:for-each select="preceding-sibling::*">
  465. <xsl:if test="position() = last()">
  466. <xsl:value-of select="local-name()"/>
  467. </xsl:if>
  468. </xsl:for-each>
  469. </xsl:variable>
  470. <xsl:variable name="after-newline" select="
  471. $preceding-node-name = 'programlisting' or
  472. $preceding-node-name = 'linebreak'"/>
  473. <xsl:choose>
  474. <xsl:when test="$starts-with-whitespace and $after-newline">
  475. <xsl:call-template name="escape-text">
  476. <xsl:with-param name="text">
  477. <xsl:call-template name="strip-leading-whitespace">
  478. <xsl:with-param name="text" select="$text"/>
  479. </xsl:call-template>
  480. </xsl:with-param>
  481. </xsl:call-template>
  482. </xsl:when>
  483. <xsl:otherwise>
  484. <xsl:call-template name="escape-text">
  485. <xsl:with-param name="text" select="$text"/>
  486. </xsl:call-template>
  487. </xsl:otherwise>
  488. </xsl:choose>
  489. </xsl:template>
  490. <xsl:template name="strip-leading-whitespace">
  491. <xsl:param name="text"/>
  492. <xsl:choose>
  493. <xsl:when test="starts-with($text, ' ')">
  494. <xsl:call-template name="strip-leading-whitespace">
  495. <xsl:with-param name="text" select="substring($text, 2)"/>
  496. </xsl:call-template>
  497. </xsl:when>
  498. <xsl:when test="starts-with($text, $newline)">
  499. <xsl:call-template name="strip-leading-whitespace">
  500. <xsl:with-param name="text" select="substring($text, 2)"/>
  501. </xsl:call-template>
  502. </xsl:when>
  503. <xsl:otherwise>
  504. <xsl:value-of select="$text"/>
  505. </xsl:otherwise>
  506. </xsl:choose>
  507. </xsl:template>
  508. <xsl:template name="escape-text">
  509. <xsl:param name="text"/>
  510. <xsl:choose>
  511. <xsl:when test="contains($text, '_')">
  512. <xsl:value-of select="substring-before($text, '_')"/>
  513. <xsl:text>\_</xsl:text>
  514. <xsl:call-template name="escape-text">
  515. <xsl:with-param name="text" select="substring-after($text, '_')"/>
  516. </xsl:call-template>
  517. </xsl:when>
  518. <xsl:otherwise>
  519. <xsl:value-of select="$text"/>
  520. </xsl:otherwise>
  521. </xsl:choose>
  522. </xsl:template>
  523. <xsl:template name="escape-name">
  524. <xsl:param name="text"/>
  525. <xsl:choose>
  526. <xsl:when test="contains($text, '[')">
  527. <xsl:value-of select="substring-before($text, '[')"/>
  528. <xsl:text>\[</xsl:text>
  529. <xsl:call-template name="escape-name">
  530. <xsl:with-param name="text" select="substring-after($text, '[')"/>
  531. </xsl:call-template>
  532. </xsl:when>
  533. <xsl:when test="contains($text, ']')">
  534. <xsl:value-of select="substring-before($text, ']')"/>
  535. <xsl:text>\]</xsl:text>
  536. <xsl:call-template name="escape-name">
  537. <xsl:with-param name="text" select="substring-after($text, ']')"/>
  538. </xsl:call-template>
  539. </xsl:when>
  540. <xsl:when test="contains($text, '...')">
  541. <xsl:value-of select="substring-before($text, '...')"/>
  542. <xsl:text>\.\.\.</xsl:text>
  543. <xsl:call-template name="escape-name">
  544. <xsl:with-param name="text" select="substring-after($text, '...')"/>
  545. </xsl:call-template>
  546. </xsl:when>
  547. <xsl:otherwise>
  548. <xsl:value-of select="$text"/>
  549. </xsl:otherwise>
  550. </xsl:choose>
  551. </xsl:template>
  552. <xsl:template match="ref[@kindref='compound']" mode="markup">
  553. <xsl:variable name="name">
  554. <xsl:value-of select="."/>
  555. </xsl:variable>
  556. <xsl:choose>
  557. <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')">
  558. <xsl:variable name="dox-ref-id" select="@refid"/>
  559. <xsl:variable name="ref-name">
  560. <xsl:call-template name="strip-asio-ns">
  561. <xsl:with-param name="name"
  562. select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/>
  563. </xsl:call-template>
  564. </xsl:variable>
  565. <xsl:variable name="ref-id">
  566. <xsl:call-template name="make-id">
  567. <xsl:with-param name="name" select="$ref-name"/>
  568. </xsl:call-template>
  569. </xsl:variable>
  570. <xsl:text>[link boost_asio.reference.</xsl:text>
  571. <xsl:value-of select="$ref-id"/>
  572. <xsl:text> `</xsl:text>
  573. <xsl:value-of name="text" select="$ref-name"/>
  574. <xsl:text>`]</xsl:text>
  575. </xsl:when>
  576. <xsl:otherwise>
  577. <xsl:text>`</xsl:text>
  578. <xsl:value-of select="."/>
  579. <xsl:text>`</xsl:text>
  580. </xsl:otherwise>
  581. </xsl:choose>
  582. </xsl:template>
  583. <xsl:template match="ref[@kindref='compound']" mode="markup-nested">
  584. <xsl:variable name="name">
  585. <xsl:value-of select="."/>
  586. </xsl:variable>
  587. <xsl:choose>
  588. <xsl:when test="contains(@refid, 'asio') or contains($name, 'asio::')">
  589. <xsl:variable name="dox-ref-id" select="@refid"/>
  590. <xsl:variable name="ref-name">
  591. <xsl:call-template name="strip-asio-ns">
  592. <xsl:with-param name="name"
  593. select="(/doxygen//compounddef[@id=$dox-ref-id])[1]/compoundname"/>
  594. </xsl:call-template>
  595. </xsl:variable>
  596. <xsl:variable name="ref-id">
  597. <xsl:call-template name="make-id">
  598. <xsl:with-param name="name" select="$ref-name"/>
  599. </xsl:call-template>
  600. </xsl:variable>
  601. <xsl:text>[link boost_asio.reference.</xsl:text>
  602. <xsl:value-of select="$ref-id"/>
  603. <xsl:text> `</xsl:text>
  604. <xsl:value-of name="text" select="$ref-name"/>
  605. <xsl:text>`]</xsl:text>
  606. </xsl:when>
  607. <xsl:otherwise>
  608. <xsl:text>`</xsl:text>
  609. <xsl:value-of select="."/>
  610. <xsl:text>`</xsl:text>
  611. </xsl:otherwise>
  612. </xsl:choose>
  613. </xsl:template>
  614. <xsl:template match="ref[@kindref='member']" mode="markup">
  615. <xsl:variable name="dox-ref-id" select="@refid"/>
  616. <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
  617. <xsl:choose>
  618. <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0">
  619. <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
  620. <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
  621. <xsl:variable name="ref-name">
  622. <xsl:call-template name="strip-asio-ns">
  623. <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
  624. </xsl:call-template>
  625. </xsl:variable>
  626. <xsl:variable name="ref-id">
  627. <xsl:call-template name="make-id">
  628. <xsl:with-param name="name" select="$ref-name"/>
  629. </xsl:call-template>
  630. </xsl:variable>
  631. <xsl:text>[link boost_asio.reference.</xsl:text>
  632. <xsl:value-of select="$ref-id"/>
  633. <xsl:text> `</xsl:text>
  634. <xsl:value-of name="text" select="$ref-name"/>
  635. <xsl:text>`]</xsl:text>
  636. </xsl:when>
  637. <xsl:otherwise>
  638. <xsl:text>`</xsl:text>
  639. <xsl:value-of select="."/>
  640. <xsl:text>`</xsl:text>
  641. </xsl:otherwise>
  642. </xsl:choose>
  643. </xsl:template>
  644. <xsl:template match="ref[@kindref='member']" mode="markup-nested">
  645. <xsl:variable name="dox-ref-id" select="@refid"/>
  646. <xsl:variable name="memberdefs" select="/doxygen//compounddef/sectiondef/memberdef[@id=$dox-ref-id]"/>
  647. <xsl:choose>
  648. <xsl:when test="contains(@refid, 'namespaceboost_1_1asio') and count($memberdefs) &gt; 0">
  649. <xsl:variable name="dox-compound-name" select="($memberdefs)[1]/../../compoundname"/>
  650. <xsl:variable name="dox-name" select="($memberdefs)[1]/name"/>
  651. <xsl:variable name="ref-name">
  652. <xsl:call-template name="strip-asio-ns">
  653. <xsl:with-param name="name" select="concat($dox-compound-name,'::',$dox-name)"/>
  654. </xsl:call-template>
  655. </xsl:variable>
  656. <xsl:variable name="ref-id">
  657. <xsl:call-template name="make-id">
  658. <xsl:with-param name="name" select="$ref-name"/>
  659. </xsl:call-template>
  660. </xsl:variable>
  661. <xsl:text>[link boost_asio.reference.</xsl:text>
  662. <xsl:value-of select="$ref-id"/>
  663. <xsl:text> `</xsl:text>
  664. <xsl:value-of name="text" select="$ref-name"/>
  665. <xsl:text>`]</xsl:text>
  666. </xsl:when>
  667. <xsl:otherwise>
  668. <xsl:text>`</xsl:text>
  669. <xsl:value-of select="."/>
  670. <xsl:text>`</xsl:text>
  671. </xsl:otherwise>
  672. </xsl:choose>
  673. </xsl:template>
  674. <xsl:template name="header-requirements">
  675. <xsl:param name="file"/>
  676. <xsl:value-of select="$newline"/>
  677. <xsl:text>[heading Requirements]</xsl:text>
  678. <xsl:value-of select="$newline"/>
  679. <xsl:value-of select="$newline"/>
  680. <xsl:text>['Header: ]</xsl:text>
  681. <xsl:text>[^boost/asio/</xsl:text>
  682. <xsl:value-of select="substring-after($file, 'boost/asio/')"/>
  683. <xsl:text>]</xsl:text>
  684. <xsl:value-of select="$newline"/>
  685. <xsl:value-of select="$newline"/>
  686. <xsl:text>['Convenience header: ]</xsl:text>
  687. <xsl:choose>
  688. <xsl:when test="contains($file, 'boost/asio/ssl')">
  689. <xsl:text>[^boost/asio/ssl.hpp]</xsl:text>
  690. </xsl:when>
  691. <xsl:when test="contains($file, 'boost/asio/spawn')">
  692. <xsl:text>None</xsl:text>
  693. </xsl:when>
  694. <xsl:otherwise>
  695. <xsl:text>[^boost/asio.hpp]</xsl:text>
  696. </xsl:otherwise>
  697. </xsl:choose>
  698. <xsl:value-of select="$newline"/>
  699. </xsl:template>
  700. <!--========== Class ==========-->
  701. <xsl:template name="class">
  702. <xsl:variable name="class-name">
  703. <xsl:call-template name="strip-asio-ns">
  704. <xsl:with-param name="name" select="compoundname"/>
  705. </xsl:call-template>
  706. </xsl:variable>
  707. <xsl:variable name="unqualified-class-name">
  708. <xsl:call-template name="strip-ns">
  709. <xsl:with-param name="name" select="compoundname"/>
  710. </xsl:call-template>
  711. </xsl:variable>
  712. <xsl:variable name="class-id">
  713. <xsl:call-template name="make-id">
  714. <xsl:with-param name="name" select="$class-name"/>
  715. </xsl:call-template>
  716. </xsl:variable>
  717. <xsl:variable name="class-file" select="location/@file"/>
  718. [section:<xsl:value-of select="$class-id"/><xsl:text> </xsl:text><xsl:value-of select="$class-name"/>]
  719. <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
  720. </xsl:text>
  721. <xsl:apply-templates select="templateparamlist"
  722. mode="class-detail"/><xsl:text> </xsl:text><xsl:value-of select="@kind"/><xsl:text> </xsl:text><xsl:value-of
  723. select="$unqualified-class-name"/><xsl:if test="count(basecompoundref[not(contains(.,'::detail'))]) > 0"> :</xsl:if><xsl:text>
  724. </xsl:text><xsl:for-each select="basecompoundref[not(contains(.,'::detail'))]">
  725. <xsl:text> </xsl:text><xsl:if test="@prot='public'">public </xsl:if><xsl:call-template
  726. name="strip-asio-ns"><xsl:with-param name="name" select="."/></xsl:call-template><xsl:if
  727. test="not(position() = last())">,</xsl:if><xsl:text>
  728. </xsl:text></xsl:for-each><xsl:text>
  729. </xsl:text>
  730. <xsl:call-template name="class-tables">
  731. <xsl:with-param name="class-name" select="$class-name"/>
  732. <xsl:with-param name="class-id" select="$class-id"/>
  733. </xsl:call-template>
  734. <xsl:apply-templates select="detaileddescription" mode="markup"/>
  735. <xsl:call-template name="header-requirements">
  736. <xsl:with-param name="file" select="$class-file"/>
  737. </xsl:call-template>
  738. <xsl:call-template name="class-members">
  739. <xsl:with-param name="class-name" select="$class-name"/>
  740. <xsl:with-param name="class-id" select="$class-id"/>
  741. <xsl:with-param name="class-file" select="$class-file"/>
  742. </xsl:call-template>
  743. [endsect]
  744. </xsl:template>
  745. <xsl:template name="class-tables">
  746. <xsl:param name="class-name"/>
  747. <xsl:param name="class-id"/>
  748. <xsl:if test="
  749. count(
  750. sectiondef[@kind='public-type'] |
  751. innerclass[@prot='public' and not(contains(., '_handler'))]) &gt; 0">
  752. [heading Types]
  753. [table
  754. [[Name][Description]]
  755. <xsl:for-each select="
  756. sectiondef[@kind='public-type']/memberdef |
  757. innerclass[@prot='public' and not(contains(., '_handler')) and not(contains(., 'thread_function')) and not(contains(., 'initiate_'))]" mode="class-table">
  758. <xsl:sort select="concat(name, (.)[not(name)])"/>
  759. [
  760. <xsl:choose>
  761. <xsl:when test="count(name) &gt; 0">
  762. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
  763. <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
  764. [<xsl:call-template name="escape-name"><xsl:with-param name="text" select="briefdescription"/></xsl:call-template>]
  765. </xsl:when>
  766. <xsl:otherwise>
  767. <xsl:variable name="type-name">
  768. <xsl:call-template name="strip-asio-ns">
  769. <xsl:with-param name="name" select="."/>
  770. </xsl:call-template>
  771. </xsl:variable>
  772. <xsl:variable name="unqualified-type-name">
  773. <xsl:call-template name="strip-ns">
  774. <xsl:with-param name="name" select="."/>
  775. </xsl:call-template>
  776. </xsl:variable>
  777. <xsl:variable name="type-id">
  778. <xsl:call-template name="make-id">
  779. <xsl:with-param name="name" select="$type-name"/>
  780. </xsl:call-template>
  781. </xsl:variable>
  782. <xsl:variable name="type-ref-id" select="@refid"/>
  783. [[link boost_asio.reference.<xsl:value-of select="$type-id"/>
  784. <xsl:text> </xsl:text>[*<xsl:value-of select="$unqualified-type-name"/>]]]
  785. [<xsl:value-of select="(/doxygen//compounddef[@id=$type-ref-id])[1]/briefdescription"/>]
  786. </xsl:otherwise>
  787. </xsl:choose>
  788. ]
  789. </xsl:for-each>
  790. ]
  791. </xsl:if>
  792. <xsl:if test="count(sectiondef[@kind='public-func' or @kind='public-static-func']) > 0">
  793. [heading Member Functions]
  794. [table
  795. [[Name][Description]]
  796. <xsl:for-each select="sectiondef[@kind='public-func' or @kind='public-static-func']/memberdef" mode="class-table">
  797. <xsl:sort select="name"/>
  798. <xsl:variable name="name">
  799. <xsl:value-of select="name"/>
  800. </xsl:variable>
  801. <xsl:variable name="escaped-name">
  802. <xsl:call-template name="escape-name">
  803. <xsl:with-param name="text" select="$name"/>
  804. </xsl:call-template>
  805. </xsl:variable>
  806. <xsl:variable name="id">
  807. <xsl:call-template name="make-id">
  808. <xsl:with-param name="name" select="$name"/>
  809. </xsl:call-template>
  810. </xsl:variable>
  811. <xsl:variable name="doxygen-id">
  812. <xsl:value-of select="@id"/>
  813. </xsl:variable>
  814. <xsl:variable name="overload-count">
  815. <xsl:value-of select="count(../memberdef[name = $name])"/>
  816. </xsl:variable>
  817. <xsl:variable name="overload-position">
  818. <xsl:for-each select="../memberdef[name = $name]">
  819. <xsl:if test="@id = $doxygen-id">
  820. <xsl:value-of select="position()"/>
  821. </xsl:if>
  822. </xsl:for-each>
  823. </xsl:variable>
  824. <xsl:if test="$overload-position = 1">
  825. [
  826. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
  827. <xsl:text> </xsl:text>[*<xsl:value-of select="$escaped-name"/><xsl:text>]]]
  828. [</xsl:text><xsl:value-of select="briefdescription"/>
  829. </xsl:if>
  830. <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
  831. <xsl:value-of select="$newline"/>
  832. <xsl:text> [hr]</xsl:text>
  833. <xsl:value-of select="$newline"/>
  834. <xsl:text> </xsl:text>
  835. <xsl:value-of select="briefdescription"/>
  836. </xsl:if>
  837. <xsl:if test="$overload-position = $overload-count">
  838. <xsl:text>]
  839. ]
  840. </xsl:text>
  841. </xsl:if>
  842. </xsl:for-each>
  843. ]
  844. </xsl:if>
  845. <xsl:if test="count(sectiondef[@kind='protected-func' or @kind='protected-static-func']) > 0">
  846. [heading Protected Member Functions]
  847. [table
  848. [[Name][Description]]
  849. <xsl:for-each select="sectiondef[@kind='protected-func' or @kind='protected-static-func']/memberdef" mode="class-table">
  850. <xsl:sort select="name"/>
  851. <xsl:variable name="name">
  852. <xsl:value-of select="name"/>
  853. </xsl:variable>
  854. <xsl:variable name="id">
  855. <xsl:call-template name="make-id">
  856. <xsl:with-param name="name" select="$name"/>
  857. </xsl:call-template>
  858. </xsl:variable>
  859. <xsl:variable name="doxygen-id">
  860. <xsl:value-of select="@id"/>
  861. </xsl:variable>
  862. <xsl:variable name="overload-count">
  863. <xsl:value-of select="count(../memberdef[name = $name])"/>
  864. </xsl:variable>
  865. <xsl:variable name="overload-position">
  866. <xsl:for-each select="../memberdef[name = $name]">
  867. <xsl:if test="@id = $doxygen-id">
  868. <xsl:value-of select="position()"/>
  869. </xsl:if>
  870. </xsl:for-each>
  871. </xsl:variable>
  872. <xsl:if test="$overload-position = 1">
  873. [
  874. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
  875. <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
  876. [</xsl:text><xsl:value-of select="briefdescription"/>
  877. </xsl:if>
  878. <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
  879. <xsl:value-of select="$newline"/>
  880. <xsl:text> [hr]</xsl:text>
  881. <xsl:value-of select="$newline"/>
  882. <xsl:text> </xsl:text>
  883. <xsl:value-of select="briefdescription"/>
  884. </xsl:if>
  885. <xsl:if test="$overload-position = $overload-count">
  886. <xsl:text>]
  887. ]
  888. </xsl:text>
  889. </xsl:if>
  890. </xsl:for-each>
  891. ]
  892. </xsl:if>
  893. <xsl:if test="$class-name = 'execution_context::service'">
  894. <xsl:if test="count(sectiondef[@kind='private-func']) > 0">
  895. [heading Private Member Functions]
  896. [table
  897. [[Name][Description]]
  898. <xsl:for-each select="sectiondef[@kind='private-func']/memberdef" mode="class-table">
  899. <xsl:sort select="name"/>
  900. <xsl:variable name="name">
  901. <xsl:value-of select="name"/>
  902. </xsl:variable>
  903. <xsl:variable name="id">
  904. <xsl:call-template name="make-id">
  905. <xsl:with-param name="name" select="$name"/>
  906. </xsl:call-template>
  907. </xsl:variable>
  908. <xsl:variable name="doxygen-id">
  909. <xsl:value-of select="@id"/>
  910. </xsl:variable>
  911. <xsl:variable name="overload-count">
  912. <xsl:value-of select="count(../memberdef[name = $name])"/>
  913. </xsl:variable>
  914. <xsl:variable name="overload-position">
  915. <xsl:for-each select="../memberdef[name = $name]">
  916. <xsl:if test="@id = $doxygen-id">
  917. <xsl:value-of select="position()"/>
  918. </xsl:if>
  919. </xsl:for-each>
  920. </xsl:variable>
  921. <xsl:if test="$overload-position = 1">
  922. [
  923. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
  924. <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
  925. [</xsl:text><xsl:value-of select="briefdescription"/>
  926. </xsl:if>
  927. <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
  928. <xsl:value-of select="$newline"/>
  929. <xsl:text> [hr]</xsl:text>
  930. <xsl:value-of select="$newline"/>
  931. <xsl:text> </xsl:text>
  932. <xsl:value-of select="briefdescription"/>
  933. </xsl:if>
  934. <xsl:if test="$overload-position = $overload-count">
  935. <xsl:text>]
  936. ]
  937. </xsl:text>
  938. </xsl:if>
  939. </xsl:for-each>
  940. ]
  941. </xsl:if>
  942. </xsl:if>
  943. <xsl:if test="count(sectiondef[@kind='public-attrib' or @kind='public-static-attrib']) > 0">
  944. [heading Data Members]
  945. [table
  946. [[Name][Description]]
  947. <xsl:for-each select="sectiondef[@kind='public-attrib' or @kind='public-static-attrib']/memberdef" mode="class-table">
  948. <xsl:sort select="name"/>
  949. [
  950. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
  951. <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
  952. [<xsl:value-of select="briefdescription"/>]
  953. ]
  954. </xsl:for-each>
  955. ]
  956. </xsl:if>
  957. <xsl:if test="count(sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']) > 0">
  958. [heading Protected Data Members]
  959. [table
  960. [[Name][Description]]
  961. <xsl:for-each select="sectiondef[@kind='protected-attrib' or @kind='protected-static-attrib']/memberdef" mode="class-table">
  962. <xsl:sort select="name"/>
  963. [
  964. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="name"/>
  965. <xsl:text> </xsl:text>[*<xsl:value-of select="name"/>]]]
  966. [<xsl:value-of select="briefdescription"/>]
  967. ]
  968. </xsl:for-each>
  969. ]
  970. </xsl:if>
  971. <xsl:if test="count(sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]) &gt; 0">
  972. [heading Friends]
  973. [table
  974. [[Name][Description]]
  975. <xsl:for-each select="sectiondef[@kind='friend']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-table">
  976. <xsl:sort select="name"/>
  977. <xsl:variable name="name">
  978. <xsl:value-of select="name"/>
  979. </xsl:variable>
  980. <xsl:variable name="id">
  981. <xsl:call-template name="make-id">
  982. <xsl:with-param name="name" select="$name"/>
  983. </xsl:call-template>
  984. </xsl:variable>
  985. <xsl:variable name="doxygen-id">
  986. <xsl:value-of select="@id"/>
  987. </xsl:variable>
  988. <xsl:variable name="overload-count">
  989. <xsl:value-of select="count(../memberdef[name = $name])"/>
  990. </xsl:variable>
  991. <xsl:variable name="overload-position">
  992. <xsl:for-each select="../memberdef[name = $name]">
  993. <xsl:if test="@id = $doxygen-id">
  994. <xsl:value-of select="position()"/>
  995. </xsl:if>
  996. </xsl:for-each>
  997. </xsl:variable>
  998. <xsl:if test="$overload-position = 1">
  999. [
  1000. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
  1001. <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
  1002. [</xsl:text><xsl:value-of select="briefdescription"/>
  1003. </xsl:if>
  1004. <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
  1005. <xsl:value-of select="$newline"/>
  1006. <xsl:text> [hr]</xsl:text>
  1007. <xsl:value-of select="$newline"/>
  1008. <xsl:text> </xsl:text>
  1009. <xsl:value-of select="briefdescription"/>
  1010. </xsl:if>
  1011. <xsl:if test="$overload-position = $overload-count">
  1012. <xsl:text>]
  1013. ]
  1014. </xsl:text>
  1015. </xsl:if>
  1016. </xsl:for-each>
  1017. ]
  1018. </xsl:if>
  1019. <xsl:if test="count(sectiondef[@kind='related']/memberdef) &gt; 0">
  1020. [heading Related Functions]
  1021. [table
  1022. [[Name][Description]]
  1023. <xsl:for-each select="sectiondef[@kind='related']/memberdef" mode="class-table">
  1024. <xsl:sort select="name"/>
  1025. <xsl:variable name="name">
  1026. <xsl:value-of select="name"/>
  1027. </xsl:variable>
  1028. <xsl:variable name="id">
  1029. <xsl:call-template name="make-id">
  1030. <xsl:with-param name="name" select="$name"/>
  1031. </xsl:call-template>
  1032. </xsl:variable>
  1033. <xsl:variable name="doxygen-id">
  1034. <xsl:value-of select="@id"/>
  1035. </xsl:variable>
  1036. <xsl:variable name="overload-count">
  1037. <xsl:value-of select="count(../memberdef[name = $name])"/>
  1038. </xsl:variable>
  1039. <xsl:variable name="overload-position">
  1040. <xsl:for-each select="../memberdef[name = $name]">
  1041. <xsl:if test="@id = $doxygen-id">
  1042. <xsl:value-of select="position()"/>
  1043. </xsl:if>
  1044. </xsl:for-each>
  1045. </xsl:variable>
  1046. <xsl:if test="$overload-position = 1">
  1047. [
  1048. [[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of select="$id"/>
  1049. <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/><xsl:text>]]]
  1050. [</xsl:text><xsl:value-of select="briefdescription"/>
  1051. </xsl:if>
  1052. <xsl:if test="not($overload-position = 1) and not(briefdescription = preceding-sibling::*/briefdescription)">
  1053. <xsl:value-of select="$newline"/>
  1054. <xsl:value-of select="$newline"/>
  1055. <xsl:text> </xsl:text>
  1056. <xsl:value-of select="briefdescription"/>
  1057. </xsl:if>
  1058. <xsl:if test="$overload-position = $overload-count">
  1059. <xsl:text>]
  1060. ]
  1061. </xsl:text>
  1062. </xsl:if>
  1063. </xsl:for-each>
  1064. ]
  1065. </xsl:if>
  1066. </xsl:template>
  1067. <xsl:template name="class-members">
  1068. <xsl:param name="class-name"/>
  1069. <xsl:param name="class-id"/>
  1070. <xsl:param name="class-file"/>
  1071. <xsl:apply-templates select="sectiondef[@kind='public-type' or @kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or @kind='public-static-attrib' or @kind='protected-func' or @kind='protected-static-func' or @kind='protected-attrib' or @kind='protected-static-attrib' or @kind='friend' or @kind='related']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
  1072. <xsl:sort select="name"/>
  1073. <xsl:with-param name="class-name" select="$class-name"/>
  1074. <xsl:with-param name="class-id" select="$class-id"/>
  1075. <xsl:with-param name="class-file" select="$class-file"/>
  1076. </xsl:apply-templates>
  1077. <xsl:if test="$class-name = 'execution_context::service'">
  1078. <xsl:apply-templates select="sectiondef[@kind='private-func']/memberdef[not(type = 'friend class') and not(contains(name, '_helper'))]" mode="class-detail">
  1079. <xsl:sort select="name"/>
  1080. <xsl:with-param name="class-name" select="$class-name"/>
  1081. <xsl:with-param name="class-id" select="$class-id"/>
  1082. <xsl:with-param name="class-file" select="$class-file"/>
  1083. </xsl:apply-templates>
  1084. </xsl:if>
  1085. </xsl:template>
  1086. <!-- Class detail -->
  1087. <xsl:template match="memberdef" mode="class-detail">
  1088. <xsl:param name="class-name"/>
  1089. <xsl:param name="class-id"/>
  1090. <xsl:param name="class-file"/>
  1091. <xsl:variable name="name">
  1092. <xsl:value-of select="name"/>
  1093. </xsl:variable>
  1094. <xsl:variable name="escaped-name">
  1095. <xsl:call-template name="escape-name">
  1096. <xsl:with-param name="text" select="$name"/>
  1097. </xsl:call-template>
  1098. </xsl:variable>
  1099. <xsl:variable name="escaped-class-name">
  1100. <xsl:call-template name="escape-name">
  1101. <xsl:with-param name="text" select="$class-name"/>
  1102. </xsl:call-template>
  1103. </xsl:variable>
  1104. <xsl:variable name="id">
  1105. <xsl:call-template name="make-id">
  1106. <xsl:with-param name="name" select="$name"/>
  1107. </xsl:call-template>
  1108. </xsl:variable>
  1109. <xsl:variable name="doxygen-id">
  1110. <xsl:value-of select="@id"/>
  1111. </xsl:variable>
  1112. <xsl:variable name="overload-count">
  1113. <xsl:value-of select="count(../memberdef[name = $name])"/>
  1114. </xsl:variable>
  1115. <xsl:variable name="overload-position">
  1116. <xsl:for-each select="../memberdef[name = $name]">
  1117. <xsl:if test="@id = $doxygen-id">
  1118. <xsl:value-of select="position()"/>
  1119. </xsl:if>
  1120. </xsl:for-each>
  1121. </xsl:variable>
  1122. <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
  1123. [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text>
  1124. <xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>]
  1125. <xsl:text>[indexterm2 </xsl:text>
  1126. <xsl:text>boost_asio.indexterm.</xsl:text>
  1127. <xsl:value-of select="$class-id"/>
  1128. <xsl:text>.</xsl:text>
  1129. <xsl:value-of select="$id"/>
  1130. <xsl:text>..</xsl:text>
  1131. <xsl:value-of select="$escaped-name"/>
  1132. <xsl:text>..</xsl:text>
  1133. <xsl:value-of select="$escaped-class-name"/>
  1134. <xsl:text>] </xsl:text>
  1135. <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
  1136. </xsl:text>
  1137. <xsl:for-each select="../memberdef[name = $name]">
  1138. <xsl:if test="position() &gt; 1 and not(briefdescription = preceding-sibling::*/briefdescription)">
  1139. <xsl:value-of select="$newline"/>
  1140. <xsl:apply-templates select="briefdescription" mode="markup"/>
  1141. <xsl:value-of select="$newline"/>
  1142. </xsl:if>
  1143. <xsl:text>
  1144. </xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
  1145. <xsl:text> </xsl:text>
  1146. <xsl:if test="@explicit='yes'">explicit </xsl:if>
  1147. <xsl:if test="@static='yes'">static </xsl:if>
  1148. <xsl:if test="@virt='virtual'">virtual </xsl:if>
  1149. <xsl:variable name="stripped-type">
  1150. <xsl:call-template name="cleanup-type">
  1151. <xsl:with-param name="name" select="type"/>
  1152. </xsl:call-template>
  1153. </xsl:variable>
  1154. <xsl:if test="string-length($stripped-type) &gt; 0">
  1155. <xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text>
  1156. </xsl:if>``[link boost_asio.reference.<xsl:value-of select="$class-id"/>.<xsl:value-of
  1157. select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text><xsl:value-of
  1158. select="name"/>]``(<xsl:apply-templates select="param"
  1159. mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
  1160. <xsl:text> `` [''''&amp;raquo;'''</xsl:text>
  1161. <xsl:text> [link boost_asio.reference.</xsl:text>
  1162. <xsl:value-of select="$class-id"/>.<xsl:value-of
  1163. select="$id"/>.overload<xsl:value-of select="position()"/>
  1164. <xsl:text> more...]]``
  1165. </xsl:text>
  1166. </xsl:for-each>
  1167. </xsl:if>
  1168. [section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
  1169. <xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/></xsl:if>
  1170. <xsl:text> </xsl:text><xsl:value-of select="$class-name"/>::<xsl:value-of select="$escaped-name"/>
  1171. <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
  1172. select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
  1173. <xsl:if test="not(starts-with($doxygen-id, ../../@id))">
  1174. <xsl:variable name="inherited-from" select="/doxygen/compounddef[starts-with($doxygen-id, @id)]/compoundname"/>
  1175. <xsl:if test="not(contains($inherited-from, '::detail'))">
  1176. ['Inherited from <xsl:call-template name="strip-asio-ns">
  1177. <xsl:with-param name="name" select="$inherited-from"/>
  1178. </xsl:call-template>.]<xsl:text>
  1179. </xsl:text></xsl:if></xsl:if>
  1180. <xsl:if test="$overload-count = 1">
  1181. <xsl:text>[indexterm2 </xsl:text>
  1182. <xsl:text>boost_asio.indexterm.</xsl:text>
  1183. <xsl:value-of select="$class-id"/>
  1184. <xsl:text>.</xsl:text>
  1185. <xsl:value-of select="$id"/>
  1186. <xsl:text>..</xsl:text>
  1187. <xsl:value-of select="$escaped-name"/>
  1188. <xsl:text>..</xsl:text>
  1189. <xsl:value-of select="$escaped-class-name"/>
  1190. <xsl:text>] </xsl:text>
  1191. </xsl:if>
  1192. <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
  1193. </xsl:text>
  1194. <xsl:choose>
  1195. <xsl:when test="@kind='typedef'">
  1196. <xsl:call-template name="typedef" mode="class-detail">
  1197. <xsl:with-param name="class-name" select="$class-name"/>
  1198. </xsl:call-template>
  1199. </xsl:when>
  1200. <xsl:when test="@kind='variable'">
  1201. <xsl:call-template name="variable" mode="class-detail"/>
  1202. </xsl:when>
  1203. <xsl:when test="@kind='enum'">
  1204. <xsl:call-template name="enum" mode="class-detail">
  1205. <xsl:with-param name="enum-name" select="$class-name"/>
  1206. <xsl:with-param name="id" select="concat($class-id, '.', $id)"/>
  1207. </xsl:call-template>
  1208. </xsl:when>
  1209. <xsl:when test="@kind='function'">
  1210. <xsl:call-template name="function" mode="class-detail"/>
  1211. </xsl:when>
  1212. <xsl:when test="@kind='friend'">
  1213. <xsl:call-template name="function" mode="class-detail"/>
  1214. </xsl:when>
  1215. </xsl:choose>
  1216. <xsl:text>
  1217. </xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
  1218. <xsl:if test="@kind='typedef' or @kind='friend'">
  1219. <xsl:call-template name="header-requirements">
  1220. <xsl:with-param name="file" select="$class-file"/>
  1221. </xsl:call-template>
  1222. </xsl:if>
  1223. [endsect]
  1224. <xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
  1225. [endsect]
  1226. </xsl:if>
  1227. </xsl:template>
  1228. <xsl:template name="typedef">
  1229. <xsl:param name="class-name"/>
  1230. <xsl:text>
  1231. </xsl:text>typedef <xsl:value-of select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>;<xsl:text>
  1232. </xsl:text>
  1233. <xsl:if test="count(type/ref) &gt; 0 and not(contains(type, '*'))">
  1234. <xsl:variable name="class-refid">
  1235. <xsl:choose>
  1236. <xsl:when test="type='basic_address_iterator&lt; address_v4 &gt;'">
  1237. <xsl:text>classasio_1_1ip_1_1basic__address__iterator_3_01address__v4_01_4</xsl:text>
  1238. </xsl:when>
  1239. <xsl:when test="type='basic_address_iterator&lt; address_v6 &gt;'">
  1240. <xsl:text>classasio_1_1ip_1_1basic__address__iterator_3_01address__v6_01_4</xsl:text>
  1241. </xsl:when>
  1242. <xsl:when test="type='basic_address_range&lt; address_v4 &gt;'">
  1243. <xsl:text>classasio_1_1ip_1_1basic__address__range_3_01address__v4_01_4</xsl:text>
  1244. </xsl:when>
  1245. <xsl:when test="type='basic_address_range&lt; address_v6 &gt;'">
  1246. <xsl:text>classasio_1_1ip_1_1basic__address__range_3_01address__v6_01_4</xsl:text>
  1247. </xsl:when>
  1248. <xsl:otherwise>
  1249. <xsl:for-each select="type/ref[1]">
  1250. <xsl:value-of select="@refid"/>
  1251. </xsl:for-each>
  1252. </xsl:otherwise>
  1253. </xsl:choose>
  1254. </xsl:variable>
  1255. <xsl:variable name="name" select="name"/>
  1256. <xsl:for-each select="/doxygen/compounddef[@id=$class-refid]">
  1257. <xsl:call-template name="class-tables">
  1258. <xsl:with-param name="class-name">
  1259. <xsl:value-of select="concat($class-name, '::', $name)"/>
  1260. </xsl:with-param>
  1261. <xsl:with-param name="class-id">
  1262. <xsl:call-template name="make-id">
  1263. <xsl:with-param name="name">
  1264. <xsl:call-template name="strip-asio-ns">
  1265. <xsl:with-param name="name" select="compoundname"/>
  1266. </xsl:call-template>
  1267. </xsl:with-param>
  1268. </xsl:call-template>
  1269. </xsl:with-param>
  1270. </xsl:call-template>
  1271. <xsl:apply-templates select="detaileddescription" mode="markup"/>
  1272. </xsl:for-each>
  1273. </xsl:if>
  1274. </xsl:template>
  1275. <xsl:template name="variable">
  1276. <xsl:text>
  1277. </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:value-of
  1278. select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>
  1279. <xsl:if test="count(initializer) = 1"><xsl:text> =</xsl:text>
  1280. <xsl:value-of select="initializer"/></xsl:if>;
  1281. </xsl:template>
  1282. <xsl:template name="enum">
  1283. <xsl:param name="enum-name"/>
  1284. <xsl:param name="id"/>
  1285. enum <xsl:value-of select="name"/><xsl:text>
  1286. </xsl:text><xsl:if test="count(enumvalue) &gt; 0">
  1287. <xsl:value-of select="$newline"/>
  1288. <xsl:for-each select="enumvalue">
  1289. <xsl:text>[indexterm2 </xsl:text>
  1290. <xsl:text>boost_asio.indexterm.</xsl:text>
  1291. <xsl:value-of select="$id"/>
  1292. <xsl:text>.</xsl:text>
  1293. <xsl:value-of select="name"/>
  1294. <xsl:text>..</xsl:text>
  1295. <xsl:value-of select="name"/>
  1296. <xsl:text>..</xsl:text>
  1297. <xsl:value-of select="$enum-name"/>
  1298. <xsl:text>]</xsl:text>
  1299. <xsl:value-of select="$newline"/>
  1300. </xsl:for-each>
  1301. [heading Values]
  1302. [variablelist
  1303. <xsl:for-each select="enumvalue">
  1304. [
  1305. [<xsl:value-of select="name"/>]
  1306. [<xsl:value-of select="briefdescription"/>]
  1307. ]
  1308. </xsl:for-each>
  1309. ]
  1310. </xsl:if>
  1311. </xsl:template>
  1312. <xsl:template name="function">
  1313. <xsl:text>
  1314. </xsl:text>
  1315. <xsl:variable name="doxygen-id">
  1316. <xsl:value-of select="@id"/>
  1317. </xsl:variable>
  1318. <xsl:choose>
  1319. <xsl:when test="count(/doxygen//memberdef[@id=$doxygen-id]/templateparamlist) = 1">
  1320. <xsl:apply-templates select="/doxygen//memberdef[@id=$doxygen-id]/templateparamlist" mode="class-detail"/>
  1321. </xsl:when>
  1322. <xsl:otherwise>
  1323. <xsl:apply-templates select="templateparamlist" mode="class-detail"/>
  1324. </xsl:otherwise>
  1325. </xsl:choose>
  1326. <xsl:variable name="stripped-type">
  1327. <xsl:call-template name="cleanup-type">
  1328. <xsl:with-param name="name" select="type"/>
  1329. </xsl:call-template>
  1330. </xsl:variable>
  1331. <xsl:text> </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:if
  1332. test="@virt='virtual'">virtual </xsl:if><xsl:if
  1333. test="string-length($stripped-type) &gt; 0"><xsl:value-of select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>
  1334. <xsl:value-of select="name"/>(<xsl:apply-templates select="param"
  1335. mode="class-detail"/>)<xsl:if test="@const='yes'"> const</xsl:if>;
  1336. </xsl:template>
  1337. <xsl:template match="templateparamlist" mode="class-detail">
  1338. <xsl:text> </xsl:text>template&lt;<xsl:apply-templates select="param" mode="class-detail-template"/>&gt;
  1339. </xsl:template>
  1340. <xsl:template match="param" mode="class-detail-template">
  1341. <xsl:text>
  1342. </xsl:text><xsl:value-of select="type"/><xsl:text> </xsl:text>
  1343. <xsl:choose>
  1344. <xsl:when test="declname = 'Allocator'">
  1345. <xsl:value-of select="declname"/>
  1346. </xsl:when>
  1347. <xsl:when test="declname = 'Arg'">
  1348. <xsl:value-of select="declname"/>
  1349. </xsl:when>
  1350. <xsl:when test="declname = 'Args'">
  1351. <xsl:value-of select="declname"/>
  1352. </xsl:when>
  1353. <xsl:when test="declname = 'BufferSequence'">
  1354. <xsl:value-of select="declname"/>
  1355. </xsl:when>
  1356. <xsl:when test="declname = 'ByteType'">
  1357. <xsl:value-of select="declname"/>
  1358. </xsl:when>
  1359. <xsl:when test="declname = 'C'">
  1360. <xsl:value-of select="declname"/>
  1361. </xsl:when>
  1362. <xsl:when test="declname = 'Clock'">
  1363. <xsl:value-of select="declname"/>
  1364. </xsl:when>
  1365. <xsl:when test="declname = 'CompletionToken'">
  1366. <xsl:value-of select="declname"/>
  1367. </xsl:when>
  1368. <xsl:when test="declname = 'ConstBuffer'">
  1369. <xsl:value-of select="declname"/>
  1370. </xsl:when>
  1371. <xsl:when test="declname = 'Context_Service'">
  1372. <xsl:value-of select="declname"/>
  1373. </xsl:when>
  1374. <xsl:when test="declname = 'Duration'">
  1375. <xsl:value-of select="declname"/>
  1376. </xsl:when>
  1377. <xsl:when test="declname = 'DatagramSocketService1'">
  1378. <xsl:value-of select="concat('``[link boost_asio.reference.DatagramSocketService ', declname, ']``')"/>
  1379. </xsl:when>
  1380. <xsl:when test="declname = 'EndpointIterator'">
  1381. <xsl:value-of select="declname"/>
  1382. </xsl:when>
  1383. <xsl:when test="declname = 'Elem'">
  1384. <xsl:value-of select="declname"/>
  1385. </xsl:when>
  1386. <xsl:when test="declname = 'ErrorEnum'">
  1387. <xsl:value-of select="declname"/>
  1388. </xsl:when>
  1389. <xsl:when test="declname = 'ExecutionContext'">
  1390. <xsl:value-of select="declname"/>
  1391. </xsl:when>
  1392. <xsl:when test="declname = 'Executor'">
  1393. <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
  1394. </xsl:when>
  1395. <xsl:when test="declname = 'Executor2'">
  1396. <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
  1397. </xsl:when>
  1398. <xsl:when test="declname = 'F'">
  1399. <xsl:value-of select="declname"/>
  1400. </xsl:when>
  1401. <xsl:when test="declname = 'Function'">
  1402. <xsl:value-of select="declname"/>
  1403. </xsl:when>
  1404. <xsl:when test="declname = 'IoObjectService1'">
  1405. <xsl:value-of select="concat('``[link boost_asio.reference.IoObjectService ', declname, ']``')"/>
  1406. </xsl:when>
  1407. <xsl:when test="declname = 'Implementation'">
  1408. <xsl:value-of select="declname"/>
  1409. </xsl:when>
  1410. <xsl:when test="declname = 'Initiation'">
  1411. <xsl:value-of select="declname"/>
  1412. </xsl:when>
  1413. <xsl:when test="declname = 'InnerExecutor'">
  1414. <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
  1415. </xsl:when>
  1416. <xsl:when test="declname = 'IoObjectsOrExecutors'">
  1417. <xsl:value-of select="declname"/>
  1418. </xsl:when>
  1419. <xsl:when test="declname = 'Iterator'">
  1420. <xsl:value-of select="declname"/>
  1421. </xsl:when>
  1422. <xsl:when test="declname = 'MatchCondition'">
  1423. <xsl:value-of select="declname"/>
  1424. </xsl:when>
  1425. <xsl:when test="declname = 'MutableBuffer'">
  1426. <xsl:value-of select="declname"/>
  1427. </xsl:when>
  1428. <xsl:when test="declname = 'N'">
  1429. <xsl:value-of select="declname"/>
  1430. </xsl:when>
  1431. <xsl:when test="declname = 'OtherAllocator'">
  1432. <xsl:value-of select="declname"/>
  1433. </xsl:when>
  1434. <xsl:when test="declname = 'OtherExecutor'">
  1435. <xsl:value-of select="concat('``[link boost_asio.reference.Executor1 ', declname, ']``')"/>
  1436. </xsl:when>
  1437. <xsl:when test="declname = 'OtherHandler'">
  1438. <xsl:value-of select="declname"/>
  1439. </xsl:when>
  1440. <xsl:when test="declname = 'PasswordCallback'">
  1441. <xsl:value-of select="declname"/>
  1442. </xsl:when>
  1443. <xsl:when test="declname = 'Period'">
  1444. <xsl:value-of select="declname"/>
  1445. </xsl:when>
  1446. <xsl:when test="declname = 'PodType'">
  1447. <xsl:value-of select="declname"/>
  1448. </xsl:when>
  1449. <xsl:when test="declname = 'PointerToPodType'">
  1450. <xsl:value-of select="declname"/>
  1451. </xsl:when>
  1452. <xsl:when test="declname = 'Protocol1'">
  1453. <xsl:value-of select="concat('``[link boost_asio.reference.Protocol ', declname, ']``')"/>
  1454. </xsl:when>
  1455. <xsl:when test="declname = 'RawCompletionToken'">
  1456. <xsl:value-of select="declname"/>
  1457. </xsl:when>
  1458. <xsl:when test="declname = 'RawSocketService1'">
  1459. <xsl:value-of select="concat('``[link boost_asio.reference.RawSocketService ', declname, ']``')"/>
  1460. </xsl:when>
  1461. <xsl:when test="declname = 'Rep'">
  1462. <xsl:value-of select="declname"/>
  1463. </xsl:when>
  1464. <xsl:when test="declname = 'Result'">
  1465. <xsl:value-of select="declname"/>
  1466. </xsl:when>
  1467. <xsl:when test="declname = 'SeqPacketSocketService1'">
  1468. <xsl:value-of select="concat('``[link boost_asio.reference.SeqPacketSocketService ', declname, ']``')"/>
  1469. </xsl:when>
  1470. <xsl:when test="declname = 'Signature'">
  1471. <xsl:value-of select="declname"/>
  1472. </xsl:when>
  1473. <xsl:when test="declname = 'SocketAcceptorService1' or declname = 'SocketAcceptorService2'">
  1474. <xsl:value-of select="concat('``[link boost_asio.reference.SocketAcceptorService ', declname, ']``')"/>
  1475. </xsl:when>
  1476. <xsl:when test="declname = 'SocketService1' or declname = 'SocketService2'">
  1477. <xsl:value-of select="concat('``[link boost_asio.reference.SocketService ', declname, ']``')"/>
  1478. </xsl:when>
  1479. <xsl:when test="declname = 'Stream'">
  1480. <xsl:value-of select="declname"/>
  1481. </xsl:when>
  1482. <xsl:when test="declname = 'StreamSocketService1'">
  1483. <xsl:value-of select="concat('``[link boost_asio.reference.StreamSocketService ', declname, ']``')"/>
  1484. </xsl:when>
  1485. <xsl:when test="declname = 'T'">
  1486. <xsl:value-of select="declname"/>
  1487. </xsl:when>
  1488. <xsl:when test="declname = 'T1'">
  1489. <xsl:value-of select="declname"/>
  1490. </xsl:when>
  1491. <xsl:when test="declname = 'TN'">
  1492. <xsl:value-of select="declname"/>
  1493. </xsl:when>
  1494. <xsl:when test="declname = 'Time'">
  1495. <xsl:value-of select="declname"/>
  1496. </xsl:when>
  1497. <xsl:when test="declname = 'TimeType'">
  1498. <xsl:value-of select="declname"/>
  1499. </xsl:when>
  1500. <xsl:when test="declname = 'Traits'">
  1501. <xsl:value-of select="declname"/>
  1502. </xsl:when>
  1503. <xsl:when test="declname = 'U'">
  1504. <xsl:value-of select="declname"/>
  1505. </xsl:when>
  1506. <xsl:when test="declname = 'VerifyCallback'">
  1507. <xsl:value-of select="declname"/>
  1508. </xsl:when>
  1509. <xsl:when test="count(declname) = 0">
  1510. </xsl:when>
  1511. <xsl:otherwise>
  1512. <xsl:value-of select="concat('``[link boost_asio.reference.', declname, ' ', declname, ']``')"/>
  1513. </xsl:otherwise>
  1514. </xsl:choose>
  1515. <xsl:if test="count(defval) > 0"> = <xsl:choose>
  1516. <xsl:when test="defval = 'default_token'">
  1517. <xsl:text>``[link boost_asio.reference.asynchronous_operations.default_completion_tokens ['DEFAULT]]``</xsl:text>
  1518. </xsl:when>
  1519. <xsl:otherwise><xsl:value-of select="defval"/></xsl:otherwise>
  1520. </xsl:choose></xsl:if>
  1521. <xsl:if test="not(position() = last())">,</xsl:if>
  1522. </xsl:template>
  1523. <xsl:template match="param" mode="class-detail">
  1524. <xsl:text>
  1525. </xsl:text>
  1526. <xsl:choose>
  1527. <xsl:when test="string-length(array) &gt; 0">
  1528. <xsl:value-of select="substring-before(type, '&amp;')"/>
  1529. <xsl:text>(&amp;</xsl:text>
  1530. <xsl:value-of select="declname"/>
  1531. <xsl:text>)</xsl:text>
  1532. <xsl:value-of select="array"/>
  1533. </xsl:when>
  1534. <xsl:otherwise>
  1535. <xsl:value-of select="type"/>
  1536. <xsl:text> </xsl:text>
  1537. <xsl:value-of select="declname"/>
  1538. </xsl:otherwise>
  1539. </xsl:choose>
  1540. <xsl:if test="count(defval) > 0"> = <xsl:choose>
  1541. <xsl:when test="defval = 'default_token'">
  1542. <xsl:text>``[link boost_asio.reference.asynchronous_operations.default_completion_tokens ['DEFAULT]]``</xsl:text>
  1543. </xsl:when>
  1544. <xsl:otherwise><xsl:value-of select="defval"/></xsl:otherwise>
  1545. </xsl:choose></xsl:if>
  1546. <xsl:if test="not(position() = last())">,</xsl:if>
  1547. </xsl:template>
  1548. <xsl:template match="*" mode="class-detail"/>
  1549. <!--========== Namespace ==========-->
  1550. <xsl:template name="namespace-memberdef">
  1551. <xsl:variable name="name">
  1552. <xsl:call-template name="strip-asio-ns">
  1553. <xsl:with-param name="name" select="concat(../../compoundname, '::', name)"/>
  1554. </xsl:call-template>
  1555. </xsl:variable>
  1556. <xsl:variable name="unqualified-name">
  1557. <xsl:call-template name="strip-ns">
  1558. <xsl:with-param name="name" select="$name"/>
  1559. </xsl:call-template>
  1560. </xsl:variable>
  1561. <xsl:variable name="id">
  1562. <xsl:call-template name="make-id">
  1563. <xsl:with-param name="name" select="$name"/>
  1564. </xsl:call-template>
  1565. </xsl:variable>
  1566. <xsl:variable name="doxygen-id">
  1567. <xsl:value-of select="@id"/>
  1568. </xsl:variable>
  1569. <xsl:variable name="overload-count">
  1570. <xsl:value-of select="count(../memberdef[name = $unqualified-name])"/>
  1571. </xsl:variable>
  1572. <xsl:variable name="overload-position">
  1573. <xsl:for-each select="../memberdef[name = $unqualified-name]">
  1574. <xsl:if test="@id = $doxygen-id">
  1575. <xsl:value-of select="position()"/>
  1576. </xsl:if>
  1577. </xsl:for-each>
  1578. </xsl:variable>
  1579. <xsl:if test="$overload-count &gt; 1 and $overload-position = 1">
  1580. [section:<xsl:value-of select="$id"/><xsl:text> </xsl:text><xsl:value-of select="$name"/>]
  1581. <xsl:text>[indexterm1 </xsl:text>
  1582. <xsl:text>boost_asio.indexterm.</xsl:text>
  1583. <xsl:value-of select="$id"/>
  1584. <xsl:text>..</xsl:text>
  1585. <xsl:value-of select="$name"/>
  1586. <xsl:text>] </xsl:text>
  1587. <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
  1588. <xsl:apply-templates select="briefdescription" mode="markup"/>
  1589. <xsl:value-of select="$newline"/>
  1590. </xsl:for-each>
  1591. <xsl:for-each select="../memberdef[name = $unqualified-name]">
  1592. <xsl:variable name="stripped-type">
  1593. <xsl:call-template name="cleanup-type">
  1594. <xsl:with-param name="name" select="type"/>
  1595. </xsl:call-template>
  1596. </xsl:variable>
  1597. <xsl:if test="position() = 1 or not(briefdescription = preceding-sibling::memberdef[1]/briefdescription)">
  1598. <xsl:apply-templates select="briefdescription" mode="markup"/>
  1599. </xsl:if>
  1600. <xsl:text>
  1601. </xsl:text><xsl:apply-templates select="templateparamlist" mode="class-detail"/>
  1602. <xsl:text> </xsl:text><xsl:if test="string-length($stripped-type) &gt; 0"><xsl:value-of
  1603. select="$stripped-type"/><xsl:text> </xsl:text></xsl:if>``[link boost_asio.reference.<xsl:value-of
  1604. select="$id"/>.overload<xsl:value-of select="position()"/><xsl:text> </xsl:text>
  1605. <xsl:value-of select="name"/>]``(<xsl:apply-templates select="param" mode="class-detail"/>);
  1606. <xsl:text> `` [''''&amp;raquo;'''</xsl:text>
  1607. <xsl:text> [link boost_asio.reference.</xsl:text>
  1608. <xsl:value-of select="$id"/>.overload<xsl:value-of select="position()"/>
  1609. <xsl:text> more...]]``
  1610. </xsl:text>
  1611. </xsl:for-each>
  1612. <xsl:for-each select="/doxygen/compounddef[@kind='group' and compoundname=$name]">
  1613. <xsl:apply-templates select="detaileddescription" mode="markup"/>
  1614. </xsl:for-each>
  1615. <xsl:call-template name="header-requirements">
  1616. <xsl:with-param name="file" select="location/@file"/>
  1617. </xsl:call-template>
  1618. </xsl:if>
  1619. [section:<xsl:if test="$overload-count = 1"><xsl:value-of select="$id"/></xsl:if>
  1620. <xsl:if test="$overload-count &gt; 1">overload<xsl:value-of select="$overload-position"/>
  1621. </xsl:if><xsl:text> </xsl:text><xsl:value-of select="$name"/>
  1622. <xsl:if test="$overload-count &gt; 1"> (<xsl:value-of
  1623. select="$overload-position"/> of <xsl:value-of select="$overload-count"/> overloads)</xsl:if>]
  1624. <xsl:if test="$overload-count = 1">
  1625. <xsl:text>[indexterm1 </xsl:text>
  1626. <xsl:text>boost_asio.indexterm.</xsl:text>
  1627. <xsl:value-of select="$id"/>
  1628. <xsl:text>..</xsl:text>
  1629. <xsl:value-of select="$name"/>
  1630. <xsl:text>] </xsl:text>
  1631. </xsl:if>
  1632. <xsl:apply-templates select="briefdescription" mode="markup"/><xsl:text>
  1633. </xsl:text>
  1634. <xsl:choose>
  1635. <xsl:when test="@kind='typedef'">
  1636. <xsl:call-template name="typedef">
  1637. <xsl:with-param name="class-name" select="$name"/>
  1638. </xsl:call-template>
  1639. </xsl:when>
  1640. <xsl:when test="@kind='variable'">
  1641. <xsl:call-template name="variable"/>
  1642. </xsl:when>
  1643. <xsl:when test="@kind='enum'">
  1644. <xsl:call-template name="enum">
  1645. <xsl:with-param name="enum-name" select="$name"/>
  1646. <xsl:with-param name="id" select="$id"/>
  1647. </xsl:call-template>
  1648. </xsl:when>
  1649. <xsl:when test="@kind='function'">
  1650. <xsl:call-template name="function"/>
  1651. </xsl:when>
  1652. </xsl:choose>
  1653. <xsl:text>
  1654. </xsl:text><xsl:apply-templates select="detaileddescription" mode="markup"/>
  1655. <xsl:if test="$overload-count = 1">
  1656. <xsl:call-template name="header-requirements">
  1657. <xsl:with-param name="file" select="location/@file"/>
  1658. </xsl:call-template>
  1659. </xsl:if>
  1660. [endsect]
  1661. <xsl:if test="$overload-count &gt; 1 and $overload-position = $overload-count">
  1662. [endsect]
  1663. </xsl:if>
  1664. </xsl:template>
  1665. </xsl:stylesheet>