Pass allocator in all HashTable/Set constructors
This commit is contained in:
parent
e6c6a2d21a
commit
9814e5ad8e
@ -7,12 +7,12 @@ os:
|
|||||||
language: d
|
language: d
|
||||||
|
|
||||||
d:
|
d:
|
||||||
- dmd-2.085.0
|
- dmd-2.085.1
|
||||||
- dmd-2.081.2
|
- dmd-2.081.2
|
||||||
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- LATEST=2.085.0
|
- LATEST=2.085.1
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
- ARCH=x86_64
|
- ARCH=x86_64
|
||||||
|
@ -174,7 +174,7 @@ parameter is used)
|
|||||||
|
|
||||||
| DMD | GCC |
|
| DMD | GCC |
|
||||||
|:-----------------:|:---------------:|
|
|:-----------------:|:---------------:|
|
||||||
| 2.081.2 — 2.085.0 | gdc-8 (2.081.2) |
|
| 2.081.2 — 2.085.1 | gdc-8 (2.081.2) |
|
||||||
| | gdc-7 (2.081.2) |
|
| | gdc-7 (2.081.2) |
|
||||||
|
|
||||||
### Release management
|
### Release management
|
||||||
|
@ -4,10 +4,10 @@ os: Visual Studio 2015
|
|||||||
environment:
|
environment:
|
||||||
matrix:
|
matrix:
|
||||||
- DC: dmd
|
- DC: dmd
|
||||||
DVersion: 2.085.0
|
DVersion: 2.085.1
|
||||||
arch: x64
|
arch: x64
|
||||||
- DC: dmd
|
- DC: dmd
|
||||||
DVersion: 2.085.0
|
DVersion: 2.085.1
|
||||||
arch: x86
|
arch: x86
|
||||||
- DC: dmd
|
- DC: dmd
|
||||||
DVersion: 2.081.2
|
DVersion: 2.081.2
|
||||||
|
@ -416,8 +416,8 @@ if (isHashFunction!(hasher, Key))
|
|||||||
*
|
*
|
||||||
* Precondition: $(D_INLINECODE allocator !is null).
|
* Precondition: $(D_INLINECODE allocator !is null).
|
||||||
*/
|
*/
|
||||||
this(R)(R range, shared Allocator allocator = defaultAllocator)
|
this(R)(scope R range, shared Allocator allocator = defaultAllocator)
|
||||||
if (isForwardRange!R && is(ElementType!R == KeyValue))
|
if (isForwardRange!R && is(ElementType!R == KeyValue) && !isInfinite!R)
|
||||||
in (allocator !is null)
|
in (allocator !is null)
|
||||||
{
|
{
|
||||||
this(allocator);
|
this(allocator);
|
||||||
@ -450,6 +450,7 @@ if (isHashFunction!(hasher, Key))
|
|||||||
shared Allocator allocator = defaultAllocator)
|
shared Allocator allocator = defaultAllocator)
|
||||||
in (allocator !is null)
|
in (allocator !is null)
|
||||||
{
|
{
|
||||||
|
this(allocator);
|
||||||
insert(array[]);
|
insert(array[]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -714,8 +715,8 @@ if (isHashFunction!(hasher, Key))
|
|||||||
*
|
*
|
||||||
* Returns: The number of the inserted elements with a unique key.
|
* Returns: The number of the inserted elements with a unique key.
|
||||||
*/
|
*/
|
||||||
size_t insert(R)(R range)
|
size_t insert(R)(scope R range)
|
||||||
if (isForwardRange!R && is(ElementType!R == KeyValue))
|
if (isForwardRange!R && is(ElementType!R == KeyValue) && !isInfinite!R)
|
||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
foreach (e; range)
|
foreach (e; range)
|
||||||
|
@ -39,7 +39,7 @@ struct SRange(L)
|
|||||||
|
|
||||||
invariant (this.head !is null);
|
invariant (this.head !is null);
|
||||||
|
|
||||||
private this(ref EntryPointer head) @trusted
|
private this(return ref EntryPointer head) @trusted
|
||||||
{
|
{
|
||||||
this.head = &head;
|
this.head = &head;
|
||||||
}
|
}
|
||||||
@ -127,7 +127,7 @@ struct SList(T)
|
|||||||
* init = Values to initialize the list with.
|
* init = Values to initialize the list with.
|
||||||
* allocator = Allocator.
|
* allocator = Allocator.
|
||||||
*/
|
*/
|
||||||
this(R)(R init, shared Allocator allocator = defaultAllocator)
|
this(R)(scope R init, shared Allocator allocator = defaultAllocator)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -372,7 +372,7 @@ struct SList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertFront(R)(R el) @trusted
|
size_t insertFront(R)(scope R el) @trusted
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -473,7 +473,7 @@ struct SList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertBefore(R)(Range r, R el)
|
size_t insertBefore(R)(Range r, scope R el)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -798,7 +798,7 @@ struct SList(T)
|
|||||||
*
|
*
|
||||||
* Returns: $(D_KEYWORD this).
|
* Returns: $(D_KEYWORD this).
|
||||||
*/
|
*/
|
||||||
ref typeof(this) opAssign(R)(R that) @trusted
|
ref typeof(this) opAssign(R)(scope R that) @trusted
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -893,7 +893,8 @@ struct DRange(L)
|
|||||||
invariant (this.head !is null);
|
invariant (this.head !is null);
|
||||||
invariant (this.tail !is null);
|
invariant (this.tail !is null);
|
||||||
|
|
||||||
private this(ref EntryPointer head, ref EntryPointer tail) @trusted
|
private this(return ref EntryPointer head, return ref EntryPointer tail)
|
||||||
|
@trusted
|
||||||
{
|
{
|
||||||
this.head = &head;
|
this.head = &head;
|
||||||
this.tail = &tail;
|
this.tail = &tail;
|
||||||
@ -1010,7 +1011,7 @@ struct DList(T)
|
|||||||
* init = Values to initialize the list with.
|
* init = Values to initialize the list with.
|
||||||
* allocator = Allocator.
|
* allocator = Allocator.
|
||||||
*/
|
*/
|
||||||
this(R)(R init, shared Allocator allocator = defaultAllocator)
|
this(R)(scope R init, shared Allocator allocator = defaultAllocator)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -1261,13 +1262,10 @@ struct DList(T)
|
|||||||
|
|
||||||
// Creates a lsit of linked entries from a range.
|
// Creates a lsit of linked entries from a range.
|
||||||
// Returns count of the elements in the list.
|
// Returns count of the elements in the list.
|
||||||
private size_t makeList(R)(ref R el, out Entry* head, out Entry* tail) @trusted
|
private size_t makeList(R)(scope ref R el, out Entry* head, out Entry* tail)
|
||||||
out (retLength)
|
@trusted
|
||||||
{
|
out (retLength; (retLength == 0 && head is null && tail is null)
|
||||||
assert((retLength == 0 && head is null && tail is null)
|
|| (retLength > 0 && head !is null && tail !is null))
|
||||||
|| (retLength > 0 && head !is null && tail !is null));
|
|
||||||
}
|
|
||||||
do
|
|
||||||
{
|
{
|
||||||
size_t retLength;
|
size_t retLength;
|
||||||
|
|
||||||
@ -1335,7 +1333,7 @@ struct DList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertFront(R)(R el)
|
size_t insertFront(R)(scope R el)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -1454,7 +1452,7 @@ struct DList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertBack(R)(R el) @trusted
|
size_t insertBack(R)(scope R el) @trusted
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -1581,7 +1579,7 @@ struct DList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertBefore(R)(Range r, R el)
|
size_t insertBefore(R)(Range r, scope R el)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -1686,7 +1684,7 @@ struct DList(T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// ditto
|
/// ditto
|
||||||
size_t insertAfter(R)(Range r, R el)
|
size_t insertAfter(R)(Range r, scope R el)
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
@ -2067,7 +2065,7 @@ struct DList(T)
|
|||||||
*
|
*
|
||||||
* Returns: $(D_KEYWORD this).
|
* Returns: $(D_KEYWORD this).
|
||||||
*/
|
*/
|
||||||
ref typeof(this) opAssign(R)(R that) @trusted
|
ref typeof(this) opAssign(R)(scope R that) @trusted
|
||||||
if (!isInfinite!R
|
if (!isInfinite!R
|
||||||
&& isInputRange!R
|
&& isInputRange!R
|
||||||
&& isImplicitlyConvertible!(ElementType!R, T))
|
&& isImplicitlyConvertible!(ElementType!R, T))
|
||||||
|
@ -218,10 +218,13 @@ if (isHashFunction!(hasher, T))
|
|||||||
*
|
*
|
||||||
* Precondition: $(D_INLINECODE allocator !is null).
|
* Precondition: $(D_INLINECODE allocator !is null).
|
||||||
*/
|
*/
|
||||||
this(R)(R range, shared Allocator allocator = defaultAllocator)
|
this(R)(scope R range, shared Allocator allocator = defaultAllocator)
|
||||||
if (isForwardRange!R && isImplicitlyConvertible!(ElementType!R, T))
|
if (isForwardRange!R
|
||||||
|
&& isImplicitlyConvertible!(ElementType!R, T)
|
||||||
|
&& !isInfinite!R)
|
||||||
in (allocator !is null)
|
in (allocator !is null)
|
||||||
{
|
{
|
||||||
|
this(allocator);
|
||||||
insert(range);
|
insert(range);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,6 +251,7 @@ if (isHashFunction!(hasher, T))
|
|||||||
this(size_t n)(T[n] array, shared Allocator allocator = defaultAllocator)
|
this(size_t n)(T[n] array, shared Allocator allocator = defaultAllocator)
|
||||||
in (allocator !is null)
|
in (allocator !is null)
|
||||||
{
|
{
|
||||||
|
this(allocator);
|
||||||
insert(array[]);
|
insert(array[]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,8 +460,10 @@ if (isHashFunction!(hasher, T))
|
|||||||
*
|
*
|
||||||
* Returns: The number of new elements inserted.
|
* Returns: The number of new elements inserted.
|
||||||
*/
|
*/
|
||||||
size_t insert(R)(R range)
|
size_t insert(R)(scope R range)
|
||||||
if (isForwardRange!R && isImplicitlyConvertible!(ElementType!R, T))
|
if (isForwardRange!R
|
||||||
|
&& isImplicitlyConvertible!(ElementType!R, T)
|
||||||
|
&& !isInfinite!R)
|
||||||
{
|
{
|
||||||
size_t count;
|
size_t count;
|
||||||
foreach (e; range)
|
foreach (e; range)
|
||||||
|
Loading…
Reference in New Issue
Block a user