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