[29] | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
---|
| 2 | |
---|
| 3 | <!-- Copyright David Abrahams 2006. Distributed under the Boost --> |
---|
| 4 | <!-- Software License, Version 1.0. (See accompanying --> |
---|
| 5 | <!-- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) --> |
---|
| 6 | <html> |
---|
| 7 | <head> |
---|
| 8 | <meta name="generator" content= |
---|
| 9 | "HTML Tidy for Cygwin (vers 1st September 2004), see www.w3.org"> |
---|
| 10 | <meta http-equiv="Content-Type" content="text/html"> |
---|
| 11 | <link rel="stylesheet" type="text/css" href="boost.css"> |
---|
| 12 | |
---|
| 13 | <title>Boost.Python - Projects using Boost.Python</title> |
---|
| 14 | </head> |
---|
| 15 | |
---|
| 16 | <body link="#0000FF" vlink="#800080"> |
---|
| 17 | <table border="0" cellpadding="7" cellspacing="0" width="100%" summary= |
---|
| 18 | "header"> |
---|
| 19 | <tr> |
---|
| 20 | <td valign="top" width="300"> |
---|
| 21 | <h3><a href="../../../index.htm"><img height="86" width="277" alt= |
---|
| 22 | "C++ Boost" src="../../../boost.png" border="0"></a></h3> |
---|
| 23 | </td> |
---|
| 24 | |
---|
| 25 | <td valign="top"> |
---|
| 26 | <h1 align="center"><a href="index.html">Boost.Python</a></h1> |
---|
| 27 | |
---|
| 28 | <h2 align="center">Projects using Boost.Python</h2> |
---|
| 29 | </td> |
---|
| 30 | </tr> |
---|
| 31 | </table> |
---|
| 32 | <hr> |
---|
| 33 | |
---|
| 34 | <h2>Introduction</h2> |
---|
| 35 | |
---|
| 36 | <p>This is a partial list of projects using Boost.Python. If you are using |
---|
| 37 | Boost.Python as your Python/C++ binding solution, we'd be proud to list |
---|
| 38 | your project on this page. Just <a href= |
---|
| 39 | "mailto:c++-sig@python.org">post</a> a short description of your project |
---|
| 40 | and how Boost.Python helps you get the job done, and we'll add it to this |
---|
| 41 | page .</p> |
---|
| 42 | <hr> |
---|
| 43 | |
---|
| 44 | <h3>Data Analysis</h3> |
---|
| 45 | |
---|
| 46 | <dl class="page-index"> |
---|
| 47 | <dt><b><a href="http://www.neuralynx.com">NeuraLab</a></b></dt> |
---|
| 48 | |
---|
| 49 | <dd>Neuralab is a data analysis environment specifically tailored for |
---|
| 50 | neural data from <a href="http://www.neuralynx.com">Neuralynx</a> |
---|
| 51 | acquisition systems. Neuralab combines presentation quality graphics, a |
---|
| 52 | numerical analysis library, and the <a href= |
---|
| 53 | "http://www.python.org">Python</a> scripting engine in a single |
---|
| 54 | application. With Neuralab, Neuralynx users can perform common analysis |
---|
| 55 | tasks with just a few mouse clicks. More advanced users can create custom |
---|
| 56 | Python scripts, which can optionally be assigned to menus and mouse |
---|
| 57 | clicks.</dd> |
---|
| 58 | </dl> |
---|
| 59 | |
---|
| 60 | <dl class="page-index"> |
---|
| 61 | <dt><b>TSLib</b> - <a href="http://www.fortressinv.com">Fortress |
---|
| 62 | Investment Group LLC</a></dt> |
---|
| 63 | |
---|
| 64 | <dd> |
---|
| 65 | Fortress Investment Group has contracted <a href= |
---|
| 66 | "http://www.boost-consulting.com">Boost Consulting</a> to develop core |
---|
| 67 | internal financial analysis tools in C++ and to prepare Python bindings |
---|
| 68 | for them using Boost.Python. |
---|
| 69 | |
---|
| 70 | <p>Tom Barket of Fortress writes:</p> |
---|
| 71 | |
---|
| 72 | <blockquote> |
---|
| 73 | We have a large C++ analytical library specialized for research in |
---|
| 74 | finance and economics, built for speed and mission critical |
---|
| 75 | stability. Yet Python offers us the flexibility to test out new ideas |
---|
| 76 | quickly and increase the productivity of our time versus working in |
---|
| 77 | C++. There are several key features which make Python stand out. Its |
---|
| 78 | elegance, stability, and breadth of resources on the web are all |
---|
| 79 | valuable, but the most important is its extensibility, due to its |
---|
| 80 | open source transparency. Boost.Python makes Python extensibility |
---|
| 81 | extremely simple and straightforward, yet preserves a great deal of |
---|
| 82 | power and control. |
---|
| 83 | </blockquote> |
---|
| 84 | </dd> |
---|
| 85 | </dl> |
---|
| 86 | |
---|
| 87 | <h3>Educational</h3> |
---|
| 88 | |
---|
| 89 | <dl class="page-index"> |
---|
| 90 | <dt><a href="http://edu.kde.org/kig"><b>Kig</b></a></dt> |
---|
| 91 | |
---|
| 92 | <dd> |
---|
| 93 | <p>KDE Interactive Geometry is a high-school level educational tool, |
---|
| 94 | built for the KDE desktop. It is a nice tool to let students work with |
---|
| 95 | geometrical constructions. It is meant to be the most intuitive, yet |
---|
| 96 | featureful application of its kind.</p> |
---|
| 97 | |
---|
| 98 | <p>Versions after 0.6.x (will) support objects built by the user |
---|
| 99 | himself in the Python language. The exporting of the relevant internal |
---|
| 100 | API's were done using Boost.Python, which made the process very |
---|
| 101 | easy.</p> |
---|
| 102 | </dd> |
---|
| 103 | </dl> |
---|
| 104 | |
---|
| 105 | <h3>Enterprise Software</h3> |
---|
| 106 | |
---|
| 107 | <dl class="page-index"> |
---|
| 108 | <dt><b><a href="http://openwbem.sourceforge.net">OpenWBEM</a></b></dt> |
---|
| 109 | |
---|
| 110 | <dd> |
---|
| 111 | The OpenWBEM project is an effort to develop an open-source |
---|
| 112 | implementation of Web Based Enterprise Management suitable for |
---|
| 113 | commercial and non-commercial application |
---|
| 114 | |
---|
| 115 | <p><a href="mailto:dnuffer@sco.com">Dan Nuffer</a> writes:</p> |
---|
| 116 | |
---|
| 117 | <blockquote> |
---|
| 118 | I'm using Boost.Python to wrap the client API of OpenWBEM.This will |
---|
| 119 | make it easier to do rapid prototyping, testing, and scripting when |
---|
| 120 | developing management solutions that use WBEM. |
---|
| 121 | </blockquote> |
---|
| 122 | </dd> |
---|
| 123 | |
---|
| 124 | <dt><b><a href="http://www.transversal.com">Metafaq</a></b></dt> |
---|
| 125 | |
---|
| 126 | <dd> |
---|
| 127 | Metafaq, from <a href="http://www.transversal.com">Transversal, |
---|
| 128 | Inc.</a>, is an enterprise level online knowledge base management |
---|
| 129 | system. |
---|
| 130 | |
---|
| 131 | <p><a href="mailto:ben.young-at-transversal.com">Ben Young</a> |
---|
| 132 | writes:</p> |
---|
| 133 | |
---|
| 134 | <blockquote> |
---|
| 135 | Boost.Python is used in an automated process to generate python |
---|
| 136 | bindings to our api which is exposed though multiple backends and |
---|
| 137 | frontends. This allows us to write quick tests and bespoke scripts to |
---|
| 138 | perform one off tasks without having to go through the full |
---|
| 139 | compilation cycle. |
---|
| 140 | </blockquote> |
---|
| 141 | </dd> |
---|
| 142 | </dl> |
---|
| 143 | |
---|
| 144 | <h3>Games</h3> |
---|
| 145 | |
---|
| 146 | <dl> |
---|
| 147 | <dt><b><a href="http://www.firaxis.com">Civilization IV</a></b></dt> |
---|
| 148 | </dl> |
---|
| 149 | |
---|
| 150 | <blockquote> |
---|
| 151 | “The fourth game in the PC strategy series that has sold over five |
---|
| 152 | million copies, Sid Meier's Civilization IV is a bold step forward for |
---|
| 153 | the franchise, with spectacular new 3D graphics and all-new single and |
---|
| 154 | multiplayer content. Civilization IV will also set a new standard for |
---|
| 155 | user-modification, allowing gamers to create their own add-ons using |
---|
| 156 | Python and XML. |
---|
| 157 | |
---|
| 158 | <p>Sid Meier's Civilization IV will be released for PC in late 2005. For |
---|
| 159 | more information please visit <a href= |
---|
| 160 | "http://www.firaxis.com">http://www.firaxis.com</a> or write <a href= |
---|
| 161 | "mailto:kgilmore@firaxis.com">kgilmore@firaxis.com</a>”</p> |
---|
| 162 | </blockquote> |
---|
| 163 | |
---|
| 164 | <p>Boost.Python is used as the interface layer between the C++ game code |
---|
| 165 | and Python. Python is used for many purposes in the game, including map |
---|
| 166 | generation, interface screens, game events, tools, tutorials, etc. Most |
---|
| 167 | high-level game operations have been exposed to Python in order to give |
---|
| 168 | modders the power they need to customize the game.</p> |
---|
| 169 | |
---|
| 170 | <blockquote> |
---|
| 171 | -Mustafa Thamer, Civ4 Lead Programmer |
---|
| 172 | </blockquote> |
---|
| 173 | |
---|
| 174 | <dl class="page-index"> |
---|
| 175 | <dt><b><a href="http://vegastrike.sourceforge.net">Vega |
---|
| 176 | Strike</a></b></dt> |
---|
| 177 | |
---|
| 178 | <dd> |
---|
| 179 | <a href="http://vegastrike.sourceforge.net">Vega Strike</a> is the 3D |
---|
| 180 | Space Simulator that allows you to trade and bounty hunt in a vast |
---|
| 181 | universe. Players face dangers, decisions, piracy, and aliens. |
---|
| 182 | |
---|
| 183 | <p><a href="http://vegastrike.sourceforge.net">Vega Strike</a> has |
---|
| 184 | decided to base its scripting on python, using boost as the layer |
---|
| 185 | between the class hierarchy in python and the class hierarchy in C++. |
---|
| 186 | The result is a very flexible scripting system that treats units as |
---|
| 187 | native python classes when designing missions or writing AI's.</p> |
---|
| 188 | |
---|
| 189 | <p>A large economic and planetary simulation is currently being run in |
---|
| 190 | the background in python and the results are returned back into C++ in |
---|
| 191 | the form of various factions' spaceships appearing near worlds that |
---|
| 192 | they are simulated to be near in python if the player is in the general |
---|
| 193 | neighborhood.</p> |
---|
| 194 | </dd> |
---|
| 195 | </dl> |
---|
| 196 | |
---|
| 197 | <h3>Graphics</h3> |
---|
| 198 | |
---|
| 199 | <dl class="page-index"> |
---|
| 200 | <dt><b><a href="http://sourceforge.net/projects/pyosg">OpenSceneGraph |
---|
| 201 | Bindings</a></b></dt> |
---|
| 202 | |
---|
| 203 | <dd><a href="mailto:gideon@computer.org">Gideon May</a> has created a set |
---|
| 204 | of bindings for <a href= |
---|
| 205 | "http://www.openscenegraph.org">OpenSceneGraph</a>, a cross-platform |
---|
| 206 | C++/OpenGL library for the real-time visualization.<br> |
---|
| 207 | </dd> |
---|
| 208 | |
---|
| 209 | <dt><b><a href= |
---|
| 210 | "http://www.slac.stanford.edu/grp/ek/hippodraw/index.html">HippoDraw</a></b></dt> |
---|
| 211 | |
---|
| 212 | <dd> |
---|
| 213 | HippoDraw is a data analysis environment consisting of a canvas upon |
---|
| 214 | which graphs such as histograms, scattter plots, etc, are prsented. It |
---|
| 215 | has a highly interactive GUI interface, but some things you need to do |
---|
| 216 | with scripts. HippoDraw can be run as Python extension module so that |
---|
| 217 | all the manipulation can be done from either Python or the GUI. |
---|
| 218 | |
---|
| 219 | <p>Before the web page came online, <a href= |
---|
| 220 | "mailto:Paul_Kunz@SLAC.Stanford.EDU">Paul F. Kunz</a> wrote:</p> |
---|
| 221 | |
---|
| 222 | <blockquote> |
---|
| 223 | Don't have a web page for the project, but the organization's is |
---|
| 224 | <a href= |
---|
| 225 | "http://www.slac.stanford.edu">http://www.slac.stanford.edu</a> (the |
---|
| 226 | first web server site in America, I installed it). |
---|
| 227 | </blockquote>Which was just too cool a piece of trivia to omit.<br> |
---|
| 228 | |
---|
| 229 | </dd> |
---|
| 230 | |
---|
| 231 | <dt><a href="http://www.iplt.org"><b>IPLT</b></a></dt> |
---|
| 232 | |
---|
| 233 | <dd> |
---|
| 234 | <a href="mailto:ansgar.philippsen-at-unibas.ch">Ansgar Philippsen</a> |
---|
| 235 | writes: |
---|
| 236 | |
---|
| 237 | <blockquote> |
---|
| 238 | IPLT is an image processing library and toolbox for the structural |
---|
| 239 | biology electron microscopy community. I would call it a |
---|
| 240 | budding/evolving project, since it is currently not in production |
---|
| 241 | stage, but rather under heavy development. Python is used as the main |
---|
| 242 | scripting/interaction level, but also for rapid prototyping, since |
---|
| 243 | the underlying C++ class library is pretty much fully exposed via |
---|
| 244 | boost.python (at least the high-level interface). The combined power |
---|
| 245 | of C++ and Python for this project turned out to be just awesome. |
---|
| 246 | </blockquote><br> |
---|
| 247 | |
---|
| 248 | </dd> |
---|
| 249 | |
---|
| 250 | <dt><a href= |
---|
| 251 | "http://www.procoders.net/pythonmagick"><b>PythonMagick</b></a></dt> |
---|
| 252 | |
---|
| 253 | <dd>PythonMagick binds the <a href= |
---|
| 254 | "http://www.graphicsmagick.org">GraphicsMagick</a> image manipulation |
---|
| 255 | library to Python.<br> |
---|
| 256 | </dd> |
---|
| 257 | |
---|
| 258 | <dt><a href="http://www.vpython.org"><b>VPython</b></a></dt> |
---|
| 259 | |
---|
| 260 | <dd> |
---|
| 261 | <a href="mailto:Bruce_Sherwood-at-ncsu.edu">Bruce Sherwood</a> writes: |
---|
| 262 | |
---|
| 263 | <blockquote> |
---|
| 264 | VPython is an extension for Python that makes it easy to create |
---|
| 265 | navigable 3D animations, which are generated as a side effect of |
---|
| 266 | computational code. VPython is used in education for various |
---|
| 267 | purposes, including teaching physics and programming, but it has also |
---|
| 268 | been used by research scientists to visualize systems or data in 3D. |
---|
| 269 | </blockquote><br> |
---|
| 270 | |
---|
| 271 | </dd> |
---|
| 272 | </dl> |
---|
| 273 | |
---|
| 274 | <h3>Scientific Computing</h3> |
---|
| 275 | |
---|
| 276 | <dl class="page index"> |
---|
| 277 | <dt><a href="http://camfr.sourceforge.net"><b>CAMFR</b></a></dt> |
---|
| 278 | |
---|
| 279 | <dd> |
---|
| 280 | CAMFR is a photonics and electromagnetics modelling tool. Python is |
---|
| 281 | used for computational steering. |
---|
| 282 | |
---|
| 283 | <p><a href="mailto:Peter.Bienstman@rug.ac.be">Peter Bienstman</a> |
---|
| 284 | writes:</p> |
---|
| 285 | |
---|
| 286 | <blockquote> |
---|
| 287 | Thanks for providing such a great tool! |
---|
| 288 | </blockquote> |
---|
| 289 | </dd> |
---|
| 290 | |
---|
| 291 | <dt><a href="http://cctbx.sourceforge.net"><b>cctbx - Computational |
---|
| 292 | Crystallography Toolbox</b></a></dt> |
---|
| 293 | |
---|
| 294 | <dd> |
---|
| 295 | Computational Crystallography is concerned with the derivation of |
---|
| 296 | atomic models of crystal structures, given experimental X-ray |
---|
| 297 | diffraction data. The cctbx is an open-source library of fundamental |
---|
| 298 | algorithms for crystallographic computations. The core algorithms are |
---|
| 299 | implemented in C++ and accessed through higher-level Python interfaces. |
---|
| 300 | |
---|
| 301 | <p>The cctbx grew together with Boost.Python and is designed from the |
---|
| 302 | ground up as a hybrid Python/C++ system. With one minor exception, |
---|
| 303 | run-time polymorphism is completely handled by Python. C++ compile-time |
---|
| 304 | polymorphism is used to implement performance critical algorithms. The |
---|
| 305 | Python and C++ layers are seamlessly integrated using Boost.Python.</p> |
---|
| 306 | |
---|
| 307 | <p>The SourceForge cctbx project is organized in modules to facilitate |
---|
| 308 | use in non-crystallographic applications. The scitbx module implements |
---|
| 309 | a general purpose array family for scientific applications and pure C++ |
---|
| 310 | ports of FFTPACK and the L-BFGS quasi-Newton minimizer.</p> |
---|
| 311 | </dd> |
---|
| 312 | |
---|
| 313 | <dt><a href="http://www.llnl.gov/CASC/emsolve"><b>EMSolve</b></a></dt> |
---|
| 314 | |
---|
| 315 | <dd>EMSolve is a provably stable, charge conserving, and energy |
---|
| 316 | conserving solver for Maxwell's equations.<br> |
---|
| 317 | </dd> |
---|
| 318 | |
---|
| 319 | <dt><b><a href="http://cern.ch/gaudi">Gaudi</a></b> and <b><a href= |
---|
| 320 | "http://cern.ch/Gaudi/RootPython/">RootPython</a></b></dt> |
---|
| 321 | |
---|
| 322 | <dd> |
---|
| 323 | Gaudi is a framework for particle physics collision data processing |
---|
| 324 | applications developed in the context of the LHCb and ATLAS experiments |
---|
| 325 | at CERN. |
---|
| 326 | |
---|
| 327 | <p><a href="mailto:Pere.Mato@cern.ch">Pere Mato Vila</a> writes:</p> |
---|
| 328 | |
---|
| 329 | <blockquote> |
---|
| 330 | We are using Boost.Python to provide scripting/interactive capability |
---|
| 331 | to our framework. We have a module called "GaudiPython" implemented |
---|
| 332 | using Boost.Python that allows the interaction with any framework |
---|
| 333 | service or algorithm from python. RootPython also uses Boost.Python |
---|
| 334 | to provide a generic "gateway" between the <a href= |
---|
| 335 | "http://root.cern.ch">ROOT</a> framework and python |
---|
| 336 | |
---|
| 337 | <p>Boost.Python is great. We managed very quickly to interface our |
---|
| 338 | framework to python, which is great language. We are trying to |
---|
| 339 | facilitate to our physicists (end-users) a rapid analysis application |
---|
| 340 | development environment based on python. For that, Boost.Python plays |
---|
| 341 | and essential role.</p> |
---|
| 342 | </blockquote> |
---|
| 343 | </dd> |
---|
| 344 | |
---|
| 345 | <dt><b><a href="http://www.esss.com.br">ESSS</a></b></dt> |
---|
| 346 | |
---|
| 347 | <dd> |
---|
| 348 | ESSS (Engineering Simulation and Scientific Software) is a company that |
---|
| 349 | provides engineering solutions and acts in the brazilian and |
---|
| 350 | south-american market providing products and services related to |
---|
| 351 | Computational Fluid Dynamics and Image Analysis. |
---|
| 352 | |
---|
| 353 | <p><a href="mailto:bruno@esss.com.br">Bruno da Silva de Oliveira</a> |
---|
| 354 | writes:</p> |
---|
| 355 | |
---|
| 356 | <blockquote> |
---|
| 357 | Recently we moved our work from working exclusively with C++ to an |
---|
| 358 | hybrid-language approach, using Python and C++, with Boost.Python |
---|
| 359 | providing the layer between the two. The results are great so far! |
---|
| 360 | </blockquote> |
---|
| 361 | |
---|
| 362 | <p>Two projects have been developed so far with this technology:</p> |
---|
| 363 | |
---|
| 364 | <p><b><a href= |
---|
| 365 | "http://www.esss.com.br/index.php?pg=dev_projetos">Simba</a></b> |
---|
| 366 | provides 3D visualization of geological formations gattered from the |
---|
| 367 | simulation of the evolution of oil systems, allowing the user to |
---|
| 368 | analyse various aspects of the simulation, like deformation, pressure |
---|
| 369 | and fluids, along the time of the simulation.</p> |
---|
| 370 | |
---|
| 371 | <p><b><a href= |
---|
| 372 | "http://www.esss.com.br/index.php?pg=dev_projetos">Aero</a></b> aims to |
---|
| 373 | construct a CFD with brazilian technology, which involves various |
---|
| 374 | companies and universities. ESSS is responsible for various of the |
---|
| 375 | application modules, including GUI and post-processing of results.</p> |
---|
| 376 | </dd> |
---|
| 377 | |
---|
| 378 | <dt><b><a href="http://www.rationaldiscovery.com">Rational Discovery |
---|
| 379 | LLC</a></b></dt> |
---|
| 380 | |
---|
| 381 | <dd> |
---|
| 382 | Rational Discovery provides computational modeling, combinatorial |
---|
| 383 | library design and custom software development services to the |
---|
| 384 | pharmaceutical, biotech and chemical industries. We do a substantial |
---|
| 385 | amount of internal research to develop new approaches for applying |
---|
| 386 | machine-learning techniques to solve chemical problems. Because we're a |
---|
| 387 | small organization and chemistry is a large and complex field, it is |
---|
| 388 | essential that we be able to quickly and easily prototype and test new |
---|
| 389 | algorithms. |
---|
| 390 | |
---|
| 391 | <p>For our internal software, we implement core data structures in C |
---|
| 392 | and expose them to Python using Boost.Python. Algorithm development is |
---|
| 393 | done in Python and then translated to C if required (often it's not). |
---|
| 394 | This hybrid development approach not only greatly increases our |
---|
| 395 | productivity, but it also allows "non-developers" (people without C |
---|
| 396 | experience) to take part in method development. Learning C is a |
---|
| 397 | daunting task, but "Python fits your brain." (Thanks to Bruce Eckel for |
---|
| 398 | the quote.)</p> |
---|
| 399 | </dd> |
---|
| 400 | </dl> |
---|
| 401 | |
---|
| 402 | <h3>Systems Libraries</h3> |
---|
| 403 | |
---|
| 404 | <dl> |
---|
| 405 | <dt><a href="http://itamarst.org/software"><b>Fusion</b></a></dt> |
---|
| 406 | |
---|
| 407 | <dd> |
---|
| 408 | <p>Fusion is a library that supports implementing protocols in C++ for |
---|
| 409 | use with Twisted, allowing control over memory allocation strategies, |
---|
| 410 | fast method calls internally, etc.. Fusion supports TCP, UDP and |
---|
| 411 | multicast, and is implemented using the Boost.Python python |
---|
| 412 | bindings.</p> |
---|
| 413 | |
---|
| 414 | <p>Fusion is licensed under the MIT license, and available for download |
---|
| 415 | from <a href= |
---|
| 416 | "http://itamarst.org/software">http://itamarst.org/software</a>.</p> |
---|
| 417 | </dd> |
---|
| 418 | </dl> |
---|
| 419 | |
---|
| 420 | <h3>Tools</h3> |
---|
| 421 | |
---|
| 422 | <dl> |
---|
| 423 | <dt><a href="http://www.jayacard.org"><b>Jayacard</b></a></dt> |
---|
| 424 | |
---|
| 425 | <dd> |
---|
| 426 | Jayacard aims at developing a secure portable open source operating |
---|
| 427 | system for contactless smart cards and a complete suite of high quality |
---|
| 428 | development tools to ease smart card OS and application development. |
---|
| 429 | |
---|
| 430 | <p>The core of the smart card reader management is written in C++ but |
---|
| 431 | all the development tools are written in the friendly Python language. |
---|
| 432 | Boost plays the fundamental role of binding the tools to our core smart |
---|
| 433 | card reader library.</p> |
---|
| 434 | </dd> |
---|
| 435 | </dl> |
---|
| 436 | <hr> |
---|
| 437 | |
---|
| 438 | <p>Revised |
---|
| 439 | <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan --> |
---|
| 440 | 15 July, 2003</p> |
---|
| 441 | |
---|
| 442 | <p><i>© Copyright <a href="../../../people/dave_abrahams.htm">Dave |
---|
| 443 | Abrahams</a> 2002-2003.</i></p> |
---|
| 444 | </body> |
---|
| 445 | </html> |
---|