ROOT.NET v2.0

Rating: No reviews yet
Downloads: 37
Change Set: 66217
Released: Dec 31, 2010
Updated: Dec 31, 2010 by gwatts
Dev status: Beta Help Icon

Recommended Download

Application root 5.28 Debug Wrapper v2.0 Beta
application, 100146K, uploaded Dec 31, 2010 - 37 downloads

Release Notes

This is a major release because some features are not backwards compatible (see below).
  • A command line utility that can generate an add on library. Useful if you have your own ROOT C++ objects that you'd like to expose. This is most certianly not user friendly at this time.
  • Public instance variables are now exposed as .NET properties (no support currently for static instance variables, I'm afraid).
  • vector<object> returns from methods and data members are supported, were object derives from TObject.
  • void* is now handled. This is assumed to point to an object of type TObject* - so user-be-ware! It is very easy to get things very corrupted with this!
  • vector<int>, vector<double>, etc., are all translated now to a int[] or similar .NET arrays. They are aggressivly translated - so cache the results when they come back if you can!
  • you can now pass a .NET null to an argument where an object is expected and it will be passed as a null pointer in C++ (for exampl,e TH1::SetDirectory). Note that an ArgumentNullException should now also be thrown if you pass a null pointer as an argument that is supposed to be a real object (vs. a pointer).
  • Breaking Change Proprety names no longer have the "PR" in front of them. ROOT.NET has always looked for GetXXX/SetXXX combinations and converted them into .NET properties (i..e int x = TH1F::GetEntries() ==> int x = TH1F::Entries). However, it used to always put a "PR" in front of them to make sure there were no conflicts with methods by the same name. Conflict detection has now been implemented (3 conflicts in all of the ROOT base). And the property names make more sense now.
  • TIter and TCollection (and their sub-classes) now have IEnumerable symantics. This means you can use foreach or LINQ on a TList or TCollection, etc. See the translated page for an example.
  • Breaking Change libraries are now stored in %ROOTSYS%\NETWrappers\lib rather than in %ROOTSYS%\NETWrappers... this is because there are now some include files that are required if one wants to add a few new C++ classes of ones own after-the-fact.
  • There is a very user-unfriendly tool that will take some ROOT built dll's, scan them for objects, and create .NET wrappers, taking into account the already wrapped library. This way you can expose your own additional classes. There is no tutorial on how to use this yet as this is very experimental! Just ask and I'll start putting together one.
  • The TTree::Process method in CINT reports a void * argument, however in C++ it is actually a TSelector * argument (there is actually a reason for CINT to lie here). Special case fixed this so you can create a TSelector and use it.

Also, lots of internal changes to make the above possible.

The download is a debug build of production ROOT 5.28 with the wrappers for it in the NETWrappers sub-directory.

Reviews for this release

No reviews yet for this release.