Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

dmd.identifier

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

Source identifier.d

class Identifier: dmd.rootobject.RootObject;
nothrow this(const(char)* name);
Construct an identifier from the given name.
nothrow this(const(char)* name, size_t length, int value);

nothrow @safe 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
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.
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.
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
static nothrow Identifier generateIdWithLoc(string prefix, const ref Loc loc, string parent = "");
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.
string parent (optional) extra part to be used in uniqueness check, if (prefix1, loc1) == (prefix2, loc2), but parent1 != parent2, no new name will be generated.
Returns:
Identifier (inside Identifier.idPool) with deterministic name based on the source location.
static nothrow Identifier idPool(scope const(char)* s, uint len);
Create an identifier in the string table.
static nothrow void idPool(scope 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
static nothrow bool isValidIdentifier(const(char)* str);

static nothrow @trusted bool isValidIdentifier(const(char)[] str);
Determine if string is a valid Identifier.
Parameters:
const(char)* str string to check
Returns:
false for invalid
Examples:
assert(Identifier.isValidIdentifier("tes123_t".ptr));
assert(!Identifier.isValidIdentifier("tes123_^t".ptr));
assert(Identifier.isValidIdentifier("te123s_ğt".ptr));
assert(!Identifier.isValidIdentifier("t^e123s_ğt".ptr));