\section{The generator program}
\label{generator}

The software consists of the following packages and classes:

%\begin{figure}[ht]
%\begin{center}
%\epsfig{file=content/diagrams/Classes_skeleton.ps,width=17cm}
%\end{center}
%\caption{A diagram of the packages and classes.}
%\label{fig: f_modules}
%\end{figure}

%\newpage

\textbf{PIANOS.datastructures}

\begin{itemize}
\item BetaDistribution
\item BinomialDistribution
\item ComputationalModel
\item ContinuousUniformDistribution
\item DiscreteUniformDistribution
\item Distribution
\item DistributionFactory
\item DistributionSkeleton
\item Entity
\item Equation
\item PoissonDistribution
\item UserDefinedDistribution
\item Variable
\end{itemize}

\textbf{PIANOS.exceptions}

\begin{itemize}
\item EntityNotFoundException
\item IllegalParametersException
\item InvalidModelException
\item InvalidProposalException
\item MissingDistributionException
\item MissingFunctionException
\item SyntaxException
\end{itemize}

\textbf{PIANOS.generator}

\begin{itemize}
\item Acceptation
\item Definitions
\item FortranMain
\item Input
\item Output
\item Proposal
\end{itemize}

\textbf{PIANOS.io}

\begin{itemize}
\item ComputationalModelParser
\item FortranWriter
\end{itemize}

\textbf{PIANOS}

\begin{itemize}
\item Generator
\end{itemize}

\subsection{Generator}

The Generator class includes the main() and writeProgram() methods. writeProgram() can be used for example a graphical user interface. It has the same functionality as main(). The Generator uses the Parser to read the input files. After it the Generator uses the classes in the package generator. Those classes generate the different Fortran modules. The main() method of the class Generator expects the user to give the input files as command line parameters. The order of these files must be:

\begin{enumerate}
\item User defined distribution file
\item Model file
\item Initial value file
\item Simulation parameter file
\item Proposal distribution file
\item Update strategy file
\item The file defining which variables are output
\item The file to save the last values to
\end{enumerate}

Input file names can also be given in a single file that is given to the Generator,
See the PIANOS manual for details.

\input{content/package_datastructures}
\input{content/package_io}
\input{content/package_generator}
