								-*-text-*-


==> For instructions on how to get swig bindings working, read the
     INSTALL file in this directory.


SVN HEADER -> SWIG MODULE
-------------------------

Subversion has a bunch of includes files, some are interesting for
wrapping with language bindings, and others which are simple type
declarations and constants. Below is the table which maps each header
to its disposition:

INCLUDE           SWIG MODULE NAME
svn_base64.h	  (1)
svn_client.h	  _client
svn_config.h	  ?
svn_delta.h	  _delta
svn_error.h	  (2)
svn_error_codes.h (2)
svn_fs.h	  _fs
svn_hash.h	  (1)
svn_io.h	  (4) (only stream functions)
svn_path.h	  (1)
svn_pools.h	  (4) (only pool manipulation)
svn_quoprint.h	  (1)
svn_ra.h	  _ra
svn_repos.h	  _repos
svn_sorts.h	  (1)
svn_string.h	  (3)
svn_test.h	  (2)
svn_time.h	  (1)
svn_types.h	  (3)
svn_version.h	  (4) (some symbols)
svn_wc.h	  _wc
svn_xml.h	  (1)

apr*.h		  (3)

n/a		  _util

(1) it is assumed that the binding languages will provide this
    functionality separately.
    ### HELP: Java does not provide base-64 natively.  Should we wrap
    ### SVN's with SWIG, or include a stand-alone ASF implementation
    ### (such as from Jakarta Commons Codec)?
(2) no significant/interesting functionality to export
(3) only the types are exported; a SWIG interface file is present
(4) limited symbols/functionality exported via the _util module


NOTE: the bindings code is being developed using SWIG 1.3.19 or
later.  Earlier versions of SWIG will simply *not* work.




SWIG MODULES
------------

We will produce a number of modules/classes, expecting the binding
languages to organize these into a package, and present the Subversion
libraries' API in a manner familiar to programmers of a given
language.  For instance, the Python bindings are handled as follows:

svn.client
svn.delta
svn.error
svn.fs
svn.io
svn.ra
svn.wc




THUNK EDITORS
-------------

"Thunk" is Windows programming term describing a "go between."  Our
SWIG bindings generally implement editors in C which delegate to the
language-specific extension API (e.g. its C API for Python, JNI for
Java, etc.).  This transitional object implements a Subversion editor
interface, allowing it to be passed between its native library code
and the runtime of the language which the bindings were written for.
