Objective-C Frameworks to Eiffel Converter

by Matteo Cortonesi (modified: 2012 Jun 04)

I am pleased to announce a new Eiffel tool that is able to convert (or wrap) Objective-C frameworks to Eiffel.

I've been working on this during my master thesis at Eiffel Software and, although not completely ready for development in the software industry (there are still several manual settings/details that might be improved), we're going to release a public beta soon. I will update this post as soon as it is live.

Motivation:

The original motivation was to port the user interface used by EiffelStudio, i.e. EiffelVision, to the Mac. In order to do this we first needed to somehow port Cocoa (which is written in Objective-C) to Eiffel. This is an extremely time consuming process and given that Apple updates the frameworks quite often it would be a totally unsuitable approach to manually write Eiffel classes that wrap Cocoa classes (even in the case of a semi-automated way). This is without mentioning the memory management problems because of the absence of a garbage collector in Objective-C for all platforms.

Our tool overcomes the problems mentioned before. In particular it offers:

  • Automated conversion of Objective-C classes, categories, protocols to Eiffel
  • Automated conversion of C structs to Eiffel
  • Very good memory management. The tool has been engineered with extreme care regarding this aspect. It has also been tested thoroughly: we have yet to find a memory leak!
  • Seamless development experience for the Eiffel developers that will be using the generated wrapper: if you know how to program in Cocoa you know how to use the generated wrapper!
  • Support for XIB files (Interface Builder files).

UPDATE: The project is now online at https://svn.eiffel.com/objc-frameworks-to-eiffel-converter.

Comments
  • Larry Rix (7 years ago 2/1/2011)

    Cocoa

    Very VERY nice!! I am doing a presentation of Eiffel to a group of programmers in February. This will be a very nice point to make for them!!

    Good work!!