#################################
#
# C# Clearsilver wrapper
#
# David Jeske
#

This wrapper was developed using the Mono project's C# implementation.
It isn't done, and it hasn't yet been tested with the MS C#
implementation, however, in theory it should work. Here are some salient
ideas behind this implementation:

- I don't use IntPtr, because it is basically a void* that
  removes type information and begs for coredumps to occur later.

- I also don't use data marshaling for aggregate C-types. Instead I
  merely access the structure members directly from C# unsafe code, just
  like you would if this was C code. 

- The only data which is marshalled is function arguments and data which
  is pulled out of or put into C-structures.

- There are many things still todo before this is a fully working
  module, but the basics are there.


TODO:

- more tests (look at ruby/test/hdftest.rb for an example)
- do something better about mapping hdferror to exceptions
- recheck the function prototypes to make sure I'm handling all
  arguments
- handle next(), prev()
- make iterator for child nodes
- allow registration of upload callbacks and data-formatters from C#
- open up access to other parts of cgi and util
- sample code for using inside mod_mono, includign CSPage.cs
