Current work on mono-cxxi

412 views
Skip to first unread message

Steven Boswell II

unread,
May 27, 2012, 11:45:37 AM5/27/12
to mono...@googlegroups.com
First, can I request that the list moderators make it so that any e-mails sent out via this list have their subject prefixed with "[mono-cxxi]"?  Most other mailing lists do this & it makes it easier to pick those messages out from a busy inbox.

Currently, I'm reading over the source code, so that I can learn how mono-cxxi works.  So far, the code seems simple and straightforward, so the real challenge is the sheer volume of it.  At some point in my reading, I should be able to produce some decent developer documentation that others can use to get into the project more quickly.

I was wondering, what sort of work is going on with mono-cxxi these days?  I've seen mentions of various things (e.g. using clang instead of gcc-xml) but I've seen no commits to the repos at github.com/mono/cxxi/ for five months.

Finally, if you're just looking for a Qt binding that works under Linux and MS Windows, I'm happy to announce that the kde-bindings mailing list has FINALLY put together a working cross-platform version of smokegen, smokeqt, and assemblygen!  It features some very nice modifications to the Qt interface to make it more C# compliant, e.g. get/set functions are wrapped with property accessors, enum values allow the "bitwise or" operator, and Qt objects support C#-style events in addition to the usual QObject.Connect() facility.  If you're all interested, I'll put together the MS Windows build instructions, and the RPM spec files I use under Fedora Core 16, and post them here.

Steven Boswell

Steven Boswell II

unread,
May 28, 2012, 9:20:56 AM5/28/12
to mono...@googlegroups.com
Hmmm...is everyone gone for the Memorial Day weekend? :-)

I've finished my first readthrough of the code.  There are parts I could hit in more depth, but I've got a pretty good overview of it now.  The first priority, for me, seemed to be to fix the substitution analysis when generating mangled identifiers in the Itanium C++ ABI handler (i.e. src/Mono.Cxxi/Abi/Impl/ItaniumAbi.cs).  I've done that; now the hello sample can resolve the call to QObject::Connect(), and Tests.ManglingTests.TestCompression completes successfully.  I'm going to test my code more thoroughly, then I'll submit a patch.

Steven Boswell

João Matos

unread,
Aug 8, 2012, 2:54:52 AM8/8/12
to mono...@googlegroups.com, Steven Boswell II
Hi Steve,

Sorry, seems I missed your messages on this list. The Smoke project is pretty interesting, but it seems too tied to Qt / KDE technologies to be a general-purpose solution.

I've been working on Clang MSVC compatibility these last months, and learned a lot about how the MSVC ABI works, even virtual inheritance, exceptions and RTTI, so I plan to work on that on the runtime side of things.

At the moment I'm working on the Clang generator, and it's pretty promising. I replaced most of the C++ generating code with actual C# code, and now the generator side of things is using the T4 text templating engine, so it's a lot more flexible. The connection to Clang is done via C++/CLI, but once the generator is mature enough to generate bindings to Clang / LLVM (and Clang / LLVM can be compiled as a proper DLL on Windows) I plan to remove the C++/CLI dependency. Instead of a XML filter, filtering will be done with real code, so you can rename things how you want, group it, etc.

It even uses the new Doxygen / Qt documentation parsing support in Clang to automatically generate C# documentation for the bindings. I also plan to use Clang's class layout algorithms to support all the C++ tricky inheritance cases. STL support is also on my list of things to take a look into.

Sharique uddin Ahmed Farooqui

unread,
Aug 8, 2012, 1:53:58 PM8/8/12
to mono...@googlegroups.com
Hi,

That is great news. T4 template will make much flexible.

--
Sharique uddin Ahmed Farooqui
> --
>
>
Reply all
Reply to author
Forward
0 new messages