mirror of
https://github.com/dlang/phobos.git
synced 2025-04-29 22:50:38 +03:00
Merge remote-tracking branch 'upstream/stable' into merge_stable
This commit is contained in:
commit
c94d93e121
27 changed files with 110 additions and 31 deletions
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_affix_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.affix_allocator;
|
module std.experimental.allocator.building_blocks.affix_allocator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_allocator_list.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.allocator_list;
|
module std.experimental.allocator.building_blocks.allocator_list;
|
||||||
|
|
||||||
import std.experimental.allocator.building_blocks.null_allocator;
|
import std.experimental.allocator.building_blocks.null_allocator;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_bitmapped_block.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.bitmapped_block;
|
module std.experimental.allocator.building_blocks.bitmapped_block;
|
||||||
|
|
||||||
import std.experimental.allocator.building_blocks.null_allocator;
|
import std.experimental.allocator.building_blocks.null_allocator;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_bucketizer.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.bucketizer;
|
module std.experimental.allocator.building_blocks.bucketizer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_fallback_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.fallback_allocator;
|
module std.experimental.allocator.building_blocks.fallback_allocator;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_free_list.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.free_list;
|
module std.experimental.allocator.building_blocks.free_list;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_free_tree.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.free_tree;
|
module std.experimental.allocator.building_blocks.free_tree;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_kernighan_ritchie.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.kernighan_ritchie;
|
module std.experimental.allocator.building_blocks.kernighan_ritchie;
|
||||||
import std.experimental.allocator.building_blocks.null_allocator;
|
import std.experimental.allocator.building_blocks.null_allocator;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_null_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.null_allocator;
|
module std.experimental.allocator.building_blocks.null_allocator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
$(H2 Assembling Your Own Allocator)
|
$(H2 Assembling Your Own Allocator)
|
||||||
|
|
||||||
|
@ -280,6 +281,8 @@ $(COMMENT $(TR $(TDC2 InternalPointersTree) $(TD Adds support for resolving inte
|
||||||
pointers on top of another allocator.)))
|
pointers on top of another allocator.)))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_package.d)
|
||||||
|
|
||||||
Macros:
|
Macros:
|
||||||
MYREF2 = $(REF_SHORT $1, std,experimental,allocator,building_blocks,$2)
|
MYREF2 = $(REF_SHORT $1, std,experimental,allocator,building_blocks,$2)
|
||||||
MYREF3 = $(REF_SHORT $1, std,experimental,allocator,$2)
|
MYREF3 = $(REF_SHORT $1, std,experimental,allocator,$2)
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_quantizer.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.quantizer;
|
module std.experimental.allocator.building_blocks.quantizer;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_region.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.region;
|
module std.experimental.allocator.building_blocks.region;
|
||||||
|
|
||||||
import std.experimental.allocator.building_blocks.null_allocator;
|
import std.experimental.allocator.building_blocks.null_allocator;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_scoped_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.scoped_allocator;
|
module std.experimental.allocator.building_blocks.scoped_allocator;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_segregator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.building_blocks.segregator;
|
module std.experimental.allocator.building_blocks.segregator;
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
|
@ -4,15 +4,18 @@ Allocator that collects useful statistics about allocations, both global and per
|
||||||
calling point. The statistics collected can be configured statically by choosing
|
calling point. The statistics collected can be configured statically by choosing
|
||||||
combinations of `Options` appropriately.
|
combinations of `Options` appropriately.
|
||||||
|
|
||||||
Example:
|
Source: $(PHOBOSSRC std/experimental/allocator/building_blocks/_stats_collector.d)
|
||||||
----
|
|
||||||
import std.experimental.allocator.gc_allocator : GCAllocator;
|
|
||||||
import std.experimental.allocator.building_blocks.free_list : FreeList;
|
|
||||||
alias Allocator = StatsCollector!(GCAllocator, Options.bytesUsed);
|
|
||||||
----
|
|
||||||
*/
|
*/
|
||||||
module std.experimental.allocator.building_blocks.stats_collector;
|
module std.experimental.allocator.building_blocks.stats_collector;
|
||||||
|
|
||||||
|
///
|
||||||
|
@safe unittest
|
||||||
|
{
|
||||||
|
import std.experimental.allocator.gc_allocator : GCAllocator;
|
||||||
|
import std.experimental.allocator.building_blocks.free_list : FreeList;
|
||||||
|
alias Allocator = StatsCollector!(GCAllocator, Options.bytesUsed);
|
||||||
|
}
|
||||||
|
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
Utility and ancillary artifacts of `std.experimental.allocator`. This module
|
Utility and ancillary artifacts of `std.experimental.allocator`. This module
|
||||||
shouldn't be used directly; its functionality will be migrated into more
|
shouldn't be used directly; its functionality will be migrated into more
|
||||||
appropriate parts of `std`.
|
appropriate parts of `std`.
|
||||||
|
|
||||||
Authors: $(HTTP erdani.com, Andrei Alexandrescu), Timon Gehr (`Ternary`)
|
Authors: $(HTTP erdani.com, Andrei Alexandrescu), Timon Gehr (`Ternary`)
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_common.d)
|
||||||
*/
|
*/
|
||||||
module std.experimental.allocator.common;
|
module std.experimental.allocator.common;
|
||||||
import std.algorithm.comparison, std.traits;
|
import std.algorithm.comparison, std.traits;
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
D's built-in garbage-collected allocator.
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_gc_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.gc_allocator;
|
module std.experimental.allocator.gc_allocator;
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
D's built-in garbage-collected allocator.
|
D's built-in garbage-collected allocator.
|
||||||
*/
|
*/
|
||||||
struct GCAllocator
|
struct GCAllocator
|
||||||
{
|
{
|
||||||
import core.memory : GC;
|
import core.memory : GC;
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
The C heap allocator.
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_mallocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.mallocator;
|
module std.experimental.allocator.mallocator;
|
||||||
import std.experimental.allocator.common;
|
import std.experimental.allocator.common;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_mmap_allocator.d)
|
||||||
|
*/
|
||||||
module std.experimental.allocator.mmap_allocator;
|
module std.experimental.allocator.mmap_allocator;
|
||||||
|
|
||||||
// MmapAllocator
|
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Allocator (currently defined only for Posix and Windows) using
|
Allocator (currently defined only for Posix and Windows) using
|
||||||
$(D $(LINK2 https://en.wikipedia.org/wiki/Mmap, mmap))
|
$(D $(LINK2 https://en.wikipedia.org/wiki/Mmap, mmap))
|
||||||
and $(D $(LUCKY munmap)) directly (or their Windows equivalents). There is no
|
and $(D $(LUCKY munmap)) directly (or their Windows equivalents). There is no
|
||||||
|
@ -12,7 +13,6 @@ $(D mmap(null, s, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)),
|
||||||
and each call to $(D deallocate(b)) issues $(D munmap(b.ptr, b.length)).
|
and each call to $(D deallocate(b)) issues $(D munmap(b.ptr, b.length)).
|
||||||
So $(D MmapAllocator) is usually intended for allocating large chunks to be
|
So $(D MmapAllocator) is usually intended for allocating large chunks to be
|
||||||
managed by fine-granular allocators.
|
managed by fine-granular allocators.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
struct MmapAllocator
|
struct MmapAllocator
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
|
|
||||||
Collection of typical and useful prebuilt allocators using the given
|
Collection of typical and useful prebuilt allocators using the given
|
||||||
components. User code would typically import this module and use its
|
components. User code would typically import this module and use its
|
||||||
facilities, or import individual heap building blocks and assemble them.
|
facilities, or import individual heap building blocks and assemble them.
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_showcase.d)
|
||||||
*/
|
*/
|
||||||
module std.experimental.allocator.showcase;
|
module std.experimental.allocator.showcase;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
This module defines `TypedAllocator`, a statically-typed allocator that
|
This module defines `TypedAllocator`, a statically-typed allocator that
|
||||||
aggregates multiple untyped allocators and uses them depending on the static
|
aggregates multiple untyped allocators and uses them depending on the static
|
||||||
|
@ -5,6 +6,8 @@ properties of the types allocated. For example, distinct allocators may be used
|
||||||
for thread-local vs. thread-shared data, or for fixed-size data (`struct`,
|
for thread-local vs. thread-shared data, or for fixed-size data (`struct`,
|
||||||
`class` objects) vs. resizable data (arrays).
|
`class` objects) vs. resizable data (arrays).
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/allocator/_typed.d)
|
||||||
|
|
||||||
Macros:
|
Macros:
|
||||||
T2=$(TR <td style="text-align:left">$(D $1)</td> $(TD $(ARGS $+)))
|
T2=$(TR <td style="text-align:left">$(D $1)</td> $(TD $(ARGS $+)))
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
$(SCRIPT inhibitQuickIndex = 1;)
|
$(SCRIPT inhibitQuickIndex = 1;)
|
||||||
|
|
||||||
|
@ -187,6 +188,7 @@ and `>>>=` is larger than the largest value representable by `T`.)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/_checkedint.d)
|
||||||
*/
|
*/
|
||||||
module std.experimental.checkedint;
|
module std.experimental.checkedint;
|
||||||
import std.traits : isFloatingPoint, isIntegral, isNumeric, isUnsigned, Unqual;
|
import std.traits : isFloatingPoint, isIntegral, isNumeric, isUnsigned, Unqual;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/logger/_core.d)
|
||||||
|
*/
|
||||||
module std.experimental.logger.core;
|
module std.experimental.logger.core;
|
||||||
|
|
||||||
import core.sync.mutex : Mutex;
|
import core.sync.mutex : Mutex;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/logger/_filelogger.d)
|
||||||
|
*/
|
||||||
module std.experimental.logger.filelogger;
|
module std.experimental.logger.filelogger;
|
||||||
|
|
||||||
import std.experimental.logger.core;
|
import std.experimental.logger.core;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/logger/_multilogger.d)
|
||||||
|
*/
|
||||||
module std.experimental.logger.multilogger;
|
module std.experimental.logger.multilogger;
|
||||||
|
|
||||||
import std.experimental.logger.core;
|
import std.experimental.logger.core;
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
///
|
// Written in the D programming language.
|
||||||
|
/**
|
||||||
|
Source: $(PHOBOSSRC std/experimental/logger/_nulllogger.d)
|
||||||
|
*/
|
||||||
module std.experimental.logger.nulllogger;
|
module std.experimental.logger.nulllogger;
|
||||||
|
|
||||||
import std.experimental.logger.core;
|
import std.experimental.logger.core;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
// Written in the D programming language.
|
||||||
/**
|
/**
|
||||||
Implements logging facilities.
|
Implements logging facilities.
|
||||||
|
|
||||||
|
@ -176,6 +177,8 @@ $(D ArrayLogger) contains an array of $(D Logger) and also propagates log
|
||||||
calls to its stored $(D Logger). The $(D NullLogger) does not do anything. It
|
calls to its stored $(D Logger). The $(D NullLogger) does not do anything. It
|
||||||
will never log a message and will never throw on a log call with $(D LogLevel)
|
will never log a message and will never throw on a log call with $(D LogLevel)
|
||||||
$(D error).
|
$(D error).
|
||||||
|
|
||||||
|
Source: $(PHOBOSSRC std/experimental/logger/_package.d)
|
||||||
*/
|
*/
|
||||||
module std.experimental.logger;
|
module std.experimental.logger;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue