EMF4CPP, una implementación de Eclipse EMF en C++

Estoy muy contento de que por fin podamos anunciar esto. Es una implementación en C++ del Eclipse Modeling Framework (o al menos de parte de él). Ha sido un trabajo magnífico llevado a cabo por Andrés Senac en su mayoría, con alguna ayuda mía. Uno de los resultados que poco a poco va obteniendo la Cátedra SAES de la Universidad de Murcia. Os dejo el texto que hemos usado para darlo a conocer en inglés:

EMF4CPP (formerly Ecore2CPP) is a C++ implementation and type mapping for the Eclipse Modeling Framework core, the Ecore metamodel.

The current release allows to generate C++ code from Ecore metamodels, and to parse and serialize models and metamodels from and into XMI documents. Also, a partially implemented reflective API for generated metamodels is provided.

EMF4CPP consists of two parts: a source code generator from Ecore metamodels to C++ and two runtime support libraries. One of the runtime support libraries implements the Ecore metamodel (libemf4cpp-ecore). The other one allows to parse and serialize modeles in XMI format (libemf4cpp-ecorecpp). The generator is currently implemented using Xpand and Xtend.

This is our first step at providing a set of tools for MDD (Model-Driven Development) in C++ as an alternative to the Java world offered by Eclipse tools. We would like to explore common C++ idioms, paradigms and tools (such as template metaprogramming or Boost.Spirit) to provide tools for managing models, writing Domain-Specific Languages (DSLs), and Model-to-Text (M2T), Model-to-Model (M2M), and Text-to-Model (T2M) transformations.

Two direct advantages can be that C++ programmers can write their data model using Ecore and the Eclipse tools to finally generate code with EMF4CPP, and also, memory consumption and efficiency is usually better in EMF4CPP than in Java, as our preliminary results show.

The EMF4CPP development distribution (that can be downloaded from the EMF4CPP page) consists of four Eclipse projects: emf4cpp.generator, emf4cpp.tests, emf4cpp.xtext and emf4cpp.xtext2qi. The first one contains a C++ source code generator from metamodels conforming to Ecore. The second one contains, as subdirectories, some metamodels we use to test our implementation, and some emf4cpp-based utilities we are developing. A relevant utility we are developing is a Python interpreter, called PyEcore, that allows to use EMF4CPP from Python scripts. The third one is a bootstrap implementation of a ANTLR3 grammars generator from Xtext grammars. The last one is an under development Boost Sprit Qi grammars generator from Xtext grammars.

The code is still being actively developed, but we encourage all programmers that want a port of the great EMF tooling to C++ to contact us and test the tools, provide feedback or even code. We hope this utility to be of help to the community.

EMF4CPP is offered under the LGPL license, and can be downloaded from its main web page: http://www.catedrasaes.org/trac/wiki/EMF4CPP. It is part of the "Cátedra SAES UMU", a joint research venture between SAES and the University of Murcia.

For further information, don't hesutate to contact Andrés Senac (andres.senac@um.es) or Diego Sevilla (dsevilla@um.es).


blog comments powered by Disqus