Commit Graph

606 Commits

Author SHA1 Message Date
Eugen Wissner 180c4d3956 typecons.Option: Implement toHash forwarder 2018-09-18 22:27:54 +02:00
Eugen Wissner b0dc7b59e5 Add predicate support for algorithm.comparison.equal 2018-09-17 19:17:39 +02:00
Eugen Wissner eb796e0ddf Add bitmanip.BitFlags 2018-09-16 19:07:55 +02:00
Eugen Wissner e5569e5fea meta.trait.EnumMembers: Fix one-member enums
Produce a tuple for an enum with only one member.
2018-09-15 06:06:17 +02:00
Eugen Wissner b831a05407 Introduce hash.lookup.isHashFunction trait
Fix #66.
2018-09-14 15:16:08 +02:00
Eugen Wissner b6d1766d58 Implement compare algorithm. Fix #50 2018-09-11 10:05:15 +02:00
Eugen Wissner 7f080831c5 Implement IPv6 parser, fix #49 2018-09-08 07:20:23 +02:00
Eugen Wissner 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
Eugen Wissner 5ba6d35a1b Use fixed dscanner version 2018-09-03 09:55:19 +02:00
Eugen Wissner 09f434f631 net.iface: Add indexToName 2018-09-02 10:00:52 +02:00
Eugen Wissner 1f615301e5 memory.op: Add findNullTerminated 2018-09-02 08:27:26 +02:00
Eugen Wissner 131675d0a8 Parse for the main part of an IPv6 address 2018-09-01 11:02:10 +02:00
Eugen Wissner aa12aa9014 Add module for network interfaces 2018-09-01 10:15:23 +02:00
Eugen Wissner 41878cde50 Fix #60: Copying overlapping array slices 2018-08-30 07:12:38 +02:00
Eugen Wissner 0fc0aa23f7 Add constants and syscall for if_nametoindex 2018-08-28 20:39:45 +02:00
Eugen Wissner c205c087a4 Switch to COFF on x86 Windows 2018-08-26 00:10:17 +02:00
Eugen Wissner 8ca88d1f01 net.ip.Address4: Reject malformed addresses 2018-08-22 06:51:20 +02:00
Eugen Wissner fa4cbb7e59 Update to 2.081.2. Remove old compilers 2018-08-17 05:44:58 +02:00
Eugen Wissner 4653e94fa1 Merge remote-tracking branch 'n8sh/relax-hasher-reqs' 2018-08-12 06:17:12 +02:00
Eugen Wissner ba5833318b conv: Fix taking out of range chars for hex values 2018-08-11 14:42:09 +02:00
Eugen Wissner 918d8f5450 Deprecated putting an input into an output range
Use copy instead.
2018-08-10 15:34:07 +02:00
Eugen Wissner 2862cc6f50 Update asm mangling to match GDC's D frontend 2018-08-08 10:27:23 +02:00
Eugen Wissner 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
Eugen Wissner abd286064b Add algorithm.mutation.copy 2018-08-05 07:19:30 +02:00
Eugen Wissner 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
Eugen Wissner 900a7172bf Make format() public
Make format() public. Deprecate to!String.
2018-08-01 16:58:23 +02:00
Eugen Wissner fe0576a2d6 Fix format printing only the first argument 2018-07-29 12:51:38 +02:00
Eugen Wissner a5b84deca7 format: Add errol3 lookup 2018-07-28 13:52:59 +02:00
Eugen Wissner 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
Eugen Wissner 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
Eugen Wissner f2eb99bab0 Format fixed-point numbers 2018-07-22 15:28:17 +02:00
Eugen Wissner 531cae51a3 Stringish to integral type conversion. Fix #44 2018-07-18 06:33:45 +02:00
Eugen Wissner 1b203507f6 conv: Fix overflow hanndling in readIntegral 2018-07-17 16:03:05 +02:00
Eugen Wissner 99e06e0d04 format: Support text in the format string
Fix  #25.
2018-07-14 19:09:21 +02:00
Eugen Wissner 158a47d54a Update dmd to 2.081.1. Remove 2.077.1 2018-07-13 05:39:58 +02:00
Eugen Wissner 5865e355cd Fix EV_SET 0 length on 32-bit BSD 2018-07-08 12:54:47 +02:00
Eugen Wissner a94b1b0af4 Add functional module. Fix #52 2018-07-07 12:17:59 +02:00
Eugen Wissner 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
Eugen Wissner 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
Eugen Wissner 8241943a58 Add uint128 tailored for errol2 computations 2018-07-02 10:26:45 +02:00
Eugen Wissner d54e06f43c Iterate hash table by key or by value 2018-06-29 20:43:05 +02:00
Eugen Wissner 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
Eugen Wissner 533fa3b023 container.HashTable: Fix infinite rehashing when inserting
Fix #53.
2018-06-27 05:45:53 +02:00
Eugen Wissner adf2d8b689 Add Option to typecons
Fix #47.
2018-06-26 04:25:32 +02:00
Eugen Wissner 74ece7ddf4 Replace floating pointer formatter with errol1 2018-06-23 16:21:19 +02:00
Eugen Wissner 411e45ec5c Remove functions deprecated in 0.9.0 2018-06-22 07:11:56 +02:00
Eugen Wissner f51e9405c9 Update socket documentation 2018-06-20 07:59:37 +02:00
Eugen Wissner de15281ccb Tuple with more than two fields
Fix #41.
2018-06-19 05:44:15 +02:00