\section{Assumptions}\label{sec:assumptions} The following assumptions are made for the implementation of the node placement algorithm: \begin{itemize} \item There are no hyperedges. \item There are no port constraints. \item There are no labels. \item There are no cross-hierarchy edges. \end{itemize} \section{Input File Format}\label{sec:inputFileFormat} The input to \appname is a JSON file. An example is displayed in figure~\ref{fig:json-example}. The structure is as follows: \begin{itemize} \item The object in the JSON file is a node. \item A node has the attributes that are displayed in table~\ref{table:node-attributes}. \item An edge has the attributes that are displayed in table~\ref{table:edge-attributes}. \end{itemize} For parsing the JSON file the JSON-java library~\cite{leary_json-java:_2018} is used. \centering \begin{longtable}{|p{1.8cm}|p{2cm}|p{1.8cm}|p{8.5cm}|} \hline Attribute & Type & Optional & Explanation \\\hline\hline name & string & yes & If not omitted, this must be unique for a given parent node. \\\hline width & integer & yes & The minimum width of the node. The node can be wider if it contains other nodes that need more space. \\\hline height & integer & yes & The minimum height of the node. The node can be higher if it contains other nodes that need more space. \\\hline layers & list of lists of nodes & yes & The layers of nodes inside this node (Hierarchy). \\\hline edges & list of edges & yes & The edges between nodes whose parent node is this node. \\\hline \caption{Node Attributes} \label{table:node-attributes} \end{longtable} \begin{longtable}{|p{1.8cm}|p{2cm}|p{1.8cm}|p{8.5cm}|} \hline Attribute & Type & Optional & Explanation \\\hline\hline source & string & no & The name of the source of this edge. Must be a node with the same parent node as the node specified by the \enquote{target} attribute. \\\hline target & string & no & The name of the target of this edge. Must be a node with the same parent node as the node specified by the \enquote{source} attribute. \\\hline \caption{Edge Attributes} \label{table:edge-attributes} \end{longtable} \raggedright %\begin{figure}[tp] % \centering % \includegraphics[width=0.9\textwidth]{img/json.png} % \caption[Input file format]{Input file format illustrated as a HERM diagram} % \label{fig:iff} %\end{figure} \begin{figure} \begin{lstlisting}[language=json,emph={}] { "layers":[ [ { "name":"n2", "width":10, "height":10 }, { "name":"n1", "width":10, "height":10, "layers":[ [ { "name":"n2", "width":10, "height":10 } ] ] } ] ], "name":"n0" } \end{lstlisting} \caption[Example Input File]{Example Input file that is understood by \appname.} \label{fig:json-example} \end{figure} \section{Class Diagrams}\label{sec:classDiagrams} \TODO{run vpp}