1% BEGIN LICENSE BLOCK
2% Version: CMPL 1.1
3%
4% The contents of this file are subject to the Cisco-style Mozilla Public
5% License Version 1.1 (the "License"); you may not use this file except
6% in compliance with the License.  You may obtain a copy of the License
7% at www.eclipse-clp.org/license.
8% 
9% Software distributed under the License is distributed on an "AS IS"
10% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.  See
11% the License for the specific language governing rights and limitations
12% under the License. 
13% 
14% The Original Code is  The ECLiPSe Constraint Logic Programming System. 
15% The Initial Developer of the Original Code is  Cisco Systems, Inc. 
16% Portions created by the Initial Developer are
17% Copyright (C) 2006 Cisco Systems, Inc.  All Rights Reserved.
18% 
19% Contributor(s): Joachim Schimpf, Kish Shen, Warwick Harvey, IC-Parc
20% 
21% END LICENSE BLOCK
22%\documentstyle[11pt,html,a4wide,epsf,ae,aecompl]{book}
23
24\documentclass[11pt,a4paper]{book}
25\usepackage{hevea}
26\usepackage{alltt}
27\usepackage{graphics}
28%\usepackage{html}
29\usepackage{epsf}
30\usepackage{ae}
31\usepackage{aecompl}
32\usepackage{tocbibind}
33\usepackage{makeidx}
34\usepackage{hyperref}
35
36\topmargin -1cm
37\oddsidemargin 0cm
38\evensidemargin 0cm
39\textwidth 16cm
40\textheight 22.5cm
41
42
43\usepackage{../../texinputs/eclipse}
44\input{../../texinputs/sepiachiphtml}
45
46
47\makeindex
48
49\title{{\Huge \eclipse\ Internals Manual}\\
50	\vspace{1cm}
51	Release \eclipseversion
52    }
53\author{
54Joachim Schimpf
55\and Kish Shen
56\and Warwick Harvey
57}
58
59\begin{document}
60
61\maketitle
62
63% Needed to adjust left/right pages properly
64\setcounter{page}{2}
65% Suppress printing of the page number on this page
66\pagestyle{empty}
67
68\vfill
69
70\copyright\ 2003 -- 2006 Cisco Systems, Inc.
71
72\bigskip\bigskip\bigskip\bigskip\bigskip\bigskip
73
74%--------------------------------------------------------------
75\cleardoublepage
76\pagestyle{plain}
77\pagenumbering{roman}
78
79\begin{latexonly}
80\tableofcontents
81\listoffigures
82\end{latexonly}
83
84%--------------------------------------------------------------
85\cleardoublepage
86\pagenumbering{arabic}
87
88%----------------------------------------------------------------------
89\chapter{Introduction}
90%----------------------------------------------------------------------
91This is an evolving document, supposed to provide a high level
92overview of the {\eclipse} implementation.
93Selected implementation aspects are discussed and described in
94greater detail.
95
96Information herein has been compiled from different
97sources and is not always in a uniform style. Sadly, many of
98the original implementation reports that existed for various
99components, did not survive the demise of ECRC, {\eclipse}'s
100original birthplace.
101
102
103%----------------------------------------------------------------------
104\chapter{File and Directory Map}
105%----------------------------------------------------------------------
106Overview of the source tree, and content of directories:
107\begin{description}
108\item[toplevel directory] Configuration and install scripts
109\item[legal/] Licence texts.
110
111\item[Kernel/] The kernel of the {\eclipse}, for historical reasons sometime
112	called {\em sepia}.
113	This consists of C code and Prolog/{\eclipse} code for runtime
114	system, built-in predicates, and core libraries.
115    \begin{description}
116    \item[src/] C sources and header files for the runtime
117    	core of {\eclipse}: virtual machine emulator, most built-in predicates,
118	memory management, runtime tables and data structures, I/O.
119    \item[lib/] Prolog and {\eclipse} sources
120	\begin{description}
121	\item[kernel.pl,events.pl,...] Built-in predicate implementation
122	\item[lists.pl,calendar.ecl,...] Basic libraries
123	\item[version.pl] current patch number
124	\end{description}
125    \end{description}
126
127\item[Shm/] A memory management library in C, used for heap management in
128	{\eclipse}.
129
130\item[ecrc_solvers/] Solver libraries developed by the European Computer
131	Industry Research Centre ECRC (chr, propia, conjunto, r).
132    \begin{itemize}
133    \item Constraint Handling rules lib(chr)
134    \item Generalised Propagation lib(propia)
135    \item Set solver lib(conjunto)
136    \end{itemize}
137
138\item[icparc_solvers/] Solver and support libraries developed at IC-Parc,
139	Imperial College London.
140    \begin{itemize}
141    \item ic interval solver group
142    \item eplex linear/mip solver, column generation
143    \item Constraint Handling rules lib(ech)
144    \item various global constraints
145    \item fd/ic set solver
146    \item regular expressions
147    \item symmetry libraries
148    \item graph algorithms
149    \item probing
150    \item symbolic solvers
151    \item repair and tentative constraints
152    \end{itemize}
153
154\item[pt_libraries/] Utility libraries developed by Parc Technologies Ltd.
155    \begin{itemize}
156    \item code instrumentation
157    \item cross referencer
158    \item code checker
159    \item pretty printer
160    \item coverage analyser
161    \end{itemize}
162
163\item[Contrib/] A collection of 3rd party libraries, e.g.
164    \begin{itemize}
165    \item A subset of the `Edinburgh' public domain libraries
166    \item Cardinal set solver by Francisco Azevedo
167    \item XML library by John Fletcher
168    \end{itemize}
169
170\item[lib_tcl/] Tcl/Tk interface and the TkEclipse GUI.
171
172\item[JavaInterface/] Code for embedding {\eclipse} in Java, consisting of
173    \begin{description}
174    \item[ec_java.c] C JNI code
175    \item[src/com/parctechnologies/eclipse/] Java sources
176    \end{description}
177\item[Oci/] Interface for databases (Oracle, MySQL)
178\item[Visualisation/] The visualisation client, in Java.
179\item[Mercury/] Libraries ported from the Mercury system.
180\item[documents/] Documentation sources.
181    \begin{description}
182    \item[applications/] Applications Tutorial
183    \item[bips/] Reference Manual Built-Ins
184    \item[embedding/] Embedding Manual
185    \item[internal/] Internals Manual
186    \item[libman/] Constraint Library Manual
187    \item[tutorial/] {\eclipse} Tutorial
188    \item[userman/] User Manual
189    \item[visualisation/] Visualisation Tools Manual
190    \end{description}
191\end{description}
192
193Overview of a ready built {\eclipse}:
194\begin{description}
195\item[bin/] 
196\item[doc/] 
197\item[include/] Include files for interfacing C/C++ code with {\eclipse}
198\item[legal/] Licence texts
199\item[lib/] Shared libraries, executables, precompiled {\eclipse} libraries,
200	{\eclipse} libraries in source form
201\item[lib_public/] Third party contributed libraries
202\item[lib_tcl/] Tcl/Tk interface and TkEclipse GUI.
203\item[man/] UNIX-style man pages
204\end{description}
205 
206
207%----------------------------------------------------------------------
208\chapter{Abstract Machine}
209%----------------------------------------------------------------------
210\input{kernel}
211
212%----------------------------------------------------------------------
213\chapter{Runtime System Components}
214%----------------------------------------------------------------------
215\input{runtime}
216\input{gc}
217\input{debugger}
218%\input{globalstate}
219\input{io}
220
221%----------------------------------------------------------------------
222\chapter{Built-Ins}
223%----------------------------------------------------------------------
224\input{builtins}
225
226\appendix
227\input{umscmacros}
228
229
230\newpage
231\printindex
232\newpage
233\bibliography{sepiachip}
234\bibliographystyle{plain}
235\end{document}
236