update author list in license for (JAL-826)
[jalview.git] / utils / jalopy / docs / separation.html
1
2 <!--
3  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)
4  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
5  * 
6  * This file is part of Jalview.
7  * 
8  * Jalview is free software: you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License 
10  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11  * 
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
18 -->
19     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
20   <html><head>
21       <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
22    <title>4.3.5.&nbsp;Blank Lines</title><link rel="stylesheet" href="site.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="manual.html" title="Jalopy User Manual"><link rel="up" href="printer.html" title="4.3.&nbsp;Printer"><link rel="previous" href="wrapping.html" title="4.3.4.&nbsp;Wrapping"><link rel="next" href="comments.html" title="4.3.6.&nbsp;Comments"><link rel="preface" href="dedication.html" title="Dedication"><link rel="preface" href="acknowledge.html" title="Acknowledgements"><link rel="preface" href="introduction.html" title="Introduction"><link rel="part" href="part-core.html" title="Part&nbsp;I.&nbsp;Jalopy core"><link rel="chapter" href="installation.html" title="Chapter&nbsp;1.&nbsp;Installation"><link rel="chapter" href="build.html" title="Chapter&nbsp;2.&nbsp;Building"><link rel="chapter" href="usage.html" title="Chapter&nbsp;3.&nbsp;Usage"><link rel="chapter" href="settings.html" title="Chapter&nbsp;4.&nbsp;Settings"><link rel="part" href="part-plugins.html" title="Part&nbsp;II.&nbsp;Plug-ins"><link rel="chapter" href="plugin-ant.html" title="Chapter&nbsp;5.&nbsp;Ant Plug-in task"><link rel="chapter" href="plugin-console.html" title="Chapter&nbsp;6.&nbsp;Console Application"><link rel="chapter" href="plugin-eclipse.html" title="Chapter&nbsp;7.&nbsp;Eclipse Plug-in"><link rel="chapter" href="plugin-jbuilder.html" title="Chapter&nbsp;8.&nbsp;JBuilder OpenTool"><link rel="chapter" href="plugin-jdev.html" title="Chapter&nbsp;9.&nbsp;JDeveloper Extension"><link rel="chapter" href="plugin-jedit.html" title="Chapter&nbsp;10.&nbsp;jEdit Plug-in"><link rel="chapter" href="plugin-netbeans.html" title="Chapter&nbsp;11.&nbsp;NetBeans/Sun ONE Studio module"><link rel="appendix" href="dependencies.html" title="Appendix&nbsp;A.&nbsp;Library Dependencies"><link rel="appendix" href="license-bsd.html" title="Appendix&nbsp;B.&nbsp;The Jalopy BSD License"><link rel="appendix" href="license-antlr.html" title="Appendix&nbsp;C.&nbsp;ANTLR SOFTWARE RIGHTS"><link rel="appendix" href="license-apache.html" title="Appendix&nbsp;D.&nbsp;The Apache Software License, Version 1.1"><link rel="appendix" href="license-gnu.html" title="Appendix&nbsp;E.&nbsp;GNU GENERAL PUBLIC LICENSE Version 2, June 1991"><link rel="appendix" href="license-gnu-doc.html" title="Appendix&nbsp;F.&nbsp;GNU Free Documentation License Version 1.1, March 2000"><link rel="appendix" href="license-common-public.html" title="Appendix&nbsp;G.&nbsp;Common Public License Version 1.0"><link rel="appendix" href="license-sun-public.html" title="Appendix&nbsp;H.&nbsp;SUN PUBLIC LICENSE Version 1.0"><link rel="index" href="ix01.html" title="Index"><link rel="subsection" href="separation.html#separation-blank-lines" title="4.3.5.1.&nbsp;General"><link rel="subsection" href="separation.html#separation-misc" title="4.3.5.2.&nbsp;Misc"><link rel="subsection" href="separation.html#separation-comment" title="4.3.5.3.&nbsp;Comments">
23       <meta name="description" content="Jalopy Java Source Code Formatter Beautifier Pretty Printer"> 
24       <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://jalopy.sf.net" r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://jalopy.sf.net" r (n 0 s 0 v 0 l 0))'> 
25     </head><body id="toppage" bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table width="700" border="0" cellpadding="0" cellspacing="0" align="left"><tbody><tr><td><table cellpadding="0" cellspacing="0" width="100%" style="border:1px solid #336699"><tbody><tr><td height="16"></td></tr><tr><td bgcolor="#3399cc" height="1"></td></tr><tr style="border:none"><td style="border:none"><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td class="logo">JALOPY</td><td class="sublogo" valign="bottom">Java Source Code Formatter Beautifier Pretty Printer</td></tr></tbody></table></td></tr><tr><td bgcolor="#3399cc" height="1"></td></tr><tr><td height="10"></td></tr><tr><td bgcolor="#ff8000" height="4"></td></tr><tr><td height="20" bgcolor="#336699" style="color:#ffffff;padding-left:10px"><a href="./index.html" class="navlink">Overview</a> &#149;
26                     <a href="./download.html" class="navlink">Download</a> &#149;
27                     <a href="./docs.html" class="navlink">Documentation</a> &#149;
28                     <a href="./plugins.html" class="navlink">Plug-ins</a> &#149;
29                     <a href="./links.html" class="navlink">Links</a> &#149;
30                     <a href="./contact.html" class="navlink">Contact</a></td></tr><tr><td height="1" bgcolor="#ffffff"></td></tr></tbody></table></td></tr><tr valign="top"><td valign="top" bgcolor="#ffffff"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td height="20" bgcolor="#faebd7" style="padding-left:15px"><a href="./features.html" class="navlink2">Features</a> |
31                     <a href="./history.html" class="navlink2">History</a> |
32                     <a href="./manual.html" class="navlink2">Manual</a> |
33                     <a href="./faq.html" class="navlink2">FAQ</a> |
34                     <a href="./api/index.html" class="navlink2">Javadoc</a></td></tr><tr><td height="20" bgcolor="#ffffff"></td></tr><tr><td bgcolor="#eeeecc" height="17" align="right" style="font-size:10px;padding-right:3px">
35                     This page generated: <strong>June 8 2004</strong></td></tr></tbody></table><table border="0" width="100%" cellspacing="0" cellpadding="5"><tr><td><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.3.5.&nbsp;Blank Lines</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="wrapping.html">Prev</a>&nbsp;</td><th width="60%" align="center">4.3.&nbsp;Printer</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="comments.html">Next</a></td></tr></table><hr></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="separation"></a>4.3.5.&nbsp;Blank Lines</h3></div></div><div></div></div><p>
36 Controls the Jalopy Blank Lines settings: the insertion of blank lines to
37 separate statements or declarations with different functions or meanings.
38 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="separation-blank-lines"></a>4.3.5.1.&nbsp;General</h4></div></div><div></div></div><p>
39 Lets you specify the general blank lines sizes for different Java source file elements.
40 </p><div class="itemizedlist"><ul type="disc"><li><p><a name="blank-lines-package"></a>
41 Package statement
42 </p><a class="indexterm" name="d0e3379"></a><a class="indexterm" name="d0e3382"></a><p>
43 Lets you control how many blank lines should be printed after the package statement.
44 </p><div class="example"><a name="ex-blank-lines-package"></a><p class="title"><b>Example&nbsp;4.115.&nbsp;3 Blank lines after package statement</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">package de.hunsicker.jalopy.printer;
45 &lt;--
46 &lt;--
47 &lt;--
48 import antlr.collections.AST;
49
50 import de.hunsicker.jalopy.parser.JavaAST;
51 import de.hunsicker.jalopy.parser.JavaTokenTypes;
52
53 ...
54 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-import"></a>
55 Last import statement
56 </p><a class="indexterm" name="d0e3398"></a><a class="indexterm" name="d0e3401"></a><p>
57 Lets you control how many blank lines should be printed after the last import statement.
58 </p><div class="example"><a name="ex-blank-lines-import"></a><p class="title"><b>Example&nbsp;4.116.&nbsp;4 Blank lines after last import statement</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">package de.hunsicker.jalopy.printer;
59
60 import antlr.collections.AST;
61
62 import de.hunsicker.jalopy.parser.JavaAST;
63 import de.hunsicker.jalopy.parser.JavaTokenTypes;
64 &lt;--
65 &lt;--
66 &lt;--
67 &lt;--
68 public class Printer
69 {
70     ...
71 }
72 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-classes"></a>
73 Classes
74 </p><a class="indexterm" name="d0e3417"></a><a class="indexterm" name="d0e3420"></a><p>
75 Lets you control how many blank lines should be printed between two
76 class declarations.
77 </p><div class="example"><a name="blank-lines-class"></a><p class="title"><b>Example&nbsp;4.117.&nbsp;2 Blank lines between two class declarations</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">class One
78 {
79     ...
80 }
81 &lt;--
82 &lt;--
83 class Two
84 {
85     ...
86 }
87 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-interfaces"></a>
88 Interfaces
89 </p><a class="indexterm" name="d0e3436"></a><a class="indexterm" name="d0e3439"></a><p>
90 Lets you control how many blank lines should be printed between two
91 interface declarations.
92 </p><div class="example"><a name="blank-lines-ifc"></a><p class="title"><b>Example&nbsp;4.118.&nbsp;3 Blank lines between two interface declarations</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">interface One
93 {
94     ...
95 }
96 &lt;--
97 &lt;--
98 &lt;--
99 interface Two
100 {
101     ...
102 }
103 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-methods"></a>
104 Methods
105 </p><a class="indexterm" name="d0e3455"></a><a class="indexterm" name="d0e3458"></a><p>
106 Lets you control how many blank lines should be printed between two
107 method/constructor declarations.
108 </p><div class="example"><a name="blank-lines-method"></a><p class="title"><b>Example&nbsp;4.119.&nbsp;3 Blank lines between two method declarations</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">public static Printer getInstance()
109 {
110     return INSTANCE;
111 }
112 &lt;--
113 &lt;--
114 &lt;--
115 public void print(AST node, ASTWriter out)
116            throws IOException
117 {
118     ...
119 }
120 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-blocks"></a>
121 Blocks
122 </p><a class="indexterm" name="d0e3474"></a><a class="indexterm" name="d0e3477"></a><p>
123 Lets you control how many blank lines should be printed before and after
124 statement blocks (if-else , for, while, do-while, switch, try-catch-finally, synchronized).
125 Note that the 'Blank lines after' setting also applies for anonymous inner classes.
126 </p><div class="example"><a name="ex-blank-lines-blocks"></a><p class="title"><b>Example&nbsp;4.120.&nbsp;2 Blank lines between before and after blocks</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">AST type = null;
127 &lt;--
128 &lt;--
129 switch (next.getType())
130 {
131     case JavaTokenTypes.LPAREN :
132         type = PrinterUtils.advanceToFirstNonParen(next);
133         break;
134     default :
135         type = next;
136         break;
137 }
138 &lt;--
139 &lt;--
140 AST ident = type.getFirstChild();
141 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-declarations"></a>
142 Declarations
143 </p><a class="indexterm" name="d0e3493"></a><a class="indexterm" name="d0e3496"></a><p>
144 Lets you control how many blank lines should be printed before and after
145 variable declarations.
146 </p></li><li><p><a name="blank-lines-case"></a>
147 Case blocks
148 </p><a class="indexterm" name="d0e3506"></a><a class="indexterm" name="d0e3509"></a><p>
149 Lets you control how many blank lines should be printed before each case
150 block of a switch expression.
151 </p><div class="example"><a name="ex-blank-lines-case"></a><p class="title"><b>Example&nbsp;4.121.&nbsp;3 Blank lines before case blocks</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">switch (next.getType())
152 {
153 &lt;--
154 &lt;--
155 &lt;--
156     case JavaTokenTypes.LPAREN :
157         type = PrinterUtils.advanceToFirstNonParen(next);
158         break;
159 &lt;--
160 &lt;--
161 &lt;--
162     default :
163         type = next;
164         break;
165 }
166 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-control"></a>
167 Control statements
168 </p><a class="indexterm" name="d0e3525"></a><a class="indexterm" name="d0e3528"></a><p>
169 Lets you control how many blank lines should be printed before the statements
170 <span><b class="command">return</b></span>, <span><b class="command">break</b></span> and <span><b class="command">continue</b></span>.
171 </p><div class="example"><a name="ex-blank-lines-control"></a><p class="title"><b>Example&nbsp;4.122.&nbsp;2 Blank lines before case control statements</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">switch (next.getType())
172 {
173     case JavaTokenTypes.LPAREN :
174         type = PrinterUtils.advanceToFirstNonParen(next);
175 &lt;--
176 &lt;--
177         break;
178
179     default :
180         type = next;
181 &lt;--
182 &lt;--
183         break;
184 }
185 </pre></td></tr></table></div><p></p></li><li><p><a name="blank-lines-sl-comments"></a>
186 Single-line comments
187 </p><a class="indexterm" name="d0e3553"></a><a class="indexterm" name="d0e3556"></a><p>
188 Lets you control how many blank lines should be printed before single-line
189 comments.
190 </p></li><li><p><a name="blank-lines-ml-comments"></a>
191 Multi-line comments
192 </p><a class="indexterm" name="d0e3566"></a><a class="indexterm" name="d0e3569"></a><p>
193 Lets you control how many blank lines should be printed before multi-line
194 comments.
195 </p></li><li><p><a name="blank-lines-javadoc"></a>
196 Javadoc comments
197 </p><a class="indexterm" name="d0e3579"></a><a class="indexterm" name="d0e3582"></a><p>
198 Lets you control how many blank lines should be printed before Javadoc
199 comments.
200 </p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="separation-misc"></a>4.3.5.2.&nbsp;Misc</h4></div></div><div></div></div><p>Lets you control miscellaneous separation settings.</p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3594"></a>4.3.5.2.1.&nbsp;Misc</h5></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a name="separation-misc-left-curly"></a>
201 Blank lines after left curly brace
202 </p><a class="indexterm" name="d0e3601"></a><a class="indexterm" name="d0e3604"></a><p>
203 Forces the given number of blank lines after left curly braces no matter
204 what your other blank lines settings say.
205 </p><div class="example"><a name="ex-separation-before-blocks"></a><p class="title"><b>Example&nbsp;4.123.&nbsp;Blank lines before blocks=1</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">public void foo()
206 {
207 &lt;--
208     if (condition())
209     {
210 &lt;--
211         if (anotherCondition())
212         {
213             doSomething();
214         }
215     }
216 }
217 </pre></td></tr></table></div><p></p><div class="example"><a name="ex-separation-misc-left-curly-yes"></a><p class="title"><b>Example&nbsp;4.124.&nbsp;Blank lines before blocks=1, Blank lines after left curly braces=0</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">public void foo()
218 {
219     if (condition())
220     {
221         if (anotherCondition())
222         {
223             doSomething();
224         }
225     }
226 }
227 </pre></td></tr></table></div><p></p></li><li><p><a name="separation-misc-right-curly"></a>
228 Blank lines before right curly brace
229 </p><a class="indexterm" name="d0e3626"></a><a class="indexterm" name="d0e3629"></a><p>
230 Forces the given number of blank lines before closing curly braces no matter
231 what your other blank lines settings say.
232 </p><div class="example"><a name="ex-separation-misc-left-curly-no"></a><p class="title"><b>Example&nbsp;4.125.&nbsp;Blank lines before blocks=1</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">public void foo()
233 {
234     if (condititon())
235     {
236         if (anotherCondition())
237         {
238             doSomething();
239 &lt;--
240         }
241 &lt;--
242     }
243 &lt;--
244 }
245 </pre></td></tr></table></div><p></p></li><li><p><a name="separation-misc-keep"></a>
246 Keep Blank lines up to
247 </p><p>
248 If enabled, retains up to the given number of blank lines found in the
249 original source. This only works for method or constructor bodies. Note that Jalopy
250 still takes your other blank lines settings into account.
251 </p><div class="example"><a name="ex-separation-misc-keep-no"></a><p class="title"><b>Example&nbsp;4.126.&nbsp;Source code with blank lines to separate code sections</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">aMVString = new MultiValueString("abc");
252 &lt;--
253 System.out.println("MV = "+aMVString);
254 &lt;--
255 System.out.println("MV0 = "+aMVString.extract(0));
256 System.out.println("MV1 = "+aMVString.extract(1));
257 System.out.println("MV2 = "+aMVString.extract(2));
258 System.out.println("");
259 </pre></td></tr></table></div><p>
260 If this feature is left disabled, Jalopy will print the individual lines according
261 to the current blank lines settings but won't try to retain any blank lines.
262 </p></li></ul></div></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="chunks"></a>4.3.5.2.2.&nbsp;Chunks</h5></div></div><div></div></div><a class="indexterm" name="d0e3657"></a><p>
263 Lets you define what makes a chunk: a section of associated statements.
264 </p><div class="itemizedlist"><ul type="disc"><li><p><a name="chunks-comments"></a>
265 By comments
266 </p><a class="indexterm" name="d0e3666"></a><a class="indexterm" name="d0e3669"></a><p>
267 If enabled, a statement with a comment before is recognized as the start of a new
268 chunk.
269 </p><div class="example"><a name="ex-chunks-comments"></a><p class="title"><b>Example&nbsp;4.127.&nbsp;Aligning variable declarations</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
270 String        text  = "text";
271 int           a     = -1;
272
273 // create a new entry
274 History.Entry entry = new History.Entry(text);
275 </pre></td></tr></table></div><p></p><div class="example"><a name="ex-chunks-comments-enabled"></a><p class="title"><b>Example&nbsp;4.128.&nbsp;Aligning variable declarations with chunking by comments</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
276 String text  = "text";
277 int    a     = -1;
278
279 // create a new entry
280 History.Entry entry = new History.Entry(text);
281 </pre></td></tr></table></div><p></p></li><li><p><a name="chunks-blank-lines"></a>
282 By Blank lines
283 </p><a class="indexterm" name="d0e3691"></a><a class="indexterm" name="d0e3694"></a><p>
284 If enabled, a statement which has one or more blank lines before is recognized
285 as the start of a new chunk.
286 </p></li></ul></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="separation-comment"></a>4.3.5.3.&nbsp;Comments</h4></div></div><div></div></div><p>
287 Lets you control the behaviour of the separator comments. If the
288 <a href="sorting.html" title="4.3.12.&nbsp;Sorting">sorting of class elements</a> is enabled, Separator comments
289 can be inserted before every element section, to make it easier to identify the
290 different parts of a source file.
291 </p><a class="indexterm" name="d0e3709"></a><div class="example"><a name="ex-separation-comment"></a><p class="title"><b>Example&nbsp;4.129.&nbsp;Separator comment</b></p><table border="0" bgcolor="#E0E0E0" class="shade"><tr><td><pre class="programlisting">
292 //~ Methods ------------------------------------------------------------------
293 </pre></td></tr></table></div><p></p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3718"></a>4.3.5.3.1.&nbsp;General</h5></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
294 Add separator comments
295 </p><p>
296 Enables the insertions of separator comments.
297 </p></li><li><p>
298 Add separator comments for inner classes
299 </p><p>
300 The insertion of separator comments for inner classes/interfaces may lead to
301 confusion, therefore you can control it here separately.
302 </p></li></ul></div></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3732"></a>4.3.5.3.2.&nbsp;Descriptions</h5></div></div><div></div></div><p>Lets you define the description text for each of the different class elements.</p></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3737"></a>4.3.5.3.3.&nbsp;Fill character</h5></div></div><div></div></div><p>Lets you define the fill character for the comments.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="wrapping.html">Prev</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="printer.html">Up</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="comments.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.3.4.&nbsp;Wrapping&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="manual.html">Home</a></td><td width="40%" align="right" valign="top">&nbsp;4.3.6.&nbsp;Comments</td></tr></table></div></td></tr></table></td></tr><tr><td bgcolor="#eeeecc" height="17" style="font-size:9px;padding-left:5px"><a href="#toppage">to top</a></td></tr><tr><td height="30"><br></td></tr><tr><td height="3"></td></tr><tr><td bgcolor="#336699" height="1"></td></tr><tr><td height="1"></td></tr><tr><td bgcolor="#336699" height="16"></td></tr><tr><td bgcolor="#ff9966" height="4"></td></tr><tr><td class="footer" align="center" height="15" valign="middle">
303             Copyright &copy; 2001-2004, <a class="footer" href="./contact.html">Marco Hunsicker</a>. All rights reserved. Hosted by <a href="http://sourceforge.net">SourceForge.net</a></td></tr></tbody></table><img src="http://sourceforge.net/sflogo.php?group_id=45216&amp;type=1" width="1" height="1" border="0" hspace="0" vspace="0" alt=""></body></html>