packages feed

libclang-bindings-0.1.0.0: src/Clang/LowLevel/Doxygen/Enums.hs

module Clang.LowLevel.Doxygen.Enums (
    CXCommentKind(..)
  , CXCommentInlineCommandRenderKind(..)
  , CXCommentParamPassDirection(..)
  ) where

import GHC.Generics (Generic)

-- | Describes the type of the comment AST node ('CXComment').
--
-- A comment node can be considered block content (e. g., paragraph), inline
-- content (plain text) or neither (the root AST node).
--
-- <https://clang.llvm.org/doxygen/group__CINDEX__COMMENT.html#ga3c336d80551401fde394b84aa5651221>
data CXCommentKind =
    -- | Null comment.
    --
    -- No AST node is constructed at the requested location because there is no
    -- text or a syntax error.
    CXComment_Null

    -- | Plain text.
    --
    -- Inline content.
  | CXComment_Text

    -- | A command with word-like arguments that is considered inline content.
    --
    -- For example: @\\c command@.
  | CXComment_InlineCommand

    -- | HTML start tag with attributes (name-value pairs).
    --
    -- Considered inline content.
    --
    -- For example:
    --
    -- > <br> <br /> <a href="http://example.org/">
  | CXComment_HTMLStartTag

    -- | HTML end tag.
    --
    -- Considered inline content.
    --
    -- For example:
    --
    -- > </a>
  | CXComment_HTMLEndTag

     -- | A paragraph, contains inline comment.
     --
     -- The paragraph itself is block content.
  | CXComment_Paragraph

    -- | A command that has zero or more word-like arguments (number of
    -- word-like arguments depends on command name) and a paragraph as an
    -- argument.
   --
   -- Block command is block content.
   --
   -- Paragraph argument is also a child of the block command.
   --
   -- For example: @\has 0 word-like arguments and a paragraph argument@.
   --
   -- AST nodes of special kinds that parser knows about (e. g., @\param@
   -- command) have their own node kinds.
  | CXComment_BlockCommand

   -- | A @\param@ or @\arg@ command that describes the function parameter
   -- (name, passing direction, description).
   --
   -- For example: @\param [in] ParamName description@.
  | CXComment_ParamCommand

   -- | A @\tparam@ command that describes a template parameter (name and
   -- description).
   --
   -- For example: @\tparam T description@.
  | CXComment_TParamCommand

    -- | A verbatim block command (e. g., preformatted code).
    --
    -- Verbatim block has an opening and a closing command and contains multiple
    -- lines of text ('CXComment_VerbatimBlockLine' child nodes).
    --
    -- For example:
    --
    -- > \verbatim
    -- > aaa
    -- > \endverbatim
  | CXComment_VerbatimBlockCommand

    -- | A line of text that is contained within a
    -- 'CXComment_VerbatimBlockCommand' node.
  | CXComment_VerbatimBlockLine

    -- | A verbatim line command.
    --
    -- Verbatim line has an opening command, a single line of text (up to the
    -- newline after the opening command) and has no closing command.
  | CXComment_VerbatimLine

    -- | A full comment attached to a declaration, contains block content.
  | CXComment_FullComment
  deriving stock (Show, Eq, Ord, Enum, Bounded)

-- | The most appropriate rendering mode for an inline command, chosen on
-- command semantics in Doxygen.
--
-- <https://clang.llvm.org/doxygen/group__CINDEX__COMMENT.html#ga23efacd9c1e4e286a9f9714e1720fdcf>
data CXCommentInlineCommandRenderKind =
    -- | Command argument should be rendered in a normal font.
    CXCommentInlineCommandRenderKind_Normal

    -- | Command argument should be rendered in a bold font.
  | CXCommentInlineCommandRenderKind_Bold

    -- | Command argument should be rendered in a monospaced font.
  | CXCommentInlineCommandRenderKind_Monospaced

    -- | Command argument should be rendered emphasized (typically italic
    -- font).
  | CXCommentInlineCommandRenderKind_Emphasized

    -- | Command argument should not be rendered (since it only defines an
    -- anchor).
  | CXCommentInlineCommandRenderKind_Anchor
  deriving stock (Show, Eq, Ord, Enum, Bounded, Generic)

-- | Describes parameter passing direction for @\\param@ or @\\arg@ command.
--
-- <https://clang.llvm.org/doxygen/group__CINDEX__COMMENT.html#gafadf6e52217ea74d1a014198df656ee1>
data CXCommentParamPassDirection =
    -- | The parameter is an input parameter.
    CXCommentParamPassDirection_In

    -- | The parameter is an output parameter.
  | CXCommentParamPassDirection_Out

    -- | The parameter is an input and output parameter.
  | CXCommentParamPassDirection_InOut
  deriving stock (Show, Eq, Ord, Enum, Bounded, Generic)