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

This module 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);

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);
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);
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 @safe bool parseDigits(T)(ref T val, const(char)[] p, const T max = T.max);
Convert string to integer.
Parameters:
T Type of integer to parse
T val Variable to store the result in
const(char)[] p slice to start of string digits
T max max allowable value (inclusive), defaults to T.max
Returns:
false on error, true on success
Examples:
byte b;
ubyte ub;
short s;
ushort us;
int i;
uint ui;
long l;
ulong ul;

assert(b.parseDigits("42") && b  == 42);
assert(ub.parseDigits("42") && ub == 42);

assert(s.parseDigits("420") && s  == 420);
assert(us.parseDigits("42000") && us == 42_000);

assert(i.parseDigits("420000") && i  == 420_000);
assert(ui.parseDigits("420000") && ui == 420_000);

assert(l.parseDigits("42000000000") && l  == 42_000_000_000);
assert(ul.parseDigits("82000000000") && ul == 82_000_000_000);

assert(!b.parseDigits(ubyte.max.stringof));
assert(!b.parseDigits("WYSIWYG"));
assert(!b.parseDigits("-42"));
assert(!b.parseDigits("200"));
assert(ub.parseDigits("200") && ub == 200);
assert(i.parseDigits(int.max.stringof) && i == int.max);
assert(i.parseDigits("420", 500) && i == 420);
assert(!i.parseDigits("420", 400));