# dmd.astenums

Defines enums common to dmd and dmd as parse library.

#### License

Boost License 1.0

Source: astenums.d

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

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

- `isRefReturnScope`

  #### Declaration

  `pure nothrow @nogc @safe bool `isRefReturnScope`(const ulong `stc`);`

  Determine if it's the ambigous case of where `return` attaches to.

  #### Parameters

  `ulong `stc`` | STC flags

  #### Return Value

  `true` if (`ref` | `out`) and `scope` and `return`

- `VarArg`

  #### Declaration

  `enum `VarArg`: ubyte;`

  Variadic argument lists https://dlang.org/spec/function.html#variadic

  - `none`

    #### Declaration

    ``none``

    fixed number of arguments

  - `variadic`

    #### Declaration

    ``variadic``

    (T t, ...) can be C-style (core.stdc.stdarg) or D-style (core.vararg)

  - `typesafe`

    #### Declaration

    ``typesafe``

    (T t ...) `typesafe` https://dlang.org/spec/function.html#typesafe_variadic_functions

- `STMT`

  #### Declaration

  `enum `STMT`: ubyte;`

  Identify Statement types with this enum rather than virtual functions

- `InitKind`

  #### Declaration

  `enum `InitKind`: ubyte;`

  Discriminant for which kind of initializer

- `LINK`

  #### Declaration

  `enum `LINK`: ubyte;`

  A linkage attribute as defined by `extern(XXX)`

  #### Discussion

  https://dlang.org/spec/attribute.html#linkage

- `CPPMANGLE`

  #### Declaration

  `enum `CPPMANGLE`: ubyte;`

  Whether to mangle an external aggregate as a struct or class, as set by `extern(C++, struct)`

  - `def`

    #### Declaration

    ``def``

    default

  - `asStruct`

    #### Declaration

    ``asStruct``

    `extern(C++, struct)`

  - `asClass`

    #### Declaration

    ``asClass``

    `extern(C++, class)`

- `MATCH`

  #### Declaration

  `enum `MATCH`: int;`

  Function match levels

  #### Discussion

  https://dlang.org/spec/function.html#function-overloading

  - `nomatch`

    #### Declaration

    ``nomatch``

    no match

  - `convert`

    #### Declaration

    ``convert``

    match with conversions

  - `constant`

    #### Declaration

    ``constant``

    match with conversion to const

  - `exact`

    #### Declaration

    ``exact``

    `exact` match

- `PINLINE`

  #### Declaration

  `enum `PINLINE`: ubyte;`

  Inline setting as defined by `pragma(inline, XXX)`

  - `default_`

    #### Declaration

    ``default_``

    as specified on the command line

  - `never`

    #### Declaration

    ``never``

    `never` inline

  - `always`

    #### Declaration

    ``always``

    `always` inline