Hello Everyone,

Unfortunately, GSoC is already over and I think it's time for a little resumé:
Before I go into problems I've faced and problems I've solved, I want to thank my mentor Vadim Zeitlin, who always gave good advice, responded quickly and overall was a good guide to get through this. I also must admit, that I haven't had the time I would have hoped for during the first half of the GSoC since my university assignments kept me busier than ever.

Some problems I've faced:
The last commit message of the C backend's original author was: "Many major improvements. Almost all testsuite compiles now.", which sounded quite good back then.
I tried 'check-c-test-suite' and filtered the output, which revealed that 'only' about 18% of the tests failed. As I found out later, the generated proxy file wasn't even compiled unless a runtime test was present, which was the case for only ~4/426 tests. Compiling all the generated files raised the failing tests rate to 96%.
So, sadly, I've based my proposition on completely wrong data.

I started off by trying to nail down exactly which things (C++ features) were broken. To do so, I've implemented some runtime tests for test interfaces that were already there. Soon enough I noticed, that most of the test cases that were around mixed many C++ features and made it hard to determine exactly which [mix of] features were broken.
I began to add test interfaces that would only test single features of the C++ language. If they tested multiple features, I made sure the test's name would indicated it.

Things I've fixed:
- Actually expose what's wrong (fix Makefiles)
- Add a number of testcases and runtime tests for specific C++ features
- Refactor code (and typemaps) massively
- Add namespace support
- Add some degree of type safeness and improve C API (proto)types
- Improve template support
- Improve natural 'char*' mapping for std::string
- Improve docs

Sadly, I didn't manage to reach my initially set goal of improving the C backend to a level, where it matches trunk standards. But as I explained above, this goal was set based on completly wrong assumptions.

Anyway, for the near future I plan to do the following things:
- Remove 'cppouttype' typemap
- Repair context of enum values
- Improve docs about C backend
- Repair std::vector for work for all types (This will also fix a C API qualifier issue I think)

Unrelated to my particular project, I keep wondering just why SWIG uses DOH instead of C++ classes, methods and functions. It made debugging extremely annoying for apparently no benefit. The backend code often contains code like "Replaceall" and other string manipulation code in place, which just doesn't look clean.
I assume it's for historical reasons?

Besides that, I want to thank you all for giving me the chance to hack on SWIG. I've learend a lot about its inner working and was able to improve my C++ knowledge a lot. I also want to thank all the other developers who were always very helpful and responded with advice quickly.

Thanks again for the help and guidance,
Best regards,

Leif