Report a bug
If you spot a problem with this page, click here to create a Github 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.

mir.small_string

Small String

The module contains self-contained generic small string implementaton.
SmallString supports ASDF - Json Serialisation Library.
See also include/mir/small_series.h for a C++ version of this type. Both C++ and D implementations have the same ABI and name mangling.
Authors:
Ilya Yaroshenko
struct SmallString(uint maxLength) if (maxLength);
Self-contained generic Small String implementaton.
Examples:
SmallString!16 s16;
assert(!s16);

auto s8 = SmallString!8("Hellow!!");
assert(s8);
assert(s8 == "Hellow!!", s8[]);

s16 = s8;
assert(s16 == "Hellow!!", s16);
s16[7] = '@';
s8 = null;
assert(!s8);
assert(s8 == null);
assert(s8 !is null);
s8 = s16;
assert(s8 == "Hellow!@");

auto s8_2 = s8;
assert(s8_2 == "Hellow!@");
assert(s8_2 == s8);

assert(s8 < "Hey");
assert(s8 > "Hellow!");

assert(s8.opCmp("Hey") < 0);
assert(s8.opCmp(s8) == 0);
this(typeof(null));

this(scope const(char)[] str);

this(uint n)(SmallString!n str);

this(uint n)(ref scope const SmallString!n str);

this(Range)(auto ref Range str)
if (isIterable!Range);
Constructor
ref typeof(this) opAssign(typeof(null)) return;

ref @trusted typeof(this) opAssign(scope const(char)[] str) return;

ref typeof(this) opAssign(ref scope const SmallString rhs) return;

ref typeof(this) opAssign(SmallString rhs) return;

ref typeof(this) opAssign(uint n)(ref scope const SmallString!n rhs) return
if (n != maxLength);

ref typeof(this) opAssign(uint n)(SmallString!n rhs) return
if (n != maxLength);
= operator
inout @property @trusted inout(char)[] asArray() return;
Returns an scope common string.
The property is used as common string representation self alias.
The alias helps with [], [i], [i .. j], ==, and != operations and implicit conversion to strings.
const(char)[] toString() return;
@trusted int opCmp(ref scope const typeof(this) rhs);

int opCmp(scope const(char)[] str);
Comparisons operator overloads
bool opCast(T : bool)();
Checks if the string is empty (null).
size_t toHash();
Hash implementation