| Alp Toker | 59c6bc5 | 2014-04-28 02:39:27 +0000 | [diff] [blame] | 1 | /*==-- clang-c/Documentation.h - Utilities for comment processing -*- C -*-===*\ | 
|  | 2 | |*                                                                            *| | 
|  | 3 | |*                     The LLVM Compiler Infrastructure                       *| | 
|  | 4 | |*                                                                            *| | 
|  | 5 | |* This file is distributed under the University of Illinois Open Source      *| | 
|  | 6 | |* License. See LICENSE.TXT for details.                                      *| | 
|  | 7 | |*                                                                            *| | 
|  | 8 | |*===----------------------------------------------------------------------===*| | 
|  | 9 | |*                                                                            *| | 
|  | 10 | |* This header provides a supplementary interface for inspecting              *| | 
|  | 11 | |* documentation comments.                                                    *| | 
|  | 12 | |*                                                                            *| | 
|  | 13 | \*===----------------------------------------------------------------------===*/ | 
|  | 14 |  | 
| Benjamin Kramer | 2f5db8b | 2014-08-13 16:25:19 +0000 | [diff] [blame] | 15 | #ifndef LLVM_CLANG_C_DOCUMENTATION_H | 
|  | 16 | #define LLVM_CLANG_C_DOCUMENTATION_H | 
| Alp Toker | 59c6bc5 | 2014-04-28 02:39:27 +0000 | [diff] [blame] | 17 |  | 
|  | 18 | #include "clang-c/Index.h" | 
|  | 19 |  | 
|  | 20 | #ifdef __cplusplus | 
|  | 21 | extern "C" { | 
|  | 22 | #endif | 
|  | 23 |  | 
|  | 24 | /** | 
|  | 25 | * \defgroup CINDEX_COMMENT Comment introspection | 
|  | 26 | * | 
|  | 27 | * The routines in this group provide access to information in documentation | 
|  | 28 | * comments. These facilities are distinct from the core and may be subject to | 
|  | 29 | * their own schedule of stability and deprecation. | 
|  | 30 | * | 
|  | 31 | * @{ | 
|  | 32 | */ | 
|  | 33 |  | 
|  | 34 | /** | 
|  | 35 | * \brief A parsed comment. | 
|  | 36 | */ | 
|  | 37 | typedef struct { | 
|  | 38 | const void *ASTNode; | 
|  | 39 | CXTranslationUnit TranslationUnit; | 
|  | 40 | } CXComment; | 
|  | 41 |  | 
|  | 42 | /** | 
|  | 43 | * \brief Given a cursor that represents a documentable entity (e.g., | 
|  | 44 | * declaration), return the associated parsed comment as a | 
|  | 45 | * \c CXComment_FullComment AST node. | 
|  | 46 | */ | 
|  | 47 | CINDEX_LINKAGE CXComment clang_Cursor_getParsedComment(CXCursor C); | 
|  | 48 |  | 
|  | 49 | /** | 
|  | 50 | * \brief Describes the type of the comment AST node (\c CXComment).  A comment | 
|  | 51 | * node can be considered block content (e. g., paragraph), inline content | 
|  | 52 | * (plain text) or neither (the root AST node). | 
|  | 53 | */ | 
|  | 54 | enum CXCommentKind { | 
|  | 55 | /** | 
|  | 56 | * \brief Null comment.  No AST node is constructed at the requested location | 
|  | 57 | * because there is no text or a syntax error. | 
|  | 58 | */ | 
|  | 59 | CXComment_Null = 0, | 
|  | 60 |  | 
|  | 61 | /** | 
|  | 62 | * \brief Plain text.  Inline content. | 
|  | 63 | */ | 
|  | 64 | CXComment_Text = 1, | 
|  | 65 |  | 
|  | 66 | /** | 
|  | 67 | * \brief A command with word-like arguments that is considered inline content. | 
|  | 68 | * | 
|  | 69 | * For example: \\c command. | 
|  | 70 | */ | 
|  | 71 | CXComment_InlineCommand = 2, | 
|  | 72 |  | 
|  | 73 | /** | 
|  | 74 | * \brief HTML start tag with attributes (name-value pairs).  Considered | 
|  | 75 | * inline content. | 
|  | 76 | * | 
|  | 77 | * For example: | 
|  | 78 | * \verbatim | 
|  | 79 | * <br> <br /> <a href="http://example.org/"> | 
|  | 80 | * \endverbatim | 
|  | 81 | */ | 
|  | 82 | CXComment_HTMLStartTag = 3, | 
|  | 83 |  | 
|  | 84 | /** | 
|  | 85 | * \brief HTML end tag.  Considered inline content. | 
|  | 86 | * | 
|  | 87 | * For example: | 
|  | 88 | * \verbatim | 
|  | 89 | * </a> | 
|  | 90 | * \endverbatim | 
|  | 91 | */ | 
|  | 92 | CXComment_HTMLEndTag = 4, | 
|  | 93 |  | 
|  | 94 | /** | 
|  | 95 | * \brief A paragraph, contains inline comment.  The paragraph itself is | 
|  | 96 | * block content. | 
|  | 97 | */ | 
|  | 98 | CXComment_Paragraph = 5, | 
|  | 99 |  | 
|  | 100 | /** | 
|  | 101 | * \brief A command that has zero or more word-like arguments (number of | 
|  | 102 | * word-like arguments depends on command name) and a paragraph as an | 
|  | 103 | * argument.  Block command is block content. | 
|  | 104 | * | 
|  | 105 | * Paragraph argument is also a child of the block command. | 
|  | 106 | * | 
|  | 107 | * For example: \\brief has 0 word-like arguments and a paragraph argument. | 
|  | 108 | * | 
|  | 109 | * AST nodes of special kinds that parser knows about (e. g., \\param | 
|  | 110 | * command) have their own node kinds. | 
|  | 111 | */ | 
|  | 112 | CXComment_BlockCommand = 6, | 
|  | 113 |  | 
|  | 114 | /** | 
|  | 115 | * \brief A \\param or \\arg command that describes the function parameter | 
|  | 116 | * (name, passing direction, description). | 
|  | 117 | * | 
|  | 118 | * For example: \\param [in] ParamName description. | 
|  | 119 | */ | 
|  | 120 | CXComment_ParamCommand = 7, | 
|  | 121 |  | 
|  | 122 | /** | 
|  | 123 | * \brief A \\tparam command that describes a template parameter (name and | 
|  | 124 | * description). | 
|  | 125 | * | 
|  | 126 | * For example: \\tparam T description. | 
|  | 127 | */ | 
|  | 128 | CXComment_TParamCommand = 8, | 
|  | 129 |  | 
|  | 130 | /** | 
|  | 131 | * \brief A verbatim block command (e. g., preformatted code).  Verbatim | 
|  | 132 | * block has an opening and a closing command and contains multiple lines of | 
|  | 133 | * text (\c CXComment_VerbatimBlockLine child nodes). | 
|  | 134 | * | 
|  | 135 | * For example: | 
|  | 136 | * \\verbatim | 
|  | 137 | * aaa | 
|  | 138 | * \\endverbatim | 
|  | 139 | */ | 
|  | 140 | CXComment_VerbatimBlockCommand = 9, | 
|  | 141 |  | 
|  | 142 | /** | 
|  | 143 | * \brief A line of text that is contained within a | 
|  | 144 | * CXComment_VerbatimBlockCommand node. | 
|  | 145 | */ | 
|  | 146 | CXComment_VerbatimBlockLine = 10, | 
|  | 147 |  | 
|  | 148 | /** | 
|  | 149 | * \brief A verbatim line command.  Verbatim line has an opening command, | 
|  | 150 | * a single line of text (up to the newline after the opening command) and | 
|  | 151 | * has no closing command. | 
|  | 152 | */ | 
|  | 153 | CXComment_VerbatimLine = 11, | 
|  | 154 |  | 
|  | 155 | /** | 
|  | 156 | * \brief A full comment attached to a declaration, contains block content. | 
|  | 157 | */ | 
|  | 158 | CXComment_FullComment = 12 | 
|  | 159 | }; | 
|  | 160 |  | 
|  | 161 | /** | 
|  | 162 | * \brief The most appropriate rendering mode for an inline command, chosen on | 
|  | 163 | * command semantics in Doxygen. | 
|  | 164 | */ | 
|  | 165 | enum CXCommentInlineCommandRenderKind { | 
|  | 166 | /** | 
|  | 167 | * \brief Command argument should be rendered in a normal font. | 
|  | 168 | */ | 
|  | 169 | CXCommentInlineCommandRenderKind_Normal, | 
|  | 170 |  | 
|  | 171 | /** | 
|  | 172 | * \brief Command argument should be rendered in a bold font. | 
|  | 173 | */ | 
|  | 174 | CXCommentInlineCommandRenderKind_Bold, | 
|  | 175 |  | 
|  | 176 | /** | 
|  | 177 | * \brief Command argument should be rendered in a monospaced font. | 
|  | 178 | */ | 
|  | 179 | CXCommentInlineCommandRenderKind_Monospaced, | 
|  | 180 |  | 
|  | 181 | /** | 
|  | 182 | * \brief Command argument should be rendered emphasized (typically italic | 
|  | 183 | * font). | 
|  | 184 | */ | 
|  | 185 | CXCommentInlineCommandRenderKind_Emphasized | 
|  | 186 | }; | 
|  | 187 |  | 
|  | 188 | /** | 
|  | 189 | * \brief Describes parameter passing direction for \\param or \\arg command. | 
|  | 190 | */ | 
|  | 191 | enum CXCommentParamPassDirection { | 
|  | 192 | /** | 
|  | 193 | * \brief The parameter is an input parameter. | 
|  | 194 | */ | 
|  | 195 | CXCommentParamPassDirection_In, | 
|  | 196 |  | 
|  | 197 | /** | 
|  | 198 | * \brief The parameter is an output parameter. | 
|  | 199 | */ | 
|  | 200 | CXCommentParamPassDirection_Out, | 
|  | 201 |  | 
|  | 202 | /** | 
|  | 203 | * \brief The parameter is an input and output parameter. | 
|  | 204 | */ | 
|  | 205 | CXCommentParamPassDirection_InOut | 
|  | 206 | }; | 
|  | 207 |  | 
|  | 208 | /** | 
|  | 209 | * \param Comment AST node of any kind. | 
|  | 210 | * | 
|  | 211 | * \returns the type of the AST node. | 
|  | 212 | */ | 
|  | 213 | CINDEX_LINKAGE enum CXCommentKind clang_Comment_getKind(CXComment Comment); | 
|  | 214 |  | 
|  | 215 | /** | 
|  | 216 | * \param Comment AST node of any kind. | 
|  | 217 | * | 
|  | 218 | * \returns number of children of the AST node. | 
|  | 219 | */ | 
|  | 220 | CINDEX_LINKAGE unsigned clang_Comment_getNumChildren(CXComment Comment); | 
|  | 221 |  | 
|  | 222 | /** | 
|  | 223 | * \param Comment AST node of any kind. | 
|  | 224 | * | 
|  | 225 | * \param ChildIdx child index (zero-based). | 
|  | 226 | * | 
|  | 227 | * \returns the specified child of the AST node. | 
|  | 228 | */ | 
|  | 229 | CINDEX_LINKAGE | 
|  | 230 | CXComment clang_Comment_getChild(CXComment Comment, unsigned ChildIdx); | 
|  | 231 |  | 
|  | 232 | /** | 
|  | 233 | * \brief A \c CXComment_Paragraph node is considered whitespace if it contains | 
|  | 234 | * only \c CXComment_Text nodes that are empty or whitespace. | 
|  | 235 | * | 
|  | 236 | * Other AST nodes (except \c CXComment_Paragraph and \c CXComment_Text) are | 
|  | 237 | * never considered whitespace. | 
|  | 238 | * | 
|  | 239 | * \returns non-zero if \c Comment is whitespace. | 
|  | 240 | */ | 
|  | 241 | CINDEX_LINKAGE unsigned clang_Comment_isWhitespace(CXComment Comment); | 
|  | 242 |  | 
|  | 243 | /** | 
|  | 244 | * \returns non-zero if \c Comment is inline content and has a newline | 
|  | 245 | * immediately following it in the comment text.  Newlines between paragraphs | 
|  | 246 | * do not count. | 
|  | 247 | */ | 
|  | 248 | CINDEX_LINKAGE | 
|  | 249 | unsigned clang_InlineContentComment_hasTrailingNewline(CXComment Comment); | 
|  | 250 |  | 
|  | 251 | /** | 
|  | 252 | * \param Comment a \c CXComment_Text AST node. | 
|  | 253 | * | 
|  | 254 | * \returns text contained in the AST node. | 
|  | 255 | */ | 
|  | 256 | CINDEX_LINKAGE CXString clang_TextComment_getText(CXComment Comment); | 
|  | 257 |  | 
|  | 258 | /** | 
|  | 259 | * \param Comment a \c CXComment_InlineCommand AST node. | 
|  | 260 | * | 
|  | 261 | * \returns name of the inline command. | 
|  | 262 | */ | 
|  | 263 | CINDEX_LINKAGE | 
|  | 264 | CXString clang_InlineCommandComment_getCommandName(CXComment Comment); | 
|  | 265 |  | 
|  | 266 | /** | 
|  | 267 | * \param Comment a \c CXComment_InlineCommand AST node. | 
|  | 268 | * | 
|  | 269 | * \returns the most appropriate rendering mode, chosen on command | 
|  | 270 | * semantics in Doxygen. | 
|  | 271 | */ | 
|  | 272 | CINDEX_LINKAGE enum CXCommentInlineCommandRenderKind | 
|  | 273 | clang_InlineCommandComment_getRenderKind(CXComment Comment); | 
|  | 274 |  | 
|  | 275 | /** | 
|  | 276 | * \param Comment a \c CXComment_InlineCommand AST node. | 
|  | 277 | * | 
|  | 278 | * \returns number of command arguments. | 
|  | 279 | */ | 
|  | 280 | CINDEX_LINKAGE | 
|  | 281 | unsigned clang_InlineCommandComment_getNumArgs(CXComment Comment); | 
|  | 282 |  | 
|  | 283 | /** | 
|  | 284 | * \param Comment a \c CXComment_InlineCommand AST node. | 
|  | 285 | * | 
|  | 286 | * \param ArgIdx argument index (zero-based). | 
|  | 287 | * | 
|  | 288 | * \returns text of the specified argument. | 
|  | 289 | */ | 
|  | 290 | CINDEX_LINKAGE | 
|  | 291 | CXString clang_InlineCommandComment_getArgText(CXComment Comment, | 
|  | 292 | unsigned ArgIdx); | 
|  | 293 |  | 
|  | 294 | /** | 
|  | 295 | * \param Comment a \c CXComment_HTMLStartTag or \c CXComment_HTMLEndTag AST | 
|  | 296 | * node. | 
|  | 297 | * | 
|  | 298 | * \returns HTML tag name. | 
|  | 299 | */ | 
|  | 300 | CINDEX_LINKAGE CXString clang_HTMLTagComment_getTagName(CXComment Comment); | 
|  | 301 |  | 
|  | 302 | /** | 
|  | 303 | * \param Comment a \c CXComment_HTMLStartTag AST node. | 
|  | 304 | * | 
|  | 305 | * \returns non-zero if tag is self-closing (for example, <br />). | 
|  | 306 | */ | 
|  | 307 | CINDEX_LINKAGE | 
|  | 308 | unsigned clang_HTMLStartTagComment_isSelfClosing(CXComment Comment); | 
|  | 309 |  | 
|  | 310 | /** | 
|  | 311 | * \param Comment a \c CXComment_HTMLStartTag AST node. | 
|  | 312 | * | 
|  | 313 | * \returns number of attributes (name-value pairs) attached to the start tag. | 
|  | 314 | */ | 
|  | 315 | CINDEX_LINKAGE unsigned clang_HTMLStartTag_getNumAttrs(CXComment Comment); | 
|  | 316 |  | 
|  | 317 | /** | 
|  | 318 | * \param Comment a \c CXComment_HTMLStartTag AST node. | 
|  | 319 | * | 
|  | 320 | * \param AttrIdx attribute index (zero-based). | 
|  | 321 | * | 
|  | 322 | * \returns name of the specified attribute. | 
|  | 323 | */ | 
|  | 324 | CINDEX_LINKAGE | 
|  | 325 | CXString clang_HTMLStartTag_getAttrName(CXComment Comment, unsigned AttrIdx); | 
|  | 326 |  | 
|  | 327 | /** | 
|  | 328 | * \param Comment a \c CXComment_HTMLStartTag AST node. | 
|  | 329 | * | 
|  | 330 | * \param AttrIdx attribute index (zero-based). | 
|  | 331 | * | 
|  | 332 | * \returns value of the specified attribute. | 
|  | 333 | */ | 
|  | 334 | CINDEX_LINKAGE | 
|  | 335 | CXString clang_HTMLStartTag_getAttrValue(CXComment Comment, unsigned AttrIdx); | 
|  | 336 |  | 
|  | 337 | /** | 
|  | 338 | * \param Comment a \c CXComment_BlockCommand AST node. | 
|  | 339 | * | 
|  | 340 | * \returns name of the block command. | 
|  | 341 | */ | 
|  | 342 | CINDEX_LINKAGE | 
|  | 343 | CXString clang_BlockCommandComment_getCommandName(CXComment Comment); | 
|  | 344 |  | 
|  | 345 | /** | 
|  | 346 | * \param Comment a \c CXComment_BlockCommand AST node. | 
|  | 347 | * | 
|  | 348 | * \returns number of word-like arguments. | 
|  | 349 | */ | 
|  | 350 | CINDEX_LINKAGE | 
|  | 351 | unsigned clang_BlockCommandComment_getNumArgs(CXComment Comment); | 
|  | 352 |  | 
|  | 353 | /** | 
|  | 354 | * \param Comment a \c CXComment_BlockCommand AST node. | 
|  | 355 | * | 
|  | 356 | * \param ArgIdx argument index (zero-based). | 
|  | 357 | * | 
|  | 358 | * \returns text of the specified word-like argument. | 
|  | 359 | */ | 
|  | 360 | CINDEX_LINKAGE | 
|  | 361 | CXString clang_BlockCommandComment_getArgText(CXComment Comment, | 
|  | 362 | unsigned ArgIdx); | 
|  | 363 |  | 
|  | 364 | /** | 
|  | 365 | * \param Comment a \c CXComment_BlockCommand or | 
|  | 366 | * \c CXComment_VerbatimBlockCommand AST node. | 
|  | 367 | * | 
|  | 368 | * \returns paragraph argument of the block command. | 
|  | 369 | */ | 
|  | 370 | CINDEX_LINKAGE | 
|  | 371 | CXComment clang_BlockCommandComment_getParagraph(CXComment Comment); | 
|  | 372 |  | 
|  | 373 | /** | 
|  | 374 | * \param Comment a \c CXComment_ParamCommand AST node. | 
|  | 375 | * | 
|  | 376 | * \returns parameter name. | 
|  | 377 | */ | 
|  | 378 | CINDEX_LINKAGE | 
|  | 379 | CXString clang_ParamCommandComment_getParamName(CXComment Comment); | 
|  | 380 |  | 
|  | 381 | /** | 
|  | 382 | * \param Comment a \c CXComment_ParamCommand AST node. | 
|  | 383 | * | 
|  | 384 | * \returns non-zero if the parameter that this AST node represents was found | 
|  | 385 | * in the function prototype and \c clang_ParamCommandComment_getParamIndex | 
|  | 386 | * function will return a meaningful value. | 
|  | 387 | */ | 
|  | 388 | CINDEX_LINKAGE | 
|  | 389 | unsigned clang_ParamCommandComment_isParamIndexValid(CXComment Comment); | 
|  | 390 |  | 
|  | 391 | /** | 
|  | 392 | * \param Comment a \c CXComment_ParamCommand AST node. | 
|  | 393 | * | 
|  | 394 | * \returns zero-based parameter index in function prototype. | 
|  | 395 | */ | 
|  | 396 | CINDEX_LINKAGE | 
|  | 397 | unsigned clang_ParamCommandComment_getParamIndex(CXComment Comment); | 
|  | 398 |  | 
|  | 399 | /** | 
|  | 400 | * \param Comment a \c CXComment_ParamCommand AST node. | 
|  | 401 | * | 
|  | 402 | * \returns non-zero if parameter passing direction was specified explicitly in | 
|  | 403 | * the comment. | 
|  | 404 | */ | 
|  | 405 | CINDEX_LINKAGE | 
|  | 406 | unsigned clang_ParamCommandComment_isDirectionExplicit(CXComment Comment); | 
|  | 407 |  | 
|  | 408 | /** | 
|  | 409 | * \param Comment a \c CXComment_ParamCommand AST node. | 
|  | 410 | * | 
|  | 411 | * \returns parameter passing direction. | 
|  | 412 | */ | 
|  | 413 | CINDEX_LINKAGE | 
|  | 414 | enum CXCommentParamPassDirection clang_ParamCommandComment_getDirection( | 
|  | 415 | CXComment Comment); | 
|  | 416 |  | 
|  | 417 | /** | 
|  | 418 | * \param Comment a \c CXComment_TParamCommand AST node. | 
|  | 419 | * | 
|  | 420 | * \returns template parameter name. | 
|  | 421 | */ | 
|  | 422 | CINDEX_LINKAGE | 
|  | 423 | CXString clang_TParamCommandComment_getParamName(CXComment Comment); | 
|  | 424 |  | 
|  | 425 | /** | 
|  | 426 | * \param Comment a \c CXComment_TParamCommand AST node. | 
|  | 427 | * | 
|  | 428 | * \returns non-zero if the parameter that this AST node represents was found | 
|  | 429 | * in the template parameter list and | 
|  | 430 | * \c clang_TParamCommandComment_getDepth and | 
|  | 431 | * \c clang_TParamCommandComment_getIndex functions will return a meaningful | 
|  | 432 | * value. | 
|  | 433 | */ | 
|  | 434 | CINDEX_LINKAGE | 
|  | 435 | unsigned clang_TParamCommandComment_isParamPositionValid(CXComment Comment); | 
|  | 436 |  | 
|  | 437 | /** | 
|  | 438 | * \param Comment a \c CXComment_TParamCommand AST node. | 
|  | 439 | * | 
|  | 440 | * \returns zero-based nesting depth of this parameter in the template parameter list. | 
|  | 441 | * | 
|  | 442 | * For example, | 
|  | 443 | * \verbatim | 
|  | 444 | *     template<typename C, template<typename T> class TT> | 
|  | 445 | *     void test(TT<int> aaa); | 
|  | 446 | * \endverbatim | 
|  | 447 | * for C and TT nesting depth is 0, | 
|  | 448 | * for T nesting depth is 1. | 
|  | 449 | */ | 
|  | 450 | CINDEX_LINKAGE | 
|  | 451 | unsigned clang_TParamCommandComment_getDepth(CXComment Comment); | 
|  | 452 |  | 
|  | 453 | /** | 
|  | 454 | * \param Comment a \c CXComment_TParamCommand AST node. | 
|  | 455 | * | 
|  | 456 | * \returns zero-based parameter index in the template parameter list at a | 
|  | 457 | * given nesting depth. | 
|  | 458 | * | 
|  | 459 | * For example, | 
|  | 460 | * \verbatim | 
|  | 461 | *     template<typename C, template<typename T> class TT> | 
|  | 462 | *     void test(TT<int> aaa); | 
|  | 463 | * \endverbatim | 
|  | 464 | * for C and TT nesting depth is 0, so we can ask for index at depth 0: | 
|  | 465 | * at depth 0 C's index is 0, TT's index is 1. | 
|  | 466 | * | 
|  | 467 | * For T nesting depth is 1, so we can ask for index at depth 0 and 1: | 
|  | 468 | * at depth 0 T's index is 1 (same as TT's), | 
|  | 469 | * at depth 1 T's index is 0. | 
|  | 470 | */ | 
|  | 471 | CINDEX_LINKAGE | 
|  | 472 | unsigned clang_TParamCommandComment_getIndex(CXComment Comment, unsigned Depth); | 
|  | 473 |  | 
|  | 474 | /** | 
|  | 475 | * \param Comment a \c CXComment_VerbatimBlockLine AST node. | 
|  | 476 | * | 
|  | 477 | * \returns text contained in the AST node. | 
|  | 478 | */ | 
|  | 479 | CINDEX_LINKAGE | 
|  | 480 | CXString clang_VerbatimBlockLineComment_getText(CXComment Comment); | 
|  | 481 |  | 
|  | 482 | /** | 
|  | 483 | * \param Comment a \c CXComment_VerbatimLine AST node. | 
|  | 484 | * | 
|  | 485 | * \returns text contained in the AST node. | 
|  | 486 | */ | 
|  | 487 | CINDEX_LINKAGE CXString clang_VerbatimLineComment_getText(CXComment Comment); | 
|  | 488 |  | 
|  | 489 | /** | 
|  | 490 | * \brief Convert an HTML tag AST node to string. | 
|  | 491 | * | 
|  | 492 | * \param Comment a \c CXComment_HTMLStartTag or \c CXComment_HTMLEndTag AST | 
|  | 493 | * node. | 
|  | 494 | * | 
|  | 495 | * \returns string containing an HTML tag. | 
|  | 496 | */ | 
|  | 497 | CINDEX_LINKAGE CXString clang_HTMLTagComment_getAsString(CXComment Comment); | 
|  | 498 |  | 
|  | 499 | /** | 
|  | 500 | * \brief Convert a given full parsed comment to an HTML fragment. | 
|  | 501 | * | 
|  | 502 | * Specific details of HTML layout are subject to change.  Don't try to parse | 
|  | 503 | * this HTML back into an AST, use other APIs instead. | 
|  | 504 | * | 
|  | 505 | * Currently the following CSS classes are used: | 
|  | 506 | * \li "para-brief" for \\brief paragraph and equivalent commands; | 
|  | 507 | * \li "para-returns" for \\returns paragraph and equivalent commands; | 
|  | 508 | * \li "word-returns" for the "Returns" word in \\returns paragraph. | 
|  | 509 | * | 
|  | 510 | * Function argument documentation is rendered as a \<dl\> list with arguments | 
|  | 511 | * sorted in function prototype order.  CSS classes used: | 
|  | 512 | * \li "param-name-index-NUMBER" for parameter name (\<dt\>); | 
|  | 513 | * \li "param-descr-index-NUMBER" for parameter description (\<dd\>); | 
|  | 514 | * \li "param-name-index-invalid" and "param-descr-index-invalid" are used if | 
|  | 515 | * parameter index is invalid. | 
|  | 516 | * | 
|  | 517 | * Template parameter documentation is rendered as a \<dl\> list with | 
|  | 518 | * parameters sorted in template parameter list order.  CSS classes used: | 
|  | 519 | * \li "tparam-name-index-NUMBER" for parameter name (\<dt\>); | 
|  | 520 | * \li "tparam-descr-index-NUMBER" for parameter description (\<dd\>); | 
|  | 521 | * \li "tparam-name-index-other" and "tparam-descr-index-other" are used for | 
|  | 522 | * names inside template template parameters; | 
|  | 523 | * \li "tparam-name-index-invalid" and "tparam-descr-index-invalid" are used if | 
|  | 524 | * parameter position is invalid. | 
|  | 525 | * | 
|  | 526 | * \param Comment a \c CXComment_FullComment AST node. | 
|  | 527 | * | 
|  | 528 | * \returns string containing an HTML fragment. | 
|  | 529 | */ | 
|  | 530 | CINDEX_LINKAGE CXString clang_FullComment_getAsHTML(CXComment Comment); | 
|  | 531 |  | 
|  | 532 | /** | 
|  | 533 | * \brief Convert a given full parsed comment to an XML document. | 
|  | 534 | * | 
|  | 535 | * A Relax NG schema for the XML can be found in comment-xml-schema.rng file | 
|  | 536 | * inside clang source tree. | 
|  | 537 | * | 
|  | 538 | * \param Comment a \c CXComment_FullComment AST node. | 
|  | 539 | * | 
|  | 540 | * \returns string containing an XML document. | 
|  | 541 | */ | 
|  | 542 | CINDEX_LINKAGE CXString clang_FullComment_getAsXML(CXComment Comment); | 
|  | 543 |  | 
|  | 544 | /** | 
|  | 545 | * @} | 
|  | 546 | */ | 
|  | 547 |  | 
|  | 548 |  | 
|  | 549 | #ifdef __cplusplus | 
|  | 550 | } | 
|  | 551 | #endif | 
|  | 552 |  | 
|  | 553 | #endif /* CLANG_C_DOCUMENTATION_H */ | 
|  | 554 |  |