SWIG Copyright and Authors
--------------------------

Copyright (c) 1995-2011 The SWIG Developers
Copyright (c) 2005-2006 Arizona Board of Regents (University of Arizona).
Copyright (c) 1998-2005 University of Chicago.
Copyright (c) 1995-1998 The University of Utah and the Regents of the University of California

Portions also copyrighted by:
 Network Applied Communication Laboratory, Inc
 Information-technology Promotion Agency, Japan

Active SWIG Developers:
 William Fulton (wsf@fultondesigns.co.uk)                 (SWIG core, Java, C#, Windows, Cygwin)
 Olly Betts (olly@survex.com)                             (PHP)
 Joseph Wang (joequant@gmail.com)                         (R)
 Xavier Delacour (xavier.delacour@gmail.com)              (Octave)
 David Nadlinger (code@klickverbot.at)                    (D)
 Oliver Buchtala (oliver.buchtala@gmail.com)              (Javascript)
 Neha Narang (narangneha03@gmail.com)                     (Javascript)
 Simon Marchetto (simon.marchetto@scilab-enterprises.com) (Scilab)

Past SWIG developers and major contributors include:
 Dave Beazley (dave-swig@dabeaz.com)                      (SWIG core, Python, Tcl, Perl)
 Henning Thielemann (swig@henning-thielemann.de)          (Modula3)
 Matthias Köppe (mkoeppe@mail.math.uni-magdeburg.de)      (Guile, MzScheme)
 Luigi Ballabio (luigi.ballabio@fastwebnet.it)            (STL wrapping)
 Mikel Bancroft (mikel@franz.com)                         (Allegro CL)
 Surendra Singhi (efuzzyone@netscape.net)                 (CLISP, CFFI)
 Marcelo Matus (mmatus@acms.arizona.edu)                  (SWIG core, Python, UTL[python,perl,tcl,ruby])
 Art Yerkes (ayerkes@speakeasy.net)                       (Ocaml)
 Lyle Johnson (lyle@users.sourceforge.net)                (Ruby)
 Charlie Savage (cfis@interserv.com)                      (Ruby)
 Thien-Thi Nguyen (ttn@glug.org)                          (build/test/misc)
 Richard Palmer (richard@magicality.org)                  (PHP)
 Sam Liddicott - Ananova Ltd (saml@liddicott.com)         (PHP)
 Tim Hockin - Sun Microsystems (thockin@sun.com)          (PHP)
 Kevin Ruland                                             (PHP)
 Shibukawa Yoshiki                                        (Japanese Translation)
 Jason Stewart (jason@openinformatics.com)                (Perl5)
 Loic Dachary                                             (Perl5)
 David Fletcher                                           (Perl5)
 Gary Holt                                                (Perl5)
 Masaki Fukushima                                         (Ruby)
 Scott Michel (scottm@cs.ucla.edu)                        (Java directors)
 Tiger Feng (songyanf@cs.uchicago.edu)                    (SWIG core)
 Mark Rose (mrose@stm.lbl.gov)                            (Directors)
 Jonah Beckford (beckford@usermail.com)                   (CHICKEN)
 Ahmon Dancy (dancy@franz.com)                            (Allegro CL)
 Dirk Gerrits                                             (Allegro CL)
 Neil Cawse                                               (C#)
 Harco de Hilster                                         (Java)
 Alexey Dyachenko (dyachenko@fromru.com)                  (Tcl)
 Bob Techentin                                            (Tcl)
 Martin Froehlich <MartinFroehlich@ACM.org>               (Guile)
 Marcio Luis Teixeira <marciot@holly.colostate.edu>       (Guile)
 Duncan Temple Lang                                       (R)
 Miklos Vajna <vmiklos@frugalware.org>                    (PHP directors)
 Mark Gossage (mark@gossage.cjb.net)                      (Lua)
 Raman Gopalan (ramangopalan@gmail.com)                   (eLua)
 Gonzalo Garramuno (ggarra@advancedsl.com.ar)             (Ruby, Ruby's UTL)
 John Lenz                                                (Guile, MzScheme updates, Chicken module, runtime system)
 Baozeng Ding  <sploving1@163.com>                        (Scilab)
 Ian Lance Taylor                                         (Go)
 Dmitry Kabak (userdima@gmail.com)                        (Doxygen)
 Vadim Zeitlin                                            (PCRE, Python, Doxygen)
 Stefan Zager (szager@gmail.com)                          (Python)
 Vincent Couvert                                          (Scilab)
 Sylvestre Ledru                                          (Scilab)
 Wolfgang Frisch                                          (Scilab)

Past contributors include:
 James Michael DuPont, Clark McGrew, Dustin Mitchell, Ian Cooke, Catalin Dumitrescu, Baran
 Kovuk, Oleg Tolmatcev, Tal Shalif, Lluis Padro, Chris Seatory, Igor Bely, Robin Dunn,
 Edward Zimmermann, David Ascher, Dominique Dumont, Pier Giorgio Esposito, Hasan Baran Kovuk,
 Klaus Wiederänders, Richard Beare, Hans Oesterholt.
 (See CHANGES and CHANGES.current and the bug tracker for a more complete list).

Past students:
 Songyan Feng (Chicago).
 Xinghua Shi (Chicago).
 Jing Cao (Chicago).
 Aquinas Hobor (Chicago).

Historically, the following people contributed to early versions of SWIG.
Peter Lomdahl, Brad Holian, Shujia Zhou, Niels Jensen, and Tim Germann
at Los Alamos National Laboratory were the first users. Patrick
Tullmann at the University of Utah suggested the idea of automatic
documentation generation. John Schmidt and Kurtis Bleeker at the
University of Utah tested out the early versions.  Chris Johnson
supported SWIG's developed at the University of Utah. John Buckman,
Larry Virden, and Tom Schwaller provided valuable input on the first
releases and improving the portability of SWIG. David Fletcher and
Gary Holt have provided a great deal of input on improving SWIG's
Perl5 implementation. Kevin Butler contributed the first Windows NT
port.

Early bug reports and patches:
Adam Hupp, Arthur Smyles, Brad Clements, Brett Williams, Buck Hodges,
Burkhard Kloss, Chia-Liang Kao, Craig Files, Dennis Marsa, Dieter Baron,
Drake Diedrich, Fleur Diana Dragan, Gary Pennington, Geoffrey Hort, Gerald Williams,
Greg Anderson, Greg Kochanski, Greg Troxel, Henry Rowley, Irina Kotlova,
Israel Taller, James Bailey, Jim Fulton, Joel Reed, Jon Travis,
Junio Hamano, Justin Heyes-Jones, Karl Forner, Keith Davidson,
Krzysztof Kozminski, Larry Virden, Luke J Crook, Magnus Ljung, Marc Zonzon,
Mark Howson, Micahel Scharf, Michel Sanner, Mike Romberg, Mike Simons,
Mike Weiblen, Paul Brannan, Ram Bhamidipaty, Reinhard Fobbe, Rich Wales,
Richard Salz, Roy Lecates, Rudy Albachten, Scott Drummonds
Scott Michel, Shaun Lowry, Steve Galser, Tarn Weisner Burton,
Thomas Weidner, Tony Seward, Uwe Steinmann, Vadim Chugunov, Wyss Clemens,
Zhong Ren.

