英語版
このページの英語版を見る

dmd.utils

このモジュールでは、DMD用のいくつかのユーティリティ関数を定義する。
Authors:

ソースutils.d

適用範囲 https://codecov.io/gh/dlang/dmd/src/master/src/dmd/utils.d

nothrow const(char)* toWinPath(const(char)* src);
パスを正規化するには、前方スラッシュをバックスラッシュに変換する
Parameters:
const(char)* src ソースパスは、UNIX形式('/')のパス区切り文字を使用する
Returns:
新たに割り当てられた文字列で、スラッシュをバックスラッシュに置き換える
nothrow bool readFile(Loc loc, const(char)[] filename, ref OutBuffer buf);
ファイルを読み込み、エラーが発生した場合はプログラムを終了する
Parameters:
Loc loc 呼び出し元の行番号情報
const(char)[] filename ファイルへのパス
OutBuffer buf ファイルの内容を追加する
Returns:
失敗時に true
nothrow bool writeFile(Loc loc, const(char)[] filename, const void[] data);
ファイルを書き込み、エラーが発生した場合はプログラムを終了する
Parameters:
Loc loc 呼び出し元の行番号情報
const(char)[] filename ファイルへのパス
void[] data 書き込むファイルの全内容
Returns: エラー発生時は false
エラー時に false
nothrow bool ensurePathToNameExists(Loc loc, const(char)[] name);
指定されたパスのルートパス(パス名を除いた部分)が 存在することを確認し、存在しない場合は処理を終了する。
Parameters:
Loc loc 呼び出し元の行番号情報
const(char)[] name チェックするパス(名前は削除されている)を
Returns: エラー時に false
エラー時に false を返す
nothrow void escapePath(OutBuffer* buf, const(char)* fname);
パスを受け取り、'('、')'、バックスラッシュをエスケープする
Parameters:
OutBuffer* buf エスケープされたパスを書き込むバッファ
const(char)* fname エスケープするパス
nothrow void writeEscapedMakePath(ref OutBuffer buf, const(char)* fname);
パスを受け取り、GNU Makefile 形式と互換性のあるものにする。
GNU makeは空白文字に対して奇妙な引用符のスキームを使用する。 2N+1個のバックスラッシュで先行されたスペースまたはタブは、N個のバックスラッシュの後にスペースが続くことを表す。 2N個のバックスラッシュで先行されたスペースまたはタブは、ファイル名の最後にN個のバックスラッシュがあることを表す。 他のコンテキストにおけるバックスラッシュは2重にしてはならない。
Parameters:
OutBuffer buf エスケープされたパスを書き込むバッファ
const(char)* fname エスケープするパス
to escapeエスケープ
Examples:
version (Windows)
{
    enum input = `C:\My Project\file#4$.ext`;
    enum expected = `C:\My\ Project\file\#4$$.ext`;
}
else
{
    enum input = `/foo\bar/weird$.:name#\ with spaces.ext`;
    enum expected = `/foo\bar/weird$$.\:name\#\\\ with\ spaces.ext`;
}

OutBuffer buf;
buf.writeEscapedMakePath(input);
assert(buf[] == expected);
文字列を整数に変換する。
pure nothrow @nogc @safe bool parseDigits(T)(ref T val, const(char)[] p, const T max = T.max);
文字列を整数に変換する。
Parameters:
T 解析する整数の型
T val 結果を格納する変数
const(char)[] p 文字列の先頭からスライス 数字
T max 最大許容値(含む)、デフォルトは T.max
Returns:
false エラー発生時は 、成功時はtrue
on erroron error
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));
xml-ph-0000@deepl.internalxml-ph-0000@deepl.internal
nothrow ubyte[] arrayCastBigEndian(const ubyte[] data, size_t size);
ubyte[] を、ビッグエンディアンアーキテクチャ上にあるかのように、より大きな整数の配列にキャストする
Parameters:
ubyte[] data ビッグエンディアンデータを持つ配列として
size_t size 1はubyte[]、2はushort[]、4はuint[]、8はulong[]に対応する
Returns:
コピーの data、コンパイル時にバイトがシャッフルされるversion(LittleEndian)