# dmd.identifier

Defines an `identifier`, which is the name of a `Dsymbol`.

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: identifier.d

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

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

- `Identifier`

  #### Declaration

  `class `Identifier`: dmd.root.rootobject.RootObject;`

  - `this`

    #### Declaration

    `nothrow this(const(char)* `name`);`

    Construct an identifier from the given `name`.

  - `this`

    #### Declaration

    `nothrow this(const(char)* `name`, size_t `length`, int `value`);
    nothrow this(const(char)[] `name`, int `value`);`

    Construct an identifier from the given `name`.

    #### Parameters

    `const(char)* `name`` | the identifier `name`. There must be `'\0'` at ``name`[`length`]`.
    `size_t `length`` | the `length` of ``name``, excluding the terminating `'\0'`
    `int `value`` | Identifier `value` (e.g. `Id.unitTest`) or `TOK.identifier`

  - `generateId`

    #### Declaration

    `static nothrow Identifier `generateId`(const(char)[] `prefix`);`

    Generates a new identifier.

    #### Parameters

    `const(char)[] `prefix`` | this will be the `prefix` of the name of the identifier. For debugging purpose.

  - `generateAnonymousId`

    #### Declaration

    `static nothrow Identifier `generateAnonymousId`(const(char)[] `name`);`

    Generates a new anonymous identifier.

    #### Parameters

    `const(char)[] `name`` | this will be part of the `name` of the identifier. For debugging purpose.

  - `generateId`

    #### Declaration

    `static nothrow Identifier `generateId`(const(char)[] `prefix`, size_t `suffix`);
    static nothrow Identifier `generateId`(const(char)* `prefix`, size_t `length`, size_t `suffix`);`

    Generates a new identifier.

    #### Parameters

    `const(char)[] `prefix`` | this will be the `prefix` of the name of the identifier. For debugging purpose.
    `size_t `suffix`` | this will be the `suffix` of the name of the identifier. This is what makes the identifier unique

  - `generateIdWithLoc`

    #### Declaration

    `static nothrow Identifier `generateIdWithLoc`(string `prefix`, const ref Loc `loc`);`

    Generate deterministic named identifier based on a source location, such that the name is consistent across multiple compilations. A new unique name is generated. If the `prefix`+location is already in the stringtable, an extra suffix is added (starting the count at "1").

    #### Parameters

    `string `prefix`` | first part of the identifier name.
    `Loc `loc`` | source location to use in the identifier name.

    #### Return Value

    Identifier (inside Identifier.idPool) with deterministic name based on the source location.

  - `idPool`

    #### Declaration

    `static nothrow Identifier `idPool`(const(char)* `s`, uint `len`);`

    Create an identifier in the string table.

  - `idPool`

    #### Declaration

    `static nothrow void `idPool`(const(char)[] `s`, TOK `value`);`

    Used for inserting keywords into the string table.

    #### Parameters

    `const(char)[] `s`` | string for keyword
    `TOK `value`` | TOK.xxxx for the keyword

  - `isValidIdentifier`

    #### Declaration

    `static nothrow bool `isValidIdentifier`(const(char)* `str`);
    static nothrow bool `isValidIdentifier`(const(char)[] `str`);`

    Determine if string is a valid Identifier.

    #### Parameters

    `const(char)* `str`` | string to check

    #### Return Value

    `false` for invalid