Home

h-hermsen
There is a newer version of this page. You can find it here.


Project Members:


co🔗e: Linked List

This Page
Introduction | Usage | Download | Requirements | Acknowledgements

Introduction

Linked lists are suitable as a flexible and modular way to implement simple and powerful code with ease. This library will allow you to leverage the simplicity, power and flexibility of linked lists.

A linked list is a data structure that represents a sequence of nodes (Elements). This library implements a so called "double linked list", which simply means that the list gives each Element pointers to both the next Element and the previous Element. Unlike an array, a linked list does not provide constant time access to a particular “index” within the list. This means that if you’d like to find the K-th element in the list, you will need to iterate through K elements. The benefit of a linked list is that you can add and remove Elements from the list during runtime.

Usage

  • Insert the Library Reference in your program.
  • Declare a new FB called FB_ExtendedElement
// we need to extend at least one FB_Element since it has been decorated as ABSTRACT.
// Any new FB that will be a part of the List should preferably use encapsulation and composition to implement
// FB_ExtendedElement. So FB_ExtendElement will act as a baseclass for your Element.
// If you use encapsulationn and composition it will provide you with (way) more flexibility but also more programming since you have to encapsulate/composite all methods and properties too

FUNCTION_BLOCK FB_Extendedlement EXTENDS LinkedList.FB_Element
VAR
    _uiCount : UINT := 0;
END_VAR


// Body
Super^();


METHOD ReturnInstance : POINTER TO THIS

// Body
ReturnInstance := THIS;


METHOD Count : UINT;

// Body

_uiCount := uiCount + 1;
  • Declare an instance of LIST
  • Declare an instance of FB_ExtendedElement;
 VAR
     Init : Bool := TRUE;
     List : LinkedList.List;
     ExtendedEl1: FB_ExtendedElement;
     ExtendedEl2: FB_ExtendedElement;
     pEl : POINTER TO FB_ExtendedElement;
     ElementCount : UINT;
 END_VAR

// Body
IF Init THEN
   List.AddElement( ExtendedEl1 );
   List.AddElement( ExtendedEl2 );
END_IF

// FOR

You should never interact with list elements directly! Always interact with Elements through the central List!

Download

By downloading and using our software you abide by the MIT License

Download co🔗e - Linked List v1.0.0.0 library

Requirements

System requirements and restrictions Info
Programming System CODESYS Development System Version 3.5.9.0 or higher
Runtime System CODESYS Control Version 3.5.9.0 or higher
Licensing -
Required Accessories -

Acknowledgements

Since we develop as individuals we have regular jobs, we understand that good software development takes time and effort. However, this experimental and open form of development stimulates our creativity in full freedom without any pressure, boundaries or limitations! Creativity, fun and adding value to society are part of our DNA. This means that we do not have any hard deadlines to meet apart from those we impose on ourselves! Of course we set milestones and progress is being made. Please respect our efforts and our limited time.