* Tree
- WIP
* Tree
- Added initial dfs
* Tree
- By default use the `always` strat
* Tree
- Added a TODO
* Tree
- Added ability to append
Tree (unittests)
- Updated unittests to test appending
* InclusionStratergy
- Now uses the `TreeNode!(T)` instead of the `T` itself
* VisitationTree
- Working on a visitation tree implementation
* Tree
- Pass in, explcitly, the touch startergy
* Tree
- Correct visitation stratergy
* VisitationTree (unittests)
- Added missing assertions
* Tree (unittests)
- Added missing assertions
* Methods
- Added rightward shifting mechanism
* Methods
- Added leftwards shifting mechanism
* TreeNode
- Added removal
- Added indexing support
* Tree
- Reworking opSlicwe
* Tree
- opSlice done
* Tree
- Added normal opSlice as well
* Tree (unittests)
- Updated test for parametwerized opSlice
* Tree
- Added opIndex
* Tree
- Cleaned up
- Removed `getValue()`
Tree (unittests)
- Added test for `removeNode(Tree!(T))`
* Containers
- Added `shiftIntoLeftwards` and `shiftIntoRightwards`
* Containers (unittests)
- Use new methods
* Containers
- Cleaned up
* InclusionStratergy
- Documented
TouchStratergy
- Documented
* Containers
- Documented method
* niknaks.arrays
- Moved here
niknaks.containers
- Moved here
* niknaks.arrays
- Updated unittestesd (test shrinking)
- Added docs
* niknaks.arrays
- Refactored
* niknaks.arrays
- Added this
* VisitationTree
- Documented
* VisitationTree
- Documented
* Tree (unittests)
- Added docs
* Tree (unittests)
- Moved import
* Tree
- Added some docs
* Tree
- CLeaned up
* Tree
- Documented
* Tree
- Documented
* Tree
- Documented
- Cleaned
* Always(T)
- Documented
* Tree
- Added `opDollar()` and `@property`'d `length()`
* Tree
- Adde doc
* Tree
- Renamed `Tree!(T)` to `Graph!(T)`
* Graph
- Typo fix
* Graph
- Clean up
* Graph
- Renamed
* Graph
- Documented helper methods
* Graph
- Typo fix
* graph
- Documented `dfs(...)`
* Graph
- Documented `toString()`
* Graph (unittests)
- Added tests for `opIndex(size_t)`
* Graph
- Implemented `getValue()`
Graph (unittests)
- Added tests for `getValue()`
* Graph (unittests)
- Added test for `opDollar()`
* README
- Updated docs
* Prompt
- Allow multiple values
Prompt (unittest)
- Updated to use the new `Prompt` API
* Prompter
- Added multi-answer and empty support
* Prompter
- Cleaned up
* Prompter
- Various fixes
Prompting (unittests)
- Added unittest for single-val;ues that CANNOT be empty and for multi-value prompts
* Config
- Added initial types
* ConfigEntry
- Added `getType()`
* ConfigENtry
- Implemented `opCast(TypeTo)()` for all the types.
- It will ALSO throw a compile-time false assertion if an unsupported to-type `TypeTo` is specified
* ConfigEntry
- Removed a TODO
* Registry
- Added initial registry implementation
* ConfigEntry
- Added ensure-set stuff
Registry
- Added `opIndex(string)`
* ConfigEntry (unittests)
- Test the ensure set stuff
* Registry
- Refatcored `newEntry(..., ..., ...)` to alow for parameterizing over-writing allowance
- Implemented `opIndexAssign`
* Registry
- Toggle set-on-creation (i.e. setting something if it never existed)
- `opIndexAssign` allows setting-on-creation (i.e. creation of an otherwise non-existent node)
* Registry (unittest)
- Try get more coverage by testing certain case
* Registry (unittest)
- Try get more coverage by testing ANOTHER case
* RegistryEntry
- Added
* Registry
- Implemented `getEntries()`
* Registry
- Implemented `opSlice()`
* Registry (unittests)
- Test the `opSlice()` and hence `getEntries()` method
* Mechanisms
- Added `Delay`
- Added tests for `Delay`
* DelayTimeoutException
- Added new exception type
Delay
- Now uses `DelayTimeoutException`
* Delay (unittests)
- Test out function to delegate conversion
* Delay
- Stop and reset internal timer once `go()` goes out of scope
- this allows for re-use
* Delay
- Fixed calling of `stop()` on a non-running `StopWatch`
* Delay
- Fully documented
* Delay (unittests)
- Documented
* Mechanisms
- CLeaned up
* Delay
- Documented
- We must add an import.
- The mixin dumps parameter-filled code verbatim and hence the scope is not the same as you would think. Everything we need must be present.
- We must add an import.
- The mixin dumps parameter-filled code verbatim and hence the scope is not the same as you would think. Everything we need must be present.
* Containers
- Created module
* ExpirationStrategy
- Added new enum with members `LIVE` and `ON_ACCESS`
* Entry
- Added entry
* CacheMap
- Added initial implementation
CacheMap (unitests)
- Added a unittest
* CacheList
- Added a stub `CacheList` container type
* CacheMap
- Implement the static ifdefs to set
- Use the hitcount method
* CacheMap
- Disbale hitcount for now
* CacheMap
- Added `ReplacementFunction`
* CacheMap
- Implemented `updateKey(K key)`
* CacheMap
- Implemented `expirationCheck(K key)`
* CacheMao
- Updated `get(K key)` to use the new `K` key-based exipiration check
* CacheMap
- The method `updateKey(K key)` now returns the value refreshed
- `get(K key)` now refrehses on unfound key
* CacheMap
- Implemented `makeKey(K key)`
- Busy reworking, still broken
* CacheMap
- Fixed errors with compilation in `makeKey(K key)`
* CacheMap
- Fixed `expirationCheck(K key)` by using `makeKey(K key)` whenever the key does not yet exist
* CacheMap (unittests)
- Fixed unit test
* CacheMap
- Removed `put(K, V)` method
* CacheMap
- Removed traversal version `expirationCheck()`
* CacheMap
- Force compilation failure when `get()` is called for LIVE strat
- Added proper `~this()` implementation for LIVE strat
* CacheMap
- Documented methods
* CacheMap
- Updated `get(K)`
* CacheMap
- Either a function or delegate may now be used
* CacheMap
- Removed nop
* CacheMap
- Always use a thread that wakes up at expirary time to clean up
- Added destructor (that won't seg) as it wits for the cleanup to happen then exits (allowing destruction AFTER the fact)
* CacheMap
- Added some documentation
* CacheMap
- Cleaned up
* CacheList
- Removed `CacheList`
* Containers
- Moved inside of unittest
* Containers (unittest)
- Documented
- Removed unused unittest
* ExpirationStrategy
- Removed this enum
* Entry
- Documented
* CacheMap
- Documented `get(Key)`
* CacheMap
- Documented `checkerFunc()`
* CacheMap
- Documented `doLiveCheck()` and `~this()`
* niknaks.containers
- Documented module
* niknaks (package)
- Added import
* CacheMap
- Implemented `removeKey(K key)`
* CacheMap
- Documented `removeKey(K)`
* CacheMap (unittest)
- Explcitiyl set time
* CacheMap (unittest)
- Added a test ofkey removal (explicit)
* CacheMap (unittest)
- Destroy map
* CacheMap (unittest)
- Added missing documentation
* CacheMap (unittest)
- Removed old code
* CacheMap (unittests)
- Cleaned up
* CacheMap
- Fixed the constructor which takes in a `ReplacementFunction` to pass in the default arguments as well
- The `checkerFunc` now uses the `sweepInterval`
- Added support for a `sweepInterval` which the checker runs at now (seperate to the `expirationTime`)
CacheMap (unittest)
- Documented more unittests
- Added a unit test for on-access stratergy testing
* niknaks.containers
- Cleaned up imports
* niknaks.debugging
- `dumpArray` will not expand strings anymore
* niknaks.debugging
- Working prototype (potentially) for a fix
* niknaks.debugging
- Updated the unittests to use the new version
* niknaks.debugging
- Added missing docs
* niknaks.debugging
- Made this method internal
* niknas.debugging
- Renamed `dumpArray2` to `dumpArray`
- Removed old `dumpArray_internal(T)(T[] array)`
* niknaks.debugging
- Documented
* niknaks.debugging
- Moved unittest
* niknaks.debugging
- Moved unittests near template (all of them) to allow for them to appear in documentation
* niknaks.debugging
- Remove pragmas
- Documented internals
* niknaks.debugging
- Rmeoved
* niknaks.debugging
- Added initial `dumpArray(T)(T[])` and `dumpArray(T)(T[], size_t, size_t)`
- Added a unit test
* niknaks.debugging
- Added `isWriteStrat(alias T)(T)`
* niknaks.debugging
- Updated unit tests to test all variations
* niknaks.debugging
- Added `genTabs(ubyte count)`
- Working on making `dumpArray` support compile-time recursion on the array types to generate the correct functions nedded for arrays-of-arrays-of-arrays-of yadada you get it
* niknaks.debugging
- `genTabls(size_t)` now takes in `size_t` instead of `ubyte`
- `depth` is now `size_t`
- Increment the depth argument by 1 prior to call
- Add tabbing for call to indent when array of arrays
- Added unit tests for recursive meta programming code generation
* niknaks.debugging
- Indent only when the `depth` is non-zero for both array of arrays case entry and singular array case entry
* niknaks.debugging
- Documented unittests
* niknaks.debugging
- Documented `genTabs(size_t count)`
* niknaks.debugging
- Added `genX(size_t count, string pattern)`
- `genTabs(size_t)` now uses `genX(size_t, string)`
* niknaks.debugging
- Documented last few methods
* niknaks.debugging
- Neatened up
* niknaks.debugging
- Now returns a `string`
* niknaks.debugging
- Don't use `writeln`, use `write` for unit tests
- Cleaned up imports
* niknaks.debugging
- Removed dead and old code
- Cleaned up unused imports
* Package
- Added missing import
* niknaks.debugging
- CHanged module comment
* README
- Added information about the `niknaks.debugging` module
* niknaks.functional
- This is eh, I should just use `std.functional.toDelegate`
* niknaks.functional
- Updated template `Predicate!(T)` to now refer to `bool delegate(T)`
- Added template function `predicateOf(alias f)` where the alias is the function's symbol name. It can be either delegate or functin but must be callkable, then we convert a fucntion to a delegate if need be
* niknaks.functional
- Don't allow any callable, ONLY delegates or functions as the referred-to entity of the alias/symbol
* niknaks.function
- Added some documentation
* niknaks.functional
- `predicateOf!(alias)` now ensurs that the delegate or function has a return type of bool and that it has a single arity
* niknaks.functional
- Removed commented-out old code
* niknaks.functional
- Added missing `isDelegate` import
- Updated unittests
* niknaks.functional
- Remove testing code for a unit test
* niknaks.arrays
- Added a new implementation of `findNextFree!(T)(T[], ref T)` which now returns a boolean and ref's the found value
- Fixes a bug whereby infite loop COULD occur
- The new function is also `@nogc`
* niknaks.arrays
- Added a unittest to test out the new method
* niknaks.arrays
- Removed now-completed TODO
* niknaks.arrays
- Cleaned up comments for unit tests
- Added missing unit test comments
* niknaks.arrays
- Fixed unittest to be nicer
* niknaks.arrays
- Fixed unittest to be nicer
* niknaks.arrays
- Added a unit test to test a missing case of an empty array
* niknaks.bits
- Added `fromBytes`
* niknaks.bits
- Renamed `fromBytes` to `bytesToIntegral`
* niknaks.bits
- `bytesToIntegral` is documented
- `bytesToIntegral` now has a runtime length check
* niknaks.bits
- Dicumented example
* niknaks.-bits
- Added unit test
* niknaks.bits
- Fixed unittest
* niknaks.bits
- Return `T.init` when runtime range check fails
* niknaks.bits
- Made `bytesToIntegral(T)(ubyte[] bytes)` not use any stack space
* niknaks.bits
- Fixed unittest
* niknaks.functional
- Initial support for optionals added
* README
- Added Optionals to list of supported things in `niknaks.functional`
* niknaks.optional
- Split up positive and negative test cases
* niknaks.functional
- Documented template and the struct within
* niknaks.functional
- Documented template and the struct within
* niknaks.functional
- Documented `OptionalException`
* niknaks.functional
- Cleaned up imports