Releases: fisothemes/TwinCat-Dynamic-Collections
v1.0.6.32
New Features:
- Added
FB_Ordered_Hash_Set
- Added
FB_Ordered_Hash_Map
Improvements
- Retrieving keys and values from maps and sets is now more efficient. The
Get_Keys(...)
andGet_Values(...)
methods no longer loop through the entire collection on each call if the collections haven't changed.
v1.0.5.25
New Features:
- Added I_Iterable interface that provides structure and improved safety for iterable data structures. Example:
FOR i := fbList._Begin TO fbList._End DO fbList.Get(i, arfValue[i]); END_FOR
Fixes:
- Fixed issue #3 for both FB_Tree_Map and FB_Tree_Set
- Fixed issue were removing the root node from a left or right heavy tree caused the tree to become unbalanced.
v1.0.4.21
New Features:
- Added enum for error codes (E_ERROR_CODE).
Improvements:
- FB_Array_List now increases capacity by 50% instead of doubling.
- Added error reporting for functions.
- Improved error reporting for all collection function blocks.
Fixes:
- Fixed issue were clearing the Set or Map and then attempting to access the I_Immutable_List interface caused invalid pointer to be dereferenced.
- Fixed issue were the remove method for FB_List and FB_Array_List only removed the first item instead of searching for an item and then removing it.
- Added check for failed memory allocation for functions and function blocks. See #2.
v1.0.3.18
New Features:
- Added Hash Map
- Added Hash Set
Improvements:
- Reduced the size of ST_ERROR by changing T_MaxString to STRING and changing STRUCT member declaration order.
- Reduce the memory footprint of the following:
- FB_Queue
- FB_Stack
- FB_Deque
- All maps
- All sets
- All Immutable collections
v1.0.2.11
First Release of Version 1 (v1.x.x.x).
In this initial pre-release of version 1, thorough unit tests that have been run and passed successfully for all the main data structures.
Version 1 is a rework of the original version 0 (v0.x.x.x), with enhancements in speed, improved efficiency, user-friendliness, robustness, and extensibility.
The preceding version suffered from both consistency and implementation issues. These included variations in indexing locations, inconsistencies in method and property naming, and methods that didn't really add value. Furthermore, there were implementation issues with the recursive tree data structures causing performance problems and limiting the number of elements to approximately 100 (depending on stack size). The way the singly linked list was used for FB_List and the constant downsizing of FB_Array_List's capacity was also problematic. Version 1 addresses these concerns.
Here are the highlights of what's changed:
-
A complete makeover to the tree data structures (FB_Tree_Set and FB_Tree_Map). They've ditched the recursive approach and switched to an iterative solution. This not only makes them faster but also gets rid of any stack-related problems. The internal data structure is an AVL tree, which means searching, inserting, and deleting now work O(log N) time complexity.
-
FB_Array_List now behaves like C++ vectors. It won't ask for extra memory until it needs it – no unnecessary allocations. Once it hits its limit, it doubles its capacity, but doesn't do any value allocations until the space is used making memory management much smarter.
-
FB_List is now a doubly linked list with an optimised iterator hint. Basically, it remembers the last node you used. So, when you're iterating, it starts from where you left off, whether it's the head, tail, or last accessed of the desired access or modification index. This means quick access times for sequential operation (O(1)), and the same speed for access and modification operations targeting the same index.
There's many more improvements made.
v0.3.1.0
Feature Change:
- FB_List
- Changed how the Set(...) method works. Set method used to only set a value if its the same type. Now it just replaced the value in that location with whatever typed value you set the location to be.
Fixes:
- FB_List and FB_Array_List
- The bSuccess output parameter, an indicator for whether an operation is successful, was not implemented on the Resize(...) method.
- Removed type match checking on the Get_Generic(...) Method. This checked if the Return_Item parameter was the same type as the one being retrieved. That parameter was an output and there is no point in type checking since you're retrieving a generic.
v0.3.0.0
New Features:
- Added FB_Tree_Map
- Added FB_Binary_Search_Tree
- Added FB_Read_Only_List
- Added FB_Write_Only_List
- Added I_Generic_Collection
- Added I_Generic_List
Improvements:
- Better Examples
- FB_List now has a tail meaning adding to the back now takes O(1) time
- I_Generic_x allows for data to be transferred between collections
- Used the {attribute 'no_assign'} pragma on relevant data structures to prevent unsafe copying of data
- Improved speed of removal of items in FB_List
Fixes:
- All decorators now check if the interface they're decorating is null, this prevents null value dereferencing
v0.2.0.0
New Features:
- Added FB_Array_List
- Added Find() Method to the I_List Interface
- Added Resize() Method
- Added Get_Value_As_String() Method
- Added Generic Type
- Added I_List_ReadOnly Interface
- Added I_List_Write_Only Interface
Improvements:
- Better Examples
- Clearer Comments
- UML diagrams
- Clearer Method names
- Improved documentation
Fixes:
- Fixed double item bug that occurred during the insertion of the first { <I_List>.Insert(0) } item in the list
Initial Release
v0.1.0.0 Initial Commit