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
cefc4e24b5
Add FNV-1a test vectors
2018-03-27 05:08:55 +02:00
1adc4cd868
Add hash.lookup module
2018-03-27 05:08:28 +02:00
8faccbada4
Deprecate meta.trait.hasMember
2018-03-26 20:38:57 +02:00
9fb043ba65
Fix typeof(null) being a pointer for isPointer
2018-03-25 09:19:35 +02:00
162db622ea
Add assignable-, lvalue- and swappable checks
...
... for ranges.
Also adds "put" for the output ranges.
Fix #34 .
2018-03-23 08:49:24 +01:00
a7c1e642e9
Implement moveFront, moveBack, moveAt
...
... and hasMobileElements.
2018-03-22 10:44:58 +01:00
7829b1fe06
Remove static std.range import
2018-03-22 10:44:52 +01:00
cb742eec82
meta.trait: Deprecate one-liner
...
These one-liners are useful for meta-programming but they can be easely
implemented. It isn't possible to implement all possible variants in a
generic library, so it is better they are defined in the user code.
Deprecated traits:
- isPOD
- sizeOf
- alignOf
- isSame
- isTemplate
- isInterface
- isClass
- isStruct
- isEnum
2018-03-21 10:10:55 +01:00
341068488d
meta.trait: Make unittest structs static
2018-03-21 10:04:05 +01:00
9b0bc77b7a
async: Remove unused imports
2018-03-21 08:30:47 +01:00
c9e4871fb5
algorithm.mutation: Fix param name in the docs
2018-03-21 08:15:58 +01:00
1f4ab88254
typecons.Pair: Add better documentation unittests
2018-03-21 08:14:52 +01:00
7af5b4db72
metafunction: Make Set and Tuple to structs
...
It allows to use alias this to access the elements by index.
2018-03-20 17:20:13 +01:00
629071f934
Add information that DList can be used as a queue
2018-03-10 07:17:43 +01:00
17cb592b13
Replace Queue with DList
2018-03-09 08:19:17 +01:00
82f41844b1
container.list: Document front/back preconditions
2018-03-09 08:00:28 +01:00
8fa033a49f
Fix #32
2018-03-09 05:27:32 +01:00
e77a499fa2
Annotate typecons unittests
2018-03-07 06:52:35 +01:00
54bcec216e
Deprecate MmapPool for the standard build
...
Mallocator is the default allocator now and should be used instead.
2018-03-06 05:29:15 +01:00
fbbdb36853
Use defaultAllocator in the async
...
Instead of hard-coded MmapPool.
2018-03-05 17:42:44 +01:00
b795267e75
Rename ErrorCode.text() to toString()
2018-03-04 10:43:24 +01:00
81cbb96d45
Merge remote-tracking branch 'n8sh/isRandomAccessRange-definition'
2018-03-04 09:29:09 +01:00
Nathan Sashihara
467335460e
Decouple isRandomAccessRange from isForwardRange and isBidirectionalRange
2018-03-04 03:02:18 -05:00
16c5fa12df
Implement Error.text()
...
Error.text() returns an error description.
2018-03-02 06:48:03 +01:00
9bf8754711
Fix setting new head/tail after removing in DList
2018-02-26 08:09:14 +01:00
760cea163d
Add a workaround for dmd 2.076.1 on OSX
2018-02-25 21:33:29 +01:00
03c40ecace
Fix removing all elements from DList
2018-02-25 18:25:19 +01:00
9c70e9a058
Annotate list unittests
2018-02-25 15:42:32 +01:00
5ae20512af
Fix inserting before/after a range into the string
2018-02-25 12:53:42 +01:00
d30de300d6
Fix slicing a null pointer when deallocating
2018-02-25 11:09:57 +01:00
464a0fecbb
Make math.nbtheory.ln to a template function
2018-02-25 05:38:21 +01:00
af942116e4
Merge remote-tracking branch 'n8sh/getrandom-syscall'
...
Fix #18 .
2018-02-22 05:25:59 +01:00
Nathan Sashihara
7ee4af9e79
Use correct getrandom linux syscall on non-x86_64
2018-02-21 04:49:48 -05:00
Nathan Sashihara
9876d9245c
Implement PlatformEntropySource for macOS, Microsoft Windows, NetBSD, OpenBSD, Solaris
2018-02-21 03:18:52 -05:00
2cda82eeea
Fix handling of misaligned bytes in fill
2018-02-04 07:23:56 +01:00
e9f70853c6
Fix #12
2018-02-02 16:13:55 +01:00
4aaa71a7d0
Format ranges
2018-02-02 14:34:36 +01:00
cbc68c2c43
Implement formatting for enums
2018-02-01 16:29:13 +01:00
048ddf21ff
Replace body with do
2018-01-31 12:05:06 +01:00
b69d737845
Add typeid formatting tests
2018-01-16 17:44:09 +01:00
904451ccaa
Remove moved and deprecated conv module
2018-01-14 19:13:12 +01:00
8db1851c5c
Update dmd to 2.078.0
2018-01-04 05:36:46 +01:00
12de700706
Fix formatting null class references
2017-12-16 09:42:57 +01:00
78a8afdf75
Format stringish ranges
2017-12-15 22:42:18 +01:00
3c996d7c57
Add struct formatting
2017-12-14 19:47:13 +01:00
2a68048fc1
Put real formatting code into a separate function
2017-12-09 10:02:54 +01:00
7fe69ccc5c
format: Aggregate types
2017-12-08 10:56:59 +01:00
26c3532e28
Wrap formatting into printToString
...
printToString gets the output string as argument and can be called
recursive with the same output string to format ranges.
2017-12-03 19:53:06 +01:00
9e16d84f9e
Reintroduce isStruct, isClass and isInterface
...
since they can be useful for generic programming.
2017-11-29 19:53:28 +01:00
7e7bf40f70
Move remaining to methods to tanya.conv
2017-11-29 19:09:58 +01:00
642717883e
Add boolean and null formatting
2017-11-29 18:44:51 +01:00
85be35c5e0
Make floating formatting safe
2017-11-29 07:49:20 +01:00
664298f038
Remove buffer argument from format
2017-11-28 22:11:19 +01:00
c199cdd47c
Merge changes to reals formatting from master
2017-11-28 09:32:20 +01:00
3a24e9e462
Make pointer to string conversion safer
2017-11-27 15:10:17 +01:00
f334e6a1a0
Check format specifier at compile time
2017-11-25 22:29:45 +01:00
72d5760589
Change default pointer format
2017-11-25 19:01:20 +01:00
b28dde9d8e
Remove triplet comma
2017-11-25 17:10:59 +01:00
b612e978bf
format: Add format string tests
2017-11-25 15:24:45 +01:00
02d1d8218b
Port vsprintf
2017-11-25 15:11:43 +01:00
fbf6ec5250
format: Check if the scientific form is to be used
2017-11-25 14:59:27 +01:00
ac317aa9d6
math.min: Drop useless second isFloatingPoint check
2017-11-19 22:37:15 +01:00
10022d158c
Replace aho/ali usage with HP
2017-11-16 19:28:44 +01:00
a38242d0ac
Make real2String more readable
2017-11-16 19:19:18 +01:00
a84c71f26d
Revert usage of "do" instead of "body"
...
And fix GCC build.
2017-11-16 19:15:56 +01:00
7797f0a1fe
format.conv.number2String -> format.integral2String (intern)
2017-11-12 11:57:47 +01:00
4bbc8b510a
conv: Use assertThrown to check ConvException is thrown
2017-11-12 11:44:45 +01:00
87ea1f98dc
Add range primitives that remove several elements
...
- isOutputRange
- popFrontN
- popFrontExactly
- popBackN
- popBackExactly
2017-11-05 07:00:10 +01:00
13407fcf8a
math: Add min/max
2017-11-02 06:00:11 +01:00
e06cc5a071
Fix moveEmplace for static arrays
2017-11-01 14:27:39 +01:00
12fb9ff9f6
Add algorithm.mutation.swap
2017-11-01 13:03:48 +01:00
392cdcf192
Fix moveEmplace not being pure
2017-11-01 12:30:27 +01:00
09b6655b9a
memory.op: Check for valid .ptr and .length
...
typeid(T).initializer can return an array, whose .ptr is null but the
length not. Assert that .ptr and .length are consistent.
2017-11-01 00:01:43 +01:00
7a2768340e
Add algorithm package with move and moveEmplace
2017-10-29 07:51:00 +01:00
414d7a11a8
Add meta.trait.Fields
2017-10-27 20:28:34 +02:00
0d69c7fc79
Make math.mp.Integer pure
2017-10-24 11:50:32 +02:00
d1d55be7c2
Fix lowerHexDigits string
2017-10-18 06:40:22 +02:00
7b21238db7
String: Fix byCodePoint.popFront for multibyte chars
2017-10-14 13:47:16 +02:00
e316631f6e
Add test package
2017-10-12 07:41:35 +02:00
5d6f8e5299
Implement pure onOutOfMemory
2017-10-10 06:59:34 +02:00
87bfd77373
container.string: Add missing postblit
2017-10-08 15:53:29 +02:00