[Kde-bindings] Some refactoring
Arno Rehn
arno at arnorehn.de
Sun Jan 14 14:04:07 UTC 2007
Am Samstag, 13. Januar 2007 12:25 schrieb Paolo Capriotti:
> Hi,
> I've found some time to come back to Qyoto hacking, and I've decided to
> port most of the code that was using ArrayList's, Hashtable's and other
> .NET 1.1 idioms to .NET 2.
Great! That was what I wanted to do today. ;)
> This should bring an improvement both in terms of code readability and
> performance.
> Not all legacy containers have disappeared, though, because I still have to
> figure out what those methods like AddAddObjectObjectToHashtable do :)
The Add* methods in C++ create a Callback, which we can use to call C# Methods
from C++. It works like this: You first create a delegate in C# and a typedef
in C++; both with the same signature (IntPtr in C# becomes void* in C++, look
at qyoto.h). Then you have the Add* methods in C++, which take a method
pointer (or a delegate in C#) as an argument and set the pointer/delegate to
a method pointer with the type of the equivalent typedef. Now you can call a
C# method with (*whatever)() from C++.
AddObjectObjectToHashtable takes the pointer to a C# Hashtable and the
pointers of two C# objects as arguments. In C# the pointer to the Hashtable
is used to get the real Hashtable, same goes for the two objects. Then the
objects (one key, one value) are added to the Hastable.
--
Arno Rehn
arno at arnorehn.de
More information about the Kde-bindings
mailing list