GraphTool Data Structure

These are the underlying data structures that are used in GraphTool. The sets are type defined in a header file called defines.h which also contains all of the custom functors the application uses to sort the objects in the sets.

Linkler

The Linkler class acts as a container for all the data parsed from the input-file. When loading a new input-file a Linkler will be created along with an xml parser that will parse the xml into the Linkler.

The Linkler maintains all Modules (load blocks), SWUs, Executables (run blocks) as well as all dependencies between modules and between SWUs.

SWU

The SWU class corresponds to the modules "swu"-attribute in the xml file and contains a name, a set of modules present in the SWU, a set of Executables the SWU is present in (mapped implicitly from it's set of modules), a set of SWU-to-SWU dependencies and dependents, 2 sets of module-to-module dependencies and dependents and lastly a map that maps a SWU-to-SWU dependency to a set of modules-to-module dependencies.

When drawing the graph it is the SWU-to-SWU dependencies along with the SWUs that the application uses to draw the graph.

Module

The Module class is directly mapped from the "module"-tag in the xml file and contains a name, a memory type, a "connected" (pointer to a) SWU and 2 sets of module-to-module dependencies and dependents. The Module class corresponds to a load block.

The Module class is the most basic building block in the Linkler as it is contained in a Linkler, one or several SWUs as well as one or several Executables.

Executable

The Executable class is indirectly mapped using the "area-ref"-tags in the xml-file as the "area-ref"'s does not really exist. Since every module has a "area-ref"-attribute we can map every module to an executable.

Every Executable contains a name, a set of Modules present in the Executable as well as a set of SWUs that are present in the Executable.

Dependency

The Dependency class is a templated class that can represent a dependency between modules or a dependency between SWUs.

It contains information about the type of dependency, if it is absolute or relative as well as the memory type of the Modules or SWUs.

With the dependency object one can access pointers to the Module or SWU that the dependency is from as well as which Module or SWU it goes to.

File

As of now the File class is not used but it has some basic functionality that can be further developed.