# dmd.denum

Define `enum` declarations and `enum` members.

Specification: Enums

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: denum.d

Documentation: https://dlang.org/phobos/dmd_denum.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/denum.d

References: https://dlang.org/spec/enum.html

- `EnumDeclaration`

  #### Declaration

  `class `EnumDeclaration`: dmd.dsymbol.ScopeDsymbol;`

  AST node for ``EnumDeclaration`` https://dlang.org/spec/enum.html#EnumDeclaration

  - `getMaxMinValue`

    #### Declaration

    `Expression `getMaxMinValue`(ref const Loc `loc`, Identifier `id`);`

    Get the value of the .max/.min property as an Expression. Lazily computes the value and caches it in maxval/minval. Reports any errors.

    #### Parameters

    `Loc `loc`` | location to use for error messages
    `Identifier `id`` | Id::max or Id::min

    #### Return Value

    corresponding value of .max/.min

  - `isSpecial`

    #### Declaration

    `const nothrow @nogc bool `isSpecial`();`

    Determine if enum is a special one.

    #### Return Value

    `true` if special

- `EnumMember`

  #### Declaration

  `class `EnumMember`: dmd.declaration.VarDeclaration;`

  AST node representing a member of an enum. https://dlang.org/spec/enum.html#EnumMember https://dlang.org/spec/enum.html#AnonymousEnumMember

- `isSpecialEnumIdent`

  #### Declaration

  `nothrow @nogc bool `isSpecialEnumIdent`(const Identifier `ident`);`

  Check for special enum names.

  #### Discussion

  Special enum names are used by the C++ name mangler to represent C++ types that are not basic D types.

  #### Parameters

  `Identifier `ident`` | identifier to check for specialness

  #### Return Value

  `true` if it is special