| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
* Improve sequtils documentation
Uncomment assertions in tests
* Use present tense
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* O(1) concatenation of singly- and doubly linked lists.
There is also new `toSinglyLinkedList` and `toDoublyLinkedList`
functions for conversion from `openArray`s, similarly
to `toHashSet` or `toTable`.
* Add `sequtils` import to runnable examples with `toSeq`.
* Added missing call to runnable examples.
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* Improved tests for lists.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* More compact tests for lists with templates.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Added extended example to `lists.copy`.
* Corrected .since annotations to 1.6
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Since declarations changed to (1,5,1).
* Add .since annotation, changelog, and tests.
* Rename `lists.concat` as an overload to `lists.append`.
* Renamed `append` to `add` in lists.
* Remove faulty `add` for `DoublyLinkedList`s.
* `lists.add` moves the second list; added `lists.copy` for shallow copy.
* More tests for `lists.add` and `lists.copy`.
* List concatenation with copying (`add`) and moving (tentatively `addMove`)
* Renamed `addMove` to `addMoved`; renamed arguments according to the style guide.
* Changelog update.
* Fix rebasing errors.
* Self-adding with `lists.addMove` results in a cycle now.
Added some extra tests.
|
|
|
|
|
|
|
|
|
|
|
| |
This commit changes the funcs that take a `proc` parameter back to
procs.
This reverts some of commit 6f57ebae349f:
sequtils.nim: Use `func` (#16293)
See also:
- https://github.com/nim-lang/Nim/issues/16303
- https://github.com/nim-lang/Nim/pull/16304
|
|
|
|
|
| |
* Fix broken links in docs
* Fix rand HSlice links
|
| |
|
|
|
|
|
|
|
| |
* improve tests for collections
* remove remaining code blocks in deques.nim
* improve runnableExamples
|
|
|
|
|
|
|
|
|
| |
* sequtils.nim: proc -> func
* sequtils.nim: proc -> func in links
* sequtils.nim: proc -> func in non-link doc comments
* test: add `sequtils` to strictFuncs test
|
| |
|
|
|
|
|
|
|
|
|
| |
* fixes #15076
* heapqueue: optimized for ARC
* added another test case [backport:1.4]
* code cleanup
|
|
|
|
|
|
|
|
|
| |
* move tests to testament
* minor
* fix random
* disable test random
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Make IntSet an ordinal set OrdSet[A: Ordinal]
Backward compatibility with IntSet is maintained.
IntSet is an alias for OrdSet[int]
* move ordsets to new file, intsets exports it
* ordset, move to lib/std folder
* Fix `$` for ordsets and test cleanup
* Fix ordsets compilation in doc example
* Rename ordsets to packedsets
|
|
|
|
|
|
|
| |
* fix #15941
* add testcase
* update
|
|
|
|
| |
Added a case where a user might use mgetOrPut and create an accidental
copy of a seq.
|
| |
|
|
|
|
|
| |
* promote `collect` macro as a map+filter replacement
* Update lib/pure/collections/sequtils.nim
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
Closes #15496
|
|
|
|
|
|
|
|
|
| |
Similar to:
- `critbits.toCritBitTree`
- `deques.toDeque`
- `sets.toHashSet`
- `tables.toTable`
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
|
|
|
|
|
|
|
| |
Similar to:
- `critbits.toCritBitTree`
- `deques.toDeque`
- `sets.toHashSet`
- `tables.toTable`
|
|
|
|
|
| |
* Add critbits.toCritBitTree
* https://github.com/nim-lang/Nim/pull/15444#discussion_r498035342
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* nativesockets docs minor [backport: 1.2]
* remove annoying messages
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add some enhancements to `jsonutils.nim`
* Use `jsonutils.nim` hookable API to add a possibility to deserialize
JSON arrays directly to `HashSet` and `OrderedSet` types and
respectively to serialize those types to JSON arrays.
* Also add a possibility to deserialize JSON `null` objects to Nim
option objects and respectively to serialize Nim option object to JSON
object if some or to JSON `null` object if none.
* Move serialization/deserialization functionality for `Table` and
`OrderedTable` types from `jsonutils.nim` to `tables.nim` via the
hookable API.
* Add object `jsonutils.Joptions` and parameter from its type to
`jsonutils.fromJson` procedure to control whether to allow
deserializing JSON objects to Nim objects when the JSON has some
extra or missing keys.
* Add unit tests for the added functionalities to `tjsonutils.nim`.
* improve fromJsonFields
* Add changelog entry for the jsonutils enhancements
* Add TODO in `jsonutils.nim`
* Added an entry to "Future directions" section in `jsonutils.nim` as
suggestion for future support of serialization and de-serialization of
nested variant objects.
* Added currently disabled test case in `tjsonutils.nim` for testing
serialization and de-serialization of nested variant objects.
* Move JSON hooks to `jsonutils.nim`
Move `fromJsonHook` and `toJsonHook` procedures for different types to
`jsonutils.nim` module to avoid a dependency of collections modules to
the `json.nim` module.
The hooks are removed from the following modules:
* `tables.nim`
* `sets.nim`
* `options.nim`
* `strtabs.nim`
* Add some tests about `StringTableRef`
Add tests for `StringTableRef`'s `fromJsonHook` and `toJsonHook` to
`tjsonutils.nim`.
* Disable a warning in `jsonutils.nim`
Mark `fun` template in `jsonutils` module with `{.used.}` pragma in
order to disable `[XDeclaredButNotUsed]` hint. The template is actually
used by the `initCaseObject` macro in the same module.
Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit polishes the new proc introduced by d9ed816b10a6.
Changes:
- Rename to `toDeque` for more consistency with well-known procs like
`toHashSet` and `toTable`.
- Rename the `openArray` parameter. The name `arr` was potentially less
clear given that the proc can be used with a seq (or string).
- Add a `since` annotation.
- Reword the doc comment, and clarify that ordering is preserved.
- Add runnableExamples.
- Add "see also" cross linking between `initDeque` and `toDeque`.
- Remove duplicate `nextPowerOfTwo`. The `initImpl` template already
includes it.
- Implement the proc using the `items` iterator, rather than indexing.
This matches the implementation of `sets.toHashSet` and
`tables.toTable`.
- Add a test within `when isMainModule`.
- Add a changelog entry.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Add ability to initialize a deque with a sequence
Example:
var dq = initDeque[char](@['a', 'b', 'c'])
* Update deques.nim
* Optimized deque initialization
* Sequence replaced by open array in deque initialization
|
|
|
| |
It needs to have len defined first because of the assert .len > 0. I just moved it up a bit to make them work.
|
|
|
|
|
|
|
| |
* fix #14139
* Update lib/pure/collections/heapqueue.nim
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
Co-authored-by: Clyybber <darkmine956@gmail.com>
|
|
|
|
|
|
|
| |
(#15108)
avoid future implementation mischief. (Maybe not. Sometimes, general
distrust of theory leads people to distrust simple reasoning over times
from CPUs trying as hard as possible to mask DRAM latency via pre-fetch.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#15104)
request. This can be conceived as an alternate, more capable resolution of
https://github.com/nim-lang/Nim/issues/12200
than
https://github.com/nim-lang/Nim/pull/12208
The code re-org idea here is to upgrade tablimpl.nim:`delImpl`/`delImplIdx`
to abstract client code conventions for cell emptiness & cell hashing via
three new template arguments - `makeEmpty`, `cellEmpty`, `cellHash` which
all take a single integer argument and clear a cell, test if clear or
produce the hash of the key stored at that index in `.data[]`.
Then we update the 3 call sites (`Table`, `CountTable`, `SharedTable`) of
`delImpl`/`delImplIdx` by defining define those arguments just before the
first invocation as non-exported templates.
Because `CountTable` does not save hash() outputs as `.hcode`, it needs a
new tableimpl.nim:`delImplNoHCode` which simply in-lines the hash search
when no `.hcode` field is available for "prefix compare" acceleration.
It is conceivable this new template could be used by future variants, such
as one optimized for integer keys where `hash()` and `==` are fast and
`.hcode` is both wasted space & time (though a small change to interfaces
there for a sentinel key meaning "empty" is needed for maximum efficiency).
We also eliminate the old O(n) `proc remove(CountTable...)` in favor of
simply invoking the new `delImpl*` templates and take care to correctly
handle the case where `val` is either zero for non-existent keys in `inc`
or evolves to zero over time in `[]=` or `inc`.
The only user-visible changes from the +-42 delta here are speed, iteration
order post deletes, and relaxing the `Positive` constraint on `val` in
`proc inc` again, as indicated in the `changelog.md` entry.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Fix #14994
* Revert misplaced "optimization"
* Typo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* remove a condition that table size must be passed as power of 2
* remove power-of-2 condition from sets and sharedtables
* remove power-of-2 condition from deques
* use 'correctSize' for both branches
* prettify changelog.md and fix typos
* add a changelog entry
* fix double-call of 'right-size'
* fix the same thing in sets.nim
* introduce a new internal proc `slotsNeeded`
Deprecate the public proc `rightSize`, which is not needed anymore.
Now it is an identity function, allowing the old code to work
correctly and without extra allocations.
|
|
|
|
|
|
|
|
|
|
| |
The `smallest` and `largest` procs for `CountTable` returned a tuple
with named fields, but the same procs for `CountTableRef` returned an
anonymous tuple.
This commit makes those `CountTableRef` procs more consistent, and adds
a test.
Fixes: #14918
|
| |
|
|
|
| |
Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
|