|  |  | 
|  | The Subversion Object Model | 
|  | --------------------------- | 
|  |  | 
|  | Rules of thumb for translating Subverion's C header files | 
|  | (subversion/include/svn_*.h) into a wrapper language's object model: | 
|  |  | 
|  | * C modules define a Java package, Python module, etc. | 
|  |  | 
|  | * Module functions and callbacks should be methods of an | 
|  | interface/mix-in. | 
|  |  | 
|  | * Batons are opaque data structures, and can be represented as empty | 
|  | interfaces or callable objects.  Contexts are generally represented | 
|  | as class state. | 
|  |  | 
|  | * In languages for which it is applicable, returned svn_error_t's | 
|  | should be declared as thrown exceptions. |