blob: 245a81d08f8630bc14e7529aad152d8ec7c9b6ef [file] [log] [blame]
% Plug-in Decomposition
\section{Introduction}
This chapter presents a high-level overview of the different projects and
plug-ins in Photran. It serves as a guide for developers reverse-engineering
Photran to \emph{guess-and-locate} where certain components are. It also serves
as a guide for contributers on \emph{where} to put their contributions.
The following sections are grouped by feature. A feature is a collection of
related Eclipse plug-ins that the user can install as a whole.
\section{Base Photran Feature: \\org.eclipse.photran-feature}
The following projects comprise the ``base'' of Photran.
\begin{itemize}
\item \textbf{org.eclipse.photran.cdtinterface}
This contains most of the components (core and user interface) related
to integration with the CDT. It includes:
\begin{itemize}
\item The FortranLanguage class, which adds Fortran to the list of languages
recognized by CDT
\item Fortran model elements and icons for the Outline and Fortran Projects views
\item An extension point for contributing Fortran model builders, and a
simple lexical analyzer-based model builder (which, generally speaking,
is not used)
\item The Fortran perspective, Fortran Projects view, and other CDT-based
parts of the user interface
\item New Project wizards and Fortran project templates
\end{itemize}
For more information about CDT, see Chapter~\ref{cha:cdt}.
\item \textbf{org.eclipse.photran.core}
This is the Photran Core plug-in. It contains much of the Fortran-specific
``behind the scenes'' functionality:
\begin{itemize}
\item Utility classes
\item Error parsers for Fortran compilers
\item Fortran 95 lexical analyzer
\item Workspace preferences
\end{itemize}
\item \textbf{org.eclipse.photran.managedbuilder.core}, \\
\textbf{org.eclipse.photran.managedbuilder.gnu.ui}, \\
\textbf{org.eclipse.photran.managedbuilder.ui}
Support for Managed Build projects using the GNU toolchain. Managed by Craig Rasmussen at LANL.
\item \textbf{org.eclipse.photran.ui}
This contains the Fortran-specific components of the user interface:
\begin{itemize}
\item Fortran Editors
\item Preference pages
\end{itemize}
\end{itemize}
\section{Virtual Program Graph (VPG) feature: \\org.eclipse.photran.vpg-feature}
The following projects support parsing, analysis, and refactoring of Fortran
sources. They are written in Java 5. The Virtual Program Graph is described in
more detail in Chapter~\ref{cha:parsing}.
\begin{itemize}
\item \textbf{org.eclipse.photran.core.vpg}
This contains the parsing, analysis, and refactoring infrastructure.
\begin{itemize}
\item Fortran parser and abstract syntax tree (AST)
\item Fortran preprocessor (to handle INCLUDE lines)
\item Parser-based model builder
\item Virtual Program Graph library (vpg-eclipse.jar)
\item Photran's Virtual Program Graph (VPG)
\item Utility classes (e.g., \texttt{SemanticError}, \texttt{LineCol})
\item Project property pages
\item Binding analysis (equivalent to symbol tables)
\item Refactoring/program transformation engine
\item Refactorings
\end{itemize}
\item \textbf{org.eclipse.photran.core.vpg.tests}, \\
\textbf{org.eclipse.photran.core.vpg.tests.failing}
JUnit Plug-in tests for the VPG core plug-in.
All tests in org.eclipse.photran.core.vpg.tests should pass. Test suites and
test cases are placed in the ``failing'' plug-in project until all of their
tests pass.
These plug-ins \textit{must} be run as a ``JUnit Plug-in Test'' (\textbf{not} a
``JUnit Test''). In the launch configuration, the environment variable TESTING
must be set to some non-empty value. (This ensures that the VPG will not try to
run in the background and interfere with testing.)
\item \textbf{org.eclipse.photran.ui.vpg}
UI contributions that depend on the \texttt{org.eclipse.photran.core.vpg}
plug-in. Currently, this includes the Open Declaration action, a project
property page where the user can customize the search path for Fortran modules
and include files, Fortran Search support, and all of the actions in the
Refactor menu.
\item \textbf{org.eclipse.photran.cdtinterface.vpg}
This contributes the Fortran model builder which constructs the model seen in
the Outline view and Fortran Projects view. It uses the Fortran parser
contained in the org.eclipse.photran.core.vpg plug-in.
\end{itemize}
\section{XL Fortran Compiler Feature: \\org.eclipse.photran.xlf-feature}
The following are plug-ins to support the
\href{http://www-306.ibm.com/software/awdtools/fortran/}{XL Fortran compiler}.
\begin{itemize}
\item \textbf{org.eclipse.photran.core.errorparsers.xlf}, \\
\textbf{org.eclipse.photran.managedbuilder.xlf.ui}
Support for Managed Build projects using XL toolchains. Managed by Craig
Rasmussen at LANL.
\end{itemize}
\section{Intel Fortran Compiler Feature: \\org.eclipse.photran.intel-feature}
The following are plug-ins to support the \href{http://www.intel.com/cd/software/products/asmo-na/eng/compilers/284132.htm}{Intel Fortran Compiler}.
\begin{itemize}
\item \textbf{org.eclipse.photran.core.intel}, \\
\textbf{org.eclipse.photran.managedbuilder.intel.ui}
Support for Managed Build projects using Intel toolchains. Maintained by Bill
Hilliard at Intel.
\end{itemize}
\section{Rephraser Engine}
The following plug-ins comprise the Rephraser Engine, a language-independent indexing and
refactoring infrastructure that serves as the basis for Photran's refactoring engine.
The Rephraser Engine will contribute a Rephraser Engine Plug-in Developer Guide to the runtime
workbench (sourced in org.eclipse.rephraserengine.doc.isv); this provides more information about
these plug-ins. Starred plug-ins are not distributed to end users.
\begin{itemize}
\item \textbf{org.eclipse.rephraserengine-support}*
\item \textbf{org.eclipse.rephraserengine.core}
\item \textbf{org.eclipse.rephraserengine.core.refactoring}
\item \textbf{org.eclipse.rephraserengine.core.vpg}
\item \textbf{org.eclipse.rephraserengine.core.vpg.tests}*
\item \textbf{org.eclipse.rephraserengine.doc.isv}*
\item \textbf{org.eclipse.rephraserengine.examples.text}*
\item \textbf{org.eclipse.rephraserengine.ui}
\item \textbf{org.eclipse.rephraserengine.ui.refactoring}
\item \textbf{org.eclipse.rephraserengine.ui.vpg}
\end{itemize}
\section{Non-plug-in projects}
The following projects are in CVS but are not distributed to users:
\begin{itemize}
\item \textbf{org.eclipse.photran-dev-docs}
Developer documentation, including this document (\texttt{dev-guide/*}), CVS
instructions (\texttt{dev-guide/cvs-instructions.pdf}), the materials from our
presentation at EclipseCon 2006 on adding a new language to the CDT, and a
spreadsheet mapping features in the Fortran language to JUnit tests
(\texttt{language-coverage/*}).
\item \textbf{org.eclipse.photran-samples}
A Photran project containing an assortment of Fortran code.
\end{itemize}