10b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 20b57cec5SDimitry Andric// Define command classes. 30b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 40b57cec5SDimitry Andric 50b57cec5SDimitry Andricclass Command<string name> { 60b57cec5SDimitry Andric string Name = name; 70b57cec5SDimitry Andric string EndCommandName = ""; 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric int NumArgs = 0; 100b57cec5SDimitry Andric 110b57cec5SDimitry Andric bit IsInlineCommand = 0; 120b57cec5SDimitry Andric 130b57cec5SDimitry Andric bit IsBlockCommand = 0; 140b57cec5SDimitry Andric bit IsBriefCommand = 0; 150b57cec5SDimitry Andric bit IsReturnsCommand = 0; 160b57cec5SDimitry Andric bit IsParamCommand = 0; 170b57cec5SDimitry Andric bit IsTParamCommand = 0; 180b57cec5SDimitry Andric bit IsThrowsCommand = 0; 190b57cec5SDimitry Andric bit IsDeprecatedCommand = 0; 200b57cec5SDimitry Andric bit IsHeaderfileCommand = 0; 210b57cec5SDimitry Andric 220b57cec5SDimitry Andric bit IsEmptyParagraphAllowed = 0; 230b57cec5SDimitry Andric 240b57cec5SDimitry Andric bit IsVerbatimBlockCommand = 0; 250b57cec5SDimitry Andric bit IsVerbatimBlockEndCommand = 0; 260b57cec5SDimitry Andric bit IsVerbatimLineCommand = 0; 270b57cec5SDimitry Andric bit IsDeclarationCommand = 0; 280b57cec5SDimitry Andric bit IsFunctionDeclarationCommand = 0; 290b57cec5SDimitry Andric bit IsRecordLikeDetailCommand = 0; 300b57cec5SDimitry Andric bit IsRecordLikeDeclarationCommand = 0; 310b57cec5SDimitry Andric} 320b57cec5SDimitry Andric 330b57cec5SDimitry Andricclass InlineCommand<string name> : Command<name> { 3481ad6265SDimitry Andric let NumArgs = 1; 350b57cec5SDimitry Andric let IsInlineCommand = 1; 360b57cec5SDimitry Andric} 370b57cec5SDimitry Andric 380b57cec5SDimitry Andricclass BlockCommand<string name> : Command<name> { 390b57cec5SDimitry Andric let IsBlockCommand = 1; 400b57cec5SDimitry Andric} 410b57cec5SDimitry Andric 420b57cec5SDimitry Andricclass RecordLikeDetailCommand<string name> : BlockCommand<name> { 430b57cec5SDimitry Andric let IsRecordLikeDetailCommand = 1; 440b57cec5SDimitry Andric} 450b57cec5SDimitry Andric 460b57cec5SDimitry Andricclass VerbatimBlockCommand<string name> : Command<name> { 470b57cec5SDimitry Andric let EndCommandName = name; 480b57cec5SDimitry Andric let IsVerbatimBlockCommand = 1; 490b57cec5SDimitry Andric} 500b57cec5SDimitry Andric 510b57cec5SDimitry Andricmulticlass VerbatimBlockCommand<string name, string endCommandName> { 520b57cec5SDimitry Andric def Begin : Command<name> { 530b57cec5SDimitry Andric let EndCommandName = endCommandName; 540b57cec5SDimitry Andric let IsVerbatimBlockCommand = 1; 550b57cec5SDimitry Andric } 560b57cec5SDimitry Andric 570b57cec5SDimitry Andric def End : Command<endCommandName> { 580b57cec5SDimitry Andric let IsVerbatimBlockEndCommand = 1; 590b57cec5SDimitry Andric } 600b57cec5SDimitry Andric} 610b57cec5SDimitry Andric 620b57cec5SDimitry Andricclass VerbatimLineCommand<string name> : Command<name> { 630b57cec5SDimitry Andric let IsVerbatimLineCommand = 1; 640b57cec5SDimitry Andric} 650b57cec5SDimitry Andric 6681ad6265SDimitry Andricclass PropertyCommand<string name> : Command<name> { 6781ad6265SDimitry Andric let NumArgs = 0; 6881ad6265SDimitry Andric let IsInlineCommand = 1; 6981ad6265SDimitry Andric} 7081ad6265SDimitry Andric 710b57cec5SDimitry Andricclass DeclarationVerbatimLineCommand<string name> : 720b57cec5SDimitry Andric VerbatimLineCommand<name> { 730b57cec5SDimitry Andric let IsDeclarationCommand = 1; 740b57cec5SDimitry Andric} 750b57cec5SDimitry Andric 760b57cec5SDimitry Andricclass FunctionDeclarationVerbatimLineCommand<string name> : 770b57cec5SDimitry Andric DeclarationVerbatimLineCommand<name> { 780b57cec5SDimitry Andric let IsFunctionDeclarationCommand = 1; 790b57cec5SDimitry Andric} 800b57cec5SDimitry Andric 810b57cec5SDimitry Andricclass RecordLikeDeclarationVerbatimLineCommand<string name> : 820b57cec5SDimitry Andric DeclarationVerbatimLineCommand<name> { 830b57cec5SDimitry Andric let IsRecordLikeDeclarationCommand = 1; 840b57cec5SDimitry Andric} 850b57cec5SDimitry Andric 860b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 870b57cec5SDimitry Andric// InlineCommand 880b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 890b57cec5SDimitry Andric 900b57cec5SDimitry Andricdef B : InlineCommand<"b">; 910b57cec5SDimitry Andricdef C : InlineCommand<"c">; 920b57cec5SDimitry Andricdef P : InlineCommand<"p">; 930b57cec5SDimitry Andricdef A : InlineCommand<"a">; 940b57cec5SDimitry Andricdef E : InlineCommand<"e">; 9581ad6265SDimitry Andricdef N : InlineCommand<"n"> { let NumArgs = 0; } 960b57cec5SDimitry Andricdef Em : InlineCommand<"em">; 97349cc55cSDimitry Andricdef Emoji : InlineCommand<"emoji">; 98349cc55cSDimitry Andric 99480093f4SDimitry Andricdef Anchor : InlineCommand<"anchor">; 100349cc55cSDimitry Andricdef Ref : InlineCommand<"ref">; 101349cc55cSDimitry Andricdef RefItem : InlineCommand<"refitem">; 102349cc55cSDimitry Andricdef Cite : InlineCommand<"cite">; 103349cc55cSDimitry Andric 104349cc55cSDimitry Andricdef CopyBrief : InlineCommand<"copybrief">; 105349cc55cSDimitry Andricdef CopyDetails : InlineCommand<"copydetails">; 106349cc55cSDimitry Andricdef CopyDoc : InlineCommand<"copydoc">; 107349cc55cSDimitry Andric 108349cc55cSDimitry Andric// Typically not used inline, but they take a single word. 109349cc55cSDimitry Andricdef Extends : InlineCommand<"extends">; 110349cc55cSDimitry Andricdef Implements : InlineCommand<"implements">; 111349cc55cSDimitry Andricdef MemberOf : InlineCommand<"memberof">; 1120b57cec5SDimitry Andric 1130b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 1140b57cec5SDimitry Andric// BlockCommand 1150b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 1160b57cec5SDimitry Andric 1170b57cec5SDimitry Andricdef Brief : BlockCommand<"brief"> { let IsBriefCommand = 1; } 1180b57cec5SDimitry Andricdef Short : BlockCommand<"short"> { let IsBriefCommand = 1; } 1190b57cec5SDimitry Andric 1200b57cec5SDimitry Andric// Opposite of \brief, it is the default in our implementation. 1210b57cec5SDimitry Andricdef Details : BlockCommand<"details">; 1220b57cec5SDimitry Andric 1230b57cec5SDimitry Andricdef Returns : BlockCommand<"returns"> { let IsReturnsCommand = 1; } 1240b57cec5SDimitry Andricdef Return : BlockCommand<"return"> { let IsReturnsCommand = 1; } 1250b57cec5SDimitry Andricdef Result : BlockCommand<"result"> { let IsReturnsCommand = 1; } 1260b57cec5SDimitry Andric 1270b57cec5SDimitry Andricdef Param : BlockCommand<"param"> { let IsParamCommand = 1; } 1280b57cec5SDimitry Andric 1290b57cec5SDimitry Andric// Doxygen command for template parameter documentation. 1300b57cec5SDimitry Andricdef Tparam : BlockCommand<"tparam"> { let IsTParamCommand = 1; } 1310b57cec5SDimitry Andric 1320b57cec5SDimitry Andric// HeaderDoc command for template parameter documentation. 1330b57cec5SDimitry Andricdef Templatefield : BlockCommand<"templatefield"> { let IsTParamCommand = 1; } 1340b57cec5SDimitry Andric 1350b57cec5SDimitry Andricdef Throws : BlockCommand<"throws"> { let IsThrowsCommand = 1; } 1360b57cec5SDimitry Andricdef Throw : BlockCommand<"throw"> { let IsThrowsCommand = 1; } 1370b57cec5SDimitry Andricdef Exception : BlockCommand<"exception"> { let IsThrowsCommand = 1; } 1380b57cec5SDimitry Andric 1390b57cec5SDimitry Andricdef Deprecated : BlockCommand<"deprecated"> { 1400b57cec5SDimitry Andric let IsEmptyParagraphAllowed = 1; 1410b57cec5SDimitry Andric let IsDeprecatedCommand = 1; 1420b57cec5SDimitry Andric} 1430b57cec5SDimitry Andric 1440b57cec5SDimitry Andricdef Headerfile : BlockCommand<"headerfile"> { let IsHeaderfileCommand = 1; } 1450b57cec5SDimitry Andric 1460b57cec5SDimitry Andric// We don't do any additional semantic analysis for the following 1470b57cec5SDimitry Andric// BlockCommands. It might be a good idea to do something extra for them, but 1480b57cec5SDimitry Andric// for now we model them as plain BlockCommands. 1490b57cec5SDimitry Andricdef Arg : BlockCommand<"arg">; 1500b57cec5SDimitry Andricdef Attention : BlockCommand<"attention">; 1510b57cec5SDimitry Andricdef Author : BlockCommand<"author">; 1520b57cec5SDimitry Andricdef Authors : BlockCommand<"authors">; 1530b57cec5SDimitry Andricdef Bug : BlockCommand<"bug">; 1540b57cec5SDimitry Andricdef Copyright : BlockCommand<"copyright">; 1550b57cec5SDimitry Andricdef Date : BlockCommand<"date">; 1560b57cec5SDimitry Andricdef Invariant : BlockCommand<"invariant">; 1570b57cec5SDimitry Andricdef Li : BlockCommand<"li">; 1580b57cec5SDimitry Andricdef Note : BlockCommand<"note">; 1590b57cec5SDimitry Andricdef Par : BlockCommand<"par">; 1600b57cec5SDimitry Andricdef Post : BlockCommand<"post">; 1610b57cec5SDimitry Andricdef Pre : BlockCommand<"pre">; 1620b57cec5SDimitry Andricdef Remark : BlockCommand<"remark">; 1630b57cec5SDimitry Andricdef Remarks : BlockCommand<"remarks">; 16481ad6265SDimitry Andricdef Retval : BlockCommand<"retval"> { let NumArgs = 1; } 1650b57cec5SDimitry Andricdef Sa : BlockCommand<"sa">; 1660b57cec5SDimitry Andricdef See : BlockCommand<"see">; 1670b57cec5SDimitry Andricdef Since : BlockCommand<"since">; 168349cc55cSDimitry Andricdef Test : BlockCommand<"test">; 1690b57cec5SDimitry Andricdef Todo : BlockCommand<"todo">; 1700b57cec5SDimitry Andricdef Version : BlockCommand<"version">; 1710b57cec5SDimitry Andricdef Warning : BlockCommand<"warning">; 17281ad6265SDimitry Andricdef XRefItem : BlockCommand<"xrefitem"> { let NumArgs = 3; } 1730b57cec5SDimitry Andric// HeaderDoc commands 1740b57cec5SDimitry Andricdef Abstract : BlockCommand<"abstract"> { let IsBriefCommand = 1; } 1750b57cec5SDimitry Andricdef ClassDesign : RecordLikeDetailCommand<"classdesign">; 1760b57cec5SDimitry Andricdef CoClass : RecordLikeDetailCommand<"coclass">; 1770b57cec5SDimitry Andricdef Dependency : RecordLikeDetailCommand<"dependency">; 1780b57cec5SDimitry Andricdef Discussion : BlockCommand<"discussion">; 1790b57cec5SDimitry Andricdef Helper : RecordLikeDetailCommand<"helper">; 1800b57cec5SDimitry Andricdef HelperClass : RecordLikeDetailCommand<"helperclass">; 1810b57cec5SDimitry Andricdef Helps : RecordLikeDetailCommand<"helps">; 1820b57cec5SDimitry Andricdef InstanceSize : RecordLikeDetailCommand<"instancesize">; 1830b57cec5SDimitry Andricdef Ownership : RecordLikeDetailCommand<"ownership">; 1840b57cec5SDimitry Andricdef Performance : RecordLikeDetailCommand<"performance">; 1850b57cec5SDimitry Andricdef Security : RecordLikeDetailCommand<"security">; 1860b57cec5SDimitry Andricdef SeeAlso : BlockCommand<"seealso">; 1870b57cec5SDimitry Andricdef SuperClass : RecordLikeDetailCommand<"superclass">; 1880b57cec5SDimitry Andric 1890b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 1900b57cec5SDimitry Andric// VerbatimBlockCommand 1910b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 1920b57cec5SDimitry Andric 1930b57cec5SDimitry Andricdefm Code : VerbatimBlockCommand<"code", "endcode">; 1940b57cec5SDimitry Andricdefm Verbatim : VerbatimBlockCommand<"verbatim", "endverbatim">; 195349cc55cSDimitry Andric 196349cc55cSDimitry Andricdefm DocbookOnly : VerbatimBlockCommand<"docbookonly", "enddocbookonly">; 1970b57cec5SDimitry Andricdefm Htmlonly : VerbatimBlockCommand<"htmlonly", "endhtmlonly">; 1980b57cec5SDimitry Andricdefm Latexonly : VerbatimBlockCommand<"latexonly", "endlatexonly">; 1990b57cec5SDimitry Andricdefm Xmlonly : VerbatimBlockCommand<"xmlonly", "endxmlonly">; 2000b57cec5SDimitry Andricdefm Manonly : VerbatimBlockCommand<"manonly", "endmanonly">; 2010b57cec5SDimitry Andricdefm Rtfonly : VerbatimBlockCommand<"rtfonly", "endrtfonly">; 2020b57cec5SDimitry Andric 2030b57cec5SDimitry Andricdefm Dot : VerbatimBlockCommand<"dot", "enddot">; 2040b57cec5SDimitry Andricdefm Msc : VerbatimBlockCommand<"msc", "endmsc">; 205349cc55cSDimitry Andricdefm Uml : VerbatimBlockCommand<"startuml", "enduml">; 206349cc55cSDimitry Andric 207349cc55cSDimitry Andric// Actually not verbatim blocks, we should also parse commands within them. 208349cc55cSDimitry Andricdefm Internal : VerbatimBlockCommand<"internal", "endinternal">; 209349cc55cSDimitry Andric// TODO: conflicts with HeaderDoc link, /link. 210349cc55cSDimitry Andric//defm Link : VerbatimBlockCommand<"link", "endlink">; 211349cc55cSDimitry Andricdefm ParBlock : VerbatimBlockCommand<"parblock", "endparblock">; 212349cc55cSDimitry Andricdefm SecRefList : VerbatimBlockCommand<"secreflist", "endsecreflist">; 2130b57cec5SDimitry Andric 2140b57cec5SDimitry Andric// These three commands have special support in CommentLexer to recognize their 2150b57cec5SDimitry Andric// names. 2160b57cec5SDimitry Andricdef FDollar : VerbatimBlockCommand<"f$">; // Inline LaTeX formula 217349cc55cSDimitry Andricdefm FParen : VerbatimBlockCommand<"f(", "f)">; // Inline LaTeX text 2180b57cec5SDimitry Andricdefm FBracket : VerbatimBlockCommand<"f[", "f]">; // Displayed LaTeX formula 2190b57cec5SDimitry Andricdefm FBrace : VerbatimBlockCommand<"f{", "f}">; // LaTeX environment 2200b57cec5SDimitry Andric 2210b57cec5SDimitry Andric// HeaderDoc commands 2220b57cec5SDimitry Andricdefm Textblock : VerbatimBlockCommand<"textblock", "/textblock">; 2230b57cec5SDimitry Andricdefm Link : VerbatimBlockCommand<"link", "/link">; 2240b57cec5SDimitry Andric 2250b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 2260b57cec5SDimitry Andric// VerbatimLineCommand 2270b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 2280b57cec5SDimitry Andric 2290b57cec5SDimitry Andricdef Defgroup : VerbatimLineCommand<"defgroup">; 2300b57cec5SDimitry Andricdef Ingroup : VerbatimLineCommand<"ingroup">; 2310b57cec5SDimitry Andricdef Addtogroup : VerbatimLineCommand<"addtogroup">; 2320b57cec5SDimitry Andricdef Weakgroup : VerbatimLineCommand<"weakgroup">; 2330b57cec5SDimitry Andricdef Name : VerbatimLineCommand<"name">; 2340b57cec5SDimitry Andric 235349cc55cSDimitry Andric// These actually take a single word, but it's optional. 236349cc55cSDimitry Andric// And they're used on a separate line typically, not inline. 237349cc55cSDimitry Andricdef Dir : VerbatimLineCommand<"dir">; 238349cc55cSDimitry Andricdef File : VerbatimLineCommand<"file">; 239349cc55cSDimitry Andric 2400b57cec5SDimitry Andricdef Section : VerbatimLineCommand<"section">; 2410b57cec5SDimitry Andricdef Subsection : VerbatimLineCommand<"subsection">; 2420b57cec5SDimitry Andricdef Subsubsection : VerbatimLineCommand<"subsubsection">; 2430b57cec5SDimitry Andricdef Paragraph : VerbatimLineCommand<"paragraph">; 244349cc55cSDimitry Andricdef TableOfContents : VerbatimLineCommand<"tableofcontents">; 2450b57cec5SDimitry Andric 246349cc55cSDimitry Andricdef Page : VerbatimLineCommand<"page">; 2470b57cec5SDimitry Andricdef Mainpage : VerbatimLineCommand<"mainpage">; 2480b57cec5SDimitry Andricdef Subpage : VerbatimLineCommand<"subpage">; 2490b57cec5SDimitry Andric 2500b57cec5SDimitry Andricdef Relates : VerbatimLineCommand<"relates">; 2510b57cec5SDimitry Andricdef Related : VerbatimLineCommand<"related">; 2520b57cec5SDimitry Andricdef RelatesAlso : VerbatimLineCommand<"relatesalso">; 2530b57cec5SDimitry Andricdef RelatedAlso : VerbatimLineCommand<"relatedalso">; 2540b57cec5SDimitry Andric 255349cc55cSDimitry Andricdef AddIndex : VerbatimLineCommand<"addindex">; 256349cc55cSDimitry Andric 257349cc55cSDimitry Andric// These take a single argument mostly, but since they include a file they'll 258349cc55cSDimitry Andric// typically be on their own line. 259349cc55cSDimitry Andricdef DocbookInclude : VerbatimLineCommand<"docbookinclude">; 260349cc55cSDimitry Andricdef DontInclude : VerbatimLineCommand<"dontinclude">; 261349cc55cSDimitry Andricdef Example : VerbatimLineCommand<"example">; 262349cc55cSDimitry Andricdef HtmlInclude : VerbatimLineCommand<"htmlinclude">; 263349cc55cSDimitry Andricdef Include : VerbatimLineCommand<"include">; 264349cc55cSDimitry Andricdef ManInclude : VerbatimLineCommand<"maninclude">; 265349cc55cSDimitry Andricdef LatexInclude : VerbatimLineCommand<"latexinclude">; 266349cc55cSDimitry Andricdef RtfInclude : VerbatimLineCommand<"rtfinclude">; 267349cc55cSDimitry Andricdef Snippet : VerbatimLineCommand<"snippet">; 268349cc55cSDimitry Andricdef VerbInclude : VerbatimLineCommand<"verbinclude">; 269349cc55cSDimitry Andricdef XmlInclude : VerbatimLineCommand<"xmlinclude">; 270349cc55cSDimitry Andric 271349cc55cSDimitry Andricdef Image : VerbatimLineCommand<"image">; 272349cc55cSDimitry Andricdef DotFile : VerbatimLineCommand<"dotfile">; 273349cc55cSDimitry Andricdef MscFile : VerbatimLineCommand<"mscfile">; 274349cc55cSDimitry Andricdef DiaFile : VerbatimLineCommand<"diafile">; 275349cc55cSDimitry Andric 276349cc55cSDimitry Andricdef Line : VerbatimLineCommand<"line">; 277349cc55cSDimitry Andricdef Skip : VerbatimLineCommand<"skip">; 278349cc55cSDimitry Andricdef SkipLine : VerbatimLineCommand<"skipline">; 279349cc55cSDimitry Andricdef Until : VerbatimLineCommand<"until">; 280349cc55cSDimitry Andric 281349cc55cSDimitry Andricdef NoOp : VerbatimLineCommand<"noop">; 282349cc55cSDimitry Andric 283349cc55cSDimitry Andric// We might also build proper support for if/ifnot/else/elseif/endif. 284349cc55cSDimitry Andricdef If : VerbatimLineCommand<"if">; 285349cc55cSDimitry Andricdef IfNot : VerbatimLineCommand<"ifnot">; 286349cc55cSDimitry Andricdef Else : VerbatimLineCommand<"else">; 287349cc55cSDimitry Andricdef ElseIf : VerbatimLineCommand<"elseif">; 288349cc55cSDimitry Andricdef Endif : VerbatimLineCommand<"endif">; 289349cc55cSDimitry Andric 290349cc55cSDimitry Andric// Not treated as VerbatimBlockCommand because it spans multiple comments. 291349cc55cSDimitry Andricdef Cond : VerbatimLineCommand<"cond">; 292349cc55cSDimitry Andricdef EndCond : VerbatimLineCommand<"endcond">; 293349cc55cSDimitry Andric 2940b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 29581ad6265SDimitry Andric// PropertyCommand 29681ad6265SDimitry Andric//===----------------------------------------------------------------------===// 29781ad6265SDimitry Andric 29881ad6265SDimitry Andricdef CallGraph : PropertyCommand<"callgraph">; 29981ad6265SDimitry Andricdef HideCallGraph : PropertyCommand<"hidecallgraph">; 30081ad6265SDimitry Andricdef CallerGraph : PropertyCommand<"callergraph">; 30181ad6265SDimitry Andricdef HideCallerGraph : PropertyCommand<"hidecallergraph">; 30281ad6265SDimitry Andricdef ShowInitializer : PropertyCommand<"showinitializer">; 30381ad6265SDimitry Andricdef HideInitializer : PropertyCommand<"hideinitializer">; 30481ad6265SDimitry Andricdef ShowRefBy : PropertyCommand<"showrefby">; 30581ad6265SDimitry Andricdef HideRefBy : PropertyCommand<"hiderefby">; 30681ad6265SDimitry Andricdef ShowRefs : PropertyCommand<"showrefs">; 30781ad6265SDimitry Andricdef HideRefs : PropertyCommand<"hiderefs">; 30881ad6265SDimitry Andric 30981ad6265SDimitry Andricdef Private : PropertyCommand<"private">; 31081ad6265SDimitry Andricdef Protected : PropertyCommand<"protected">; 31181ad6265SDimitry Andricdef Public : PropertyCommand<"public">; 31281ad6265SDimitry Andricdef Pure : PropertyCommand<"pure">; 31381ad6265SDimitry Andricdef Static : PropertyCommand<"static">; 31481ad6265SDimitry Andric 31581ad6265SDimitry Andricdef NoSubgrouping : PropertyCommand<"nosubgrouping">; 31681ad6265SDimitry Andricdef PrivateSection : PropertyCommand<"privatesection">; 31781ad6265SDimitry Andricdef ProtectedSection : PropertyCommand<"protectedsection">; 31881ad6265SDimitry Andricdef PublicSection : PropertyCommand<"publicsection">; 31981ad6265SDimitry Andric 32081ad6265SDimitry Andric//===----------------------------------------------------------------------===// 3210b57cec5SDimitry Andric// DeclarationVerbatimLineCommand 3220b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 3230b57cec5SDimitry Andric 3240b57cec5SDimitry Andric// Doxygen commands. 325349cc55cSDimitry Andricdef Concept : DeclarationVerbatimLineCommand<"concept">; 3260b57cec5SDimitry Andricdef Def : DeclarationVerbatimLineCommand<"def">; 3270b57cec5SDimitry Andricdef Fn : DeclarationVerbatimLineCommand<"fn">; 328349cc55cSDimitry Andricdef IDLExcept : DeclarationVerbatimLineCommand<"idlexcept">; 3290b57cec5SDimitry Andricdef Namespace : DeclarationVerbatimLineCommand<"namespace">; 3300b57cec5SDimitry Andricdef Overload : DeclarationVerbatimLineCommand<"overload">; 3310b57cec5SDimitry Andricdef Property : DeclarationVerbatimLineCommand<"property">; 3320b57cec5SDimitry Andricdef Typedef : DeclarationVerbatimLineCommand<"typedef">; 3330b57cec5SDimitry Andricdef Var : DeclarationVerbatimLineCommand<"var">; 3340b57cec5SDimitry Andric 3350b57cec5SDimitry Andric// HeaderDoc commands. 3360b57cec5SDimitry Andricdef Class : RecordLikeDeclarationVerbatimLineCommand<"class">; 3370b57cec5SDimitry Andricdef Interface : RecordLikeDeclarationVerbatimLineCommand<"interface">; 3380b57cec5SDimitry Andricdef Protocol : RecordLikeDeclarationVerbatimLineCommand<"protocol">; 3390b57cec5SDimitry Andricdef Struct : RecordLikeDeclarationVerbatimLineCommand<"struct">; 3400b57cec5SDimitry Andricdef Union : RecordLikeDeclarationVerbatimLineCommand<"union">; 3410b57cec5SDimitry Andricdef Category : DeclarationVerbatimLineCommand<"category">; 3420b57cec5SDimitry Andricdef Template : DeclarationVerbatimLineCommand<"template">; 3430b57cec5SDimitry Andricdef Function : FunctionDeclarationVerbatimLineCommand<"function">; 3440b57cec5SDimitry Andricdef FunctionGroup : FunctionDeclarationVerbatimLineCommand<"functiongroup">; 3450b57cec5SDimitry Andricdef Method : FunctionDeclarationVerbatimLineCommand<"method">; 3460b57cec5SDimitry Andricdef MethodGroup : FunctionDeclarationVerbatimLineCommand<"methodgroup">; 3470b57cec5SDimitry Andricdef Callback : FunctionDeclarationVerbatimLineCommand<"callback">; 3480b57cec5SDimitry Andricdef Const : DeclarationVerbatimLineCommand<"const">; 3490b57cec5SDimitry Andricdef Constant : DeclarationVerbatimLineCommand<"constant">; 3500b57cec5SDimitry Andricdef Enum : DeclarationVerbatimLineCommand<"enum">; 351