diff --git a/CHANGELOG b/CHANGELOG new file mode 100644 index 0000000..684ba9f --- /dev/null +++ b/CHANGELOG @@ -0,0 +1,85 @@ +# MAJOR.MINOR.ADJUSTMENTS + +1.0.0 + First stable version + Includes the following collections: + - deque + - hashmap + - hashset + - heap + - linkedlist + - list + - queue + - stack + - treemap + - treeset + Two-way iterators + Benchmarks + Tests: + - foreach + - iterator + +1.0.1 + Fixed hashset logic in robin-hood hashing + +1.1.0 + Added new list functions: + - new_from + - prepend + - insert + - append + - remove + - fits + +1.1.1 + Reordering functions (implementation details are now at the end of each file) + +1.1.2 + Fixing iterators for when they are initialized with an empty target + Better iterator tests + More examples + +1.1.3 + Renamed deque's 'rear' struct member to 'back' to be more consistent with other collections + Better benchmark and foreach tests are alphabetically ordered + +1.2.0 + 'contains' functions added to all collections + 'contains' tests and benchmark + Unified Benchmark + Updated examples + +1.2.1 + Optimized list - now using 'string.h' functions to shift elements around instead of for-loops: + - memset + - memcpy + - memmove + +1.2.2 + Removed unnecessary modulo operation in hashtable functions + +1.2.3 + Added get_ref functions to all collections that support it (only included in hashmap, linkedlist, list and treemap) + +1.2.4 + Fixing some declarations in hashset and hashmap where a pointer type would cause problems + Added a test to make sure all collections support pointer type + Tests: + - pointertype + +1.3.0 + Changed how the linkedlist functions relative to nodes work + Removed reference to owner list on each node + Renamed some functions for consistency + +1.4.0 + New way on how iterators work to all collections + Added iter_init to work with stack allocated iterators + Added iter_new and iter_free to work with heap allocated iterators + Added two pointers to functions (it_start and it_end) that allow you to access iterators to both start and end of the target collection easily + iter_next and iter_prev now only move the iterator + To access the key, value and index, use a separate function + Removed FOR_EACH_MAP as it is no longer necessary since FOR_EACH also works to associative containers now + Updated benchmark, examples and tests to work on these new iterators + Changed pointertype test to be a pointer to struct instead of pointer to char + Added CHANGELOG and TODO diff --git a/TODO b/TODO new file mode 100644 index 0000000..7892051 --- /dev/null +++ b/TODO @@ -0,0 +1,56 @@ +TODO + +[ ] Finish Documentation +[ ] Simplify PUBLIC and PRIVATE +[ ] Add multiset +[ ] Add multimap +[ ] Upgrade heap to a min-max heap +[ ] Add dispose function +[ ] Serialization +[ ] Iterator based functions (like C++ collections) + + +MAYBE + +[ ] Add conditional code generation based on variadic macros + + +PLANNED + +Before 2.0 + Get Documentation fixed and completed + +1.5 + Simplify PUBLIC and PRIVATE (simply remove them) + Conditional code generation + Add extra content macro (Insert/Remove/Append/Prepend) and let user decide if he wants to include them or not + Separate Implementation Detail into a different MACRO (LIST_GENERATE_DETAIL) + +1.6 + Iterator move and move_to + LinkedList - Insert/Remove/Append/Prepend/Extract + to_array - Creates an array with all the elements inside the collection + +1.7 + Add shrink function that shrinks the internal buffer to current count of elements + +2.0 + Add multiset, multimap and new heap implementation + +2.1 + Adapt multiset, multimap, treehashmap and new heap implementation to the current standards + Add dispose method to each collection in order to automatically free its data + +2.2 + Add serialization functions + Header: + %d - Type specifier (LIST = 0, DEQUE = 1, STACK = 2, etc) for quick check + %llu - How many elements there are + %d - If data varies in size + %llu - Data size + +2.3 + Iterator functions (functions that operate relative to iterators position) like add or remove ranges + +Sometime + Add treehashmap