Skip to content

Releases: fisothemes/TwinCat-Dynamic-Collections

v1.0.6.32

27 Jul 12:25
Compare
Choose a tag to compare

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(...) and Get_Values(...) methods no longer loop through the entire collection on each call if the collections haven't changed.

v1.0.5.25

24 Mar 03:47
Compare
Choose a tag to compare
v1.0.5.25 Pre-release
Pre-release

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

10 Sep 02:04
Compare
Choose a tag to compare
v1.0.4.21 Pre-release
Pre-release

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

03 Sep 21:34
Compare
Choose a tag to compare
v1.0.3.18 Pre-release
Pre-release

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

25 Aug 03:33
Compare
Choose a tag to compare
v1.0.2.11 Pre-release
Pre-release

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:

  1. 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.

  2. 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.

  3. 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

10 Mar 03:31
Compare
Choose a tag to compare
v0.3.1.0 Pre-release
Pre-release

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

18 Jan 04:19
Compare
Choose a tag to compare
v0.3.0.0 Pre-release
Pre-release

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

10 Jun 00:26
Compare
Choose a tag to compare
v0.2.0.0 Pre-release
Pre-release

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

18 May 02:31
Compare
Choose a tag to compare
Initial Release Pre-release
Pre-release
v0.1.0.0

Initial Commit