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.utils

Compiler implementation of the D programming language. Utility functions for DMD.
This modules defines some utility functions for DMD.
Authors:

Source utils.d

const(char)* toWinPath(const(char)* src);
Normalize path by turning forward slashes into backslashes
Parameters:
const(char)* src Source path, using unix-style ('/') path separators
Returns:
A newly-allocated string with '/' turned into backslashes
FileBuffer readFile(Loc loc, const(char)* filename);
Reads a file, terminate the program on error
Parameters:
Loc loc The line number information from where the call originates
const(char)* filename Path to file
void writeFile(Loc loc, const(char)[] filename, const void[] data);

void writeFile(Loc loc, const(char)* filename, const(void)* data, size_t size);
Writes a file, terminate the program on error
Parameters:
Loc loc The line number information from where the call originates
const(char)[] filename Path to file
void[] data Full content of the file to be written
void ensurePathToNameExists(Loc loc, const(char)[] name);

void ensurePathToNameExists(Loc loc, const(char)* name);
Ensure the root path (the path minus the name) of the provided path exists, and terminate the process if it doesn't.
Parameters:
Loc loc The line number information from where the call originates
const(char)[] name a path to check (the name is stripped)
void escapePath(OutBuffer* buf, const(char)* fname);
Takes a path, and escapes '(', ')' and backslashes
Parameters:
OutBuffer* buf Buffer to write the escaped path to
const(char)* fname Path to escape
pure nothrow @nogc inout(char)[] toDString(inout(char)* s);
Slices a \0-terminated C-string, excluding the terminator
static bool iequals(const(char)[] s1, const(char)[] s2);
Compare two slices for equality, in a case-insensitive way
Comparison is based on char and does not do decoding. As a result, it's only really accurate for plain ASCII strings.
Parameters:
const(char)[] s1 string to compare
const(char)[] s2 string to compare
Returns:
true if s1 == s2 regardless of case
nothrow auto toCStringThen(alias dg)(const(char)[] src);
Copy the content of src into a C-string ('\0' terminated) then call dg
The intent of this function is to provide an allocation-less way to call a C function using a D slice. The function internally allocates a buffer if needed, but frees it on exit.

Note The argument to dg is scope. To keep the data around after dg exits, one has to copy it.

Parameters:
const(char)[] src Slice to use to call the C function
dg Delegate to call afterwards
Returns:
The return value of T