94c7fd2231
Move range.adapter to algorithms + take() bugfixes
...
A lot of algorithms like lazy sort() can be also classified as adapters
since it wraps the original range and allows to access the elements of
the range in a particular order. The only reason why take() was in
range.adapter is that take() is trivial - it doesn't change the order of
elements but can turn an infinite range into finite one. This
distinction between trivial and non-trivial algorithms isn't absolutely
clear. So let us put all algorithms and any adapters that change the
range iteration in some way into "algorithm" package to avoid any
confusion later.
- range.adapter is renamed into algorithm.iteration
- range.adapter is deprecated
- Added missing imports for take() and takeExactly()
- takeExactly() doesn't wrap ranges that have slicing anymore
- Voldemort structs for take() takeExactly() are now static
2018-09-06 12:50:42 +02:00
5ba6d35a1b
Use fixed dscanner version
2018-09-03 09:55:19 +02:00
09f434f631
net.iface: Add indexToName
2018-09-02 10:00:52 +02:00
1f615301e5
memory.op: Add findNullTerminated
2018-09-02 08:27:26 +02:00
131675d0a8
Parse for the main part of an IPv6 address
2018-09-01 11:02:10 +02:00
aa12aa9014
Add module for network interfaces
2018-09-01 10:15:23 +02:00
41878cde50
Fix #60 : Copying overlapping array slices
2018-08-30 07:12:38 +02:00
0fc0aa23f7
Add constants and syscall for if_nametoindex
2018-08-28 20:39:45 +02:00
8ca88d1f01
net.ip.Address4: Reject malformed addresses
2018-08-22 06:51:20 +02:00
4653e94fa1
Merge remote-tracking branch 'n8sh/relax-hasher-reqs'
2018-08-12 06:17:12 +02:00
ba5833318b
conv: Fix taking out of range chars for hex values
2018-08-11 14:42:09 +02:00
918d8f5450
Deprecated putting an input into an output range
...
Use copy instead.
2018-08-10 15:34:07 +02:00
aa4ccddf47
Add net.ip. Fix #48
2018-08-07 22:27:09 +02:00
Nathan Sashihara
22cffe9d6e
Set: allow hasher to take arg by ref
2018-08-06 14:41:47 -04:00
abd286064b
Add algorithm.mutation.copy
2018-08-05 07:19:30 +02:00
b04928d2c8
net.inet: Import range.array as well
2018-08-03 16:52:34 +02:00
Nathan Sashihara
ceb8e6a113
Use identity hash for integers and pointers
...
This is appropriate because HashArray in tanya.container.entry uses
prime numbers instead of powers of 2 for its number of buckets so there
is no pitfall if the hashes are all multiples of some power of 2.
2018-08-02 12:37:02 -04:00
900a7172bf
Make format() public
...
Make format() public. Deprecate to!String.
2018-08-01 16:58:23 +02:00
fe0576a2d6
Fix format printing only the first argument
2018-07-29 12:51:38 +02:00
a5b84deca7
format: Add errol3 lookup
2018-07-28 13:52:59 +02:00
24056d53c5
network.socket.Linger.enabled: Add return type
...
network.socket.Linger.enabled: Add missing return type (void).
2018-07-25 05:40:49 +02:00
d62f29abd1
Rename meta.metafunction.Tuple into Pack
...
typecons.Tuples and meta.metafunction.Tuples are often used together,
from the same module. So it is reasonable give them different names.
2018-07-24 20:16:21 +02:00
f2eb99bab0
Format fixed-point numbers
2018-07-22 15:28:17 +02:00
531cae51a3
Stringish to integral type conversion. Fix #44
2018-07-18 06:33:45 +02:00
1b203507f6
conv: Fix overflow hanndling in readIntegral
2018-07-17 16:03:05 +02:00
99e06e0d04
format: Support text in the format string
...
Fix #25 .
2018-07-14 19:09:21 +02:00
5865e355cd
Fix EV_SET 0 length on 32-bit BSD
2018-07-08 12:54:47 +02:00
a94b1b0af4
Add functional module. Fix #52
2018-07-07 12:17:59 +02:00
3df4eb6259
Don't check UTF-8 correctness when inserting chars
...
- Fix bug when inserting char ranges that are not arrays
- Optimize insertion from the String own range
- Assume char and char ranges are correclty encoded (as it actually
should be) and don't throw an exception. This should make the most
common use cases nothrow (Fix #19 ). Dchars and Wchars are still encoded
because they should be converted to UTF-8 before inserting anyway.
2018-07-06 05:36:13 +02:00
a332d727af
Implement errol2 for floating point formatting
...
Handles whole floating point numbers in the range between 2^54 and 2^131.
2018-07-02 10:47:05 +02:00
8241943a58
Add uint128 tailored for errol2 computations
2018-07-02 10:26:45 +02:00
d54e06f43c
Iterate hash table by key or by value
2018-06-29 20:43:05 +02:00
5e901f505c
Make HashTable work complex types as key
...
- Add toHash() function for String
- The key type shouldn't match exact for a lookup.
The key type and lookup key type should be comparable.
- Move elements when inserting if passed by value.
2018-06-28 12:14:45 +02:00
533fa3b023
container.HashTable: Fix infinite rehashing when inserting
...
Fix #53 .
2018-06-27 05:45:53 +02:00
adf2d8b689
Add Option to typecons
...
Fix #47 .
2018-06-26 04:25:32 +02:00
74ece7ddf4
Replace floating pointer formatter with errol1
2018-06-23 16:21:19 +02:00
411e45ec5c
Remove functions deprecated in 0.9.0
2018-06-22 07:11:56 +02:00
f51e9405c9
Update socket documentation
2018-06-20 07:59:37 +02:00
de15281ccb
Tuple with more than two fields
...
Fix #41 .
2018-06-19 05:44:15 +02:00
a86b6690f0
Implement auto-decoding free equal comparison
...
Fix #39 .
2018-06-12 20:19:06 +02:00
15f7994187
Add takeExactly
...
Fix #43 .
2018-06-10 19:03:26 +02:00
37b0afe290
take: Remove moveFront, moveBack, moveAt
2018-06-10 14:46:40 +02:00
cd9960db2a
Add take range adapter
2018-06-10 14:46:40 +02:00
173ae115ee
readIntegral: Support base between 2 and 36
2018-06-08 21:05:35 +02:00
7561b964d3
Make intToString -> readString more generic
...
Make readString work with any char range and unsigned integral type.
2018-06-07 07:23:39 +02:00
c663703221
container.list: Remove deprecated list length property
2018-06-01 14:13:27 +02:00
58af2fd89b
encoding.ascii: Make static const data immutable
2018-05-31 18:43:35 +02:00
52ec88bd04
async: Annotate system tests
2018-05-31 18:43:21 +02:00
bfe0748a63
Insert a range into the hash table and set
2018-05-30 18:50:52 +02:00
61814d5383
Make an independent function for converting port string
2018-05-23 05:10:44 +02:00
c268696ee9
HashTable/Set: Add proper assignment
2018-05-20 21:58:15 +02:00
9efbc9d5e0
Make Array postblit safe if possible
2018-05-18 07:43:18 +02:00
c511b97b1b
container.Set and HashTable: Fix constructors
2018-05-17 05:31:14 +02:00
385ec19e2f
hash.lookup: Reformat the docs
2018-05-17 05:30:49 +02:00
205d7a080e
Add KeyValue alias for value tuple
2018-05-14 21:55:49 +02:00
d545d6900e
Make HashTable Range return Pair
2018-05-14 19:23:22 +02:00
3ed46117d1
Port Set ranges for HashTable
2018-05-14 19:23:22 +02:00
00dbb224f7
Move length tracking to HashArray
2018-05-14 19:23:22 +02:00
9cf1b6f491
Use HashArray as internal storage
2018-05-14 19:23:22 +02:00
bdce5cda6a
Add HashTable container
2018-05-14 19:23:22 +02:00
faf952b30e
Rename Pair to Tuple
2018-05-12 06:11:24 +02:00
53620cdddf
Improve preconditions for the container.Set
2018-05-11 05:43:14 +02:00
2ec750ca05
Fix math.nbtheory linkage to asm
...
Don't use extern for templated functions. If the function argument is
const, it gets a different mangling. So define a private function for
each floatint point length and call it from template.
2018-05-08 18:07:42 +02:00
6ed2992862
Remove unused variables
2018-05-06 07:03:11 +02:00
5c8c0ce4d8
Add dmd 2.080.0 support
2018-05-05 05:22:04 +02:00
cd1a38f402
Move Smallest and Largest to meta.transform
...
Smallest and Largest choose the smallest or largest (according to
.sizeof property) type in the list of types. These templates get a list
of types and produce a type, so they are transformations.
2018-05-02 15:50:28 +02:00
4f6ce116bc
Add documented tests for Set.empty and Set.clear()
2018-05-01 15:56:07 +02:00
c4424e7e01
Track hash Set length
...
Can be used later to rehash the hash table if it is full up to some
percentage.
2018-04-30 12:51:35 +02:00
18d54b4b18
HashArray as an internal store for hash containers
2018-04-29 09:12:48 +02:00
36646aa2c4
container.Set: Rewrite arch dependent tests
2018-04-28 18:07:41 +02:00
702d1b02e0
Make allocator getter public
2018-04-28 17:57:07 +02:00
8733b93ca0
container.Set: Support customizable hasher
2018-04-28 17:49:49 +02:00
55c36d22a0
Make isType public
2018-04-27 11:32:41 +02:00
6e2852000b
Deprecate math.min/max in favour of tanya.algorithm
2018-04-27 11:32:22 +02:00
c0f9e5be10
Replace std min/max. Fix #35
2018-04-26 10:23:06 +02:00
3468d6ea00
Accept/return as inout in min/max
2018-04-26 08:06:06 +02:00
ed5fa91e64
Merge remote-tracking branch 'origin/master' into feature/min_max
2018-04-25 15:13:03 +02:00
2185a70ac8
Fix #33
2018-04-25 13:09:34 +02:00
b94da1f58a
Replace SocketError with ErrorCode.ErrorNo
2018-04-25 12:59:38 +02:00
3f9b500e20
Add CommonType
2018-04-24 15:45:47 +02:00
86053de8c9
Add min/max algorithms
2018-04-22 12:08:33 +02:00
e8222123e6
Use syscall instead of mmap and munmap
2018-04-22 08:07:20 +02:00
5cac28c093
Add new comparison traits
...
- allSameType
- isEqualityComparable
- isOrderingComparable
2018-04-21 06:38:32 +02:00
5e40424f7d
net.inet: Replace CTFE-pow with pow operator
2018-04-20 15:15:00 +02:00
964a7af32f
Fix list assertions for release build
2018-04-18 14:23:12 +02:00
40c961867e
Remove deprecated traits and queue
2018-04-18 06:34:28 +02:00
3fee712c6c
Implement DList.popFirstOf and DList.popLastOf
...
Fix #37 .
2018-04-17 14:46:12 +02:00
012c2d4c18
Remove support for dmd 2.076.1
2018-04-15 06:50:37 +02:00
d267a9cc64
Implement SList.popFirstOf
...
Fix #36 .
Slicing for the SList on top of the existing SRange would be inefficent.
There would be two cases:
- Range iterates till the end of the list.
- Range iterates till some element "end".
If both cases are implemented in the same range, this range should check
for both conditions (end of the list and "begin == end") instead of only
one (end of the list).
Introducing a different range is undesirable since all containers have
currently only one range.
2018-04-14 16:15:35 +02:00
d157e88b7a
Fix import order in math.random
2018-04-08 05:59:14 +02:00
d5064fa2b2
Add missing tail isn't null assertion
2018-04-07 19:20:08 +02:00
f15a90543f
Remove support for moveFront/moveBack/moveAt
...
Range elements are movable (mobile) if they are returned by reference
and can be moved or if the elements doesn't define an elaborate postblit
constructor. Allowing to define custom moveFront/moveBack/moveAt makes
the range definition more complex (particulary writing range adapters)
without a good reason.
2018-04-03 21:44:50 +02:00
a0ac8355f9
Fix #29
2018-04-01 10:34:18 +02:00
9b1f72472f
Deprecate SList.length and DList.length
...
As they have O(n) complexity. The lists length is unknown without
iterating.
2018-03-31 08:21:15 +02:00
af45de842e
Take MmapPool from the standard builds
2018-03-29 16:54:56 +02:00
792d289541
range.primitive: Add missing rparen to the docs
2018-03-27 05:19:14 +02:00
92f21a95cf
Add hashing pointers
2018-03-27 05:18:46 +02:00
72140a8583
Add documentation for the hash function
2018-03-27 05:09:44 +02:00
442fa5b46a
Fix hashing scalar types
2018-03-27 05:09:22 +02:00
0d6d8f6a91
Add hash combining for ranges
2018-03-27 05:09:09 +02:00