alloc copy string with terminator function
This commit is contained in:
parent
a12e8c21e2
commit
cf8043468d
16
dlib/alloc.d
16
dlib/alloc.d
@ -142,6 +142,15 @@ Alloc(string target)
|
|||||||
return ConvToStr(str);
|
return ConvToStr(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
AllocEscaped(char[] target)
|
||||||
|
{
|
||||||
|
u8[] str = Alloc!(u8)(target.length+1);
|
||||||
|
str[0 .. target.length] = str[];
|
||||||
|
str[str.length-1] = '\0';
|
||||||
|
return cast(string)str[0 .. str.length-1];
|
||||||
|
}
|
||||||
|
|
||||||
T[]
|
T[]
|
||||||
Alloc(T)(T[] target, usize start, usize len)
|
Alloc(T)(T[] target, usize start, usize len)
|
||||||
{
|
{
|
||||||
@ -937,3 +946,10 @@ bool MallocCheck()
|
|||||||
return heap_max_blocks == MallocFreeCount() + MallocUsedCount() + MallocMallocFreshCount();
|
return heap_max_blocks == MallocFreeCount() + MallocUsedCount() + MallocMallocFreshCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unittest
|
||||||
|
{
|
||||||
|
{
|
||||||
|
string zeroed = AllocZeroed("Test");
|
||||||
|
assert(zeroed.ptr[4] == '\0');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
35
dlib/math.d
35
dlib/math.d
@ -470,11 +470,11 @@ struct Vector(T, int N)
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref Vector opAssign(U)(U u) if(isInstanceOf!(Vector, U))
|
ref Vector opAssign(U)(U rhs) if(isInstanceOf!(Vector, U))
|
||||||
{
|
{
|
||||||
static foreach(i; 0 .. N)
|
static foreach(i; 0 .. N)
|
||||||
{
|
{
|
||||||
v[i] = cast(T)u.v[i];
|
this.v[i] = cast(T)rhs.v[i];
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -488,15 +488,17 @@ struct Vector(T, int N)
|
|||||||
{
|
{
|
||||||
bool result = true;
|
bool result = true;
|
||||||
|
|
||||||
foreach(i; 0 .. N)
|
static foreach(i; 0 .. N)
|
||||||
{
|
{
|
||||||
if(Abs(v[i] - other.v[i]) > 0.0000009)
|
if(Abs(v[i] - other.v[i]) > 0.0000009)
|
||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
break;
|
goto OpEqualsEnd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OpEqualsEnd:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,20 +514,14 @@ struct Vector(T, int N)
|
|||||||
|
|
||||||
Vector opUnary(string op)() if(op == "+" || op == "-" || op == "~" || op == "!")
|
Vector opUnary(string op)() if(op == "+" || op == "-" || op == "~" || op == "!")
|
||||||
{
|
{
|
||||||
Vector res;
|
Vector result;
|
||||||
static foreach(i; 0 .. N)
|
mixin("result.v[] = "~op~"v[];");
|
||||||
{
|
return result;
|
||||||
mixin("res.v[", i, "] = " ~ op ~ "v[", i, "];\n");
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ref Vector opOpAssign(string op, U)(U value) if(is(U: Vector))
|
ref Vector opOpAssign(string op, U)(U rhs) if(is(U: Vector))
|
||||||
{
|
{
|
||||||
static foreach(i; 0 .. N)
|
mixin("this.v[] "~op~"= rhs.v[];");
|
||||||
{
|
|
||||||
mixin("v[", i, "] " ~op~ "= value.v[", i, "];");
|
|
||||||
}
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -559,12 +555,9 @@ struct Vector(T, int N)
|
|||||||
Vector
|
Vector
|
||||||
opBinaryRight(string op, U)(U operand) if(IsConvertible!(U) && (op == "*" || op == "+" || op == "-" || op == "/"))
|
opBinaryRight(string op, U)(U operand) if(IsConvertible!(U) && (op == "*" || op == "+" || op == "-" || op == "/"))
|
||||||
{
|
{
|
||||||
Vector res;
|
Vector result;
|
||||||
static foreach(i; 0 .. N)
|
mixin("result.v = this.v[]"~op~"operand;");
|
||||||
{
|
return result;
|
||||||
mixin("res.v[", i, "] = v[", i, "] " ~op~ " operand;");
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static if(N == 4)
|
static if(N == 4)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user