Metagene, a C++ meta-program generation tool

From LRDE

Abstract

The C++ language offers a two layer evaluation model. Thus, it is possible to evaluate a program in two steps: the so-called static and dynamic evaluations. Static evaluation is used for reducing the amount of work done at execution-time. Programs executed statically (called metaprograms) are written in C++ through an intensive use of template classes. Due to the complexity of these structures, writing, debugging and maintaining C++ meta-programs is a difficult task. Metagene is a program transformation tool which simplifies the development of such programs. Due to the similarities between C++ meta-programming and functional programming, the input language of Metagene is an ML language. Given a functional input program, Metagene outputs the corresponding C++ meta-program expressed using template classes.

Documents

Bibtex (lrde.bib)

@InProceedings{	  maes.04.mpool,
  author	= {Francis Maes},
  title		= {Metagene, a {C++} meta-program generation tool},
  booktitle	= {Proceedings of the Workshop on Multiple Paradigm with OO
		  Languages (MPOOL; in conjunction with ECOOP)},
  year		= 2004,
  address	= {Oslo, Norway},
  month		= jun,
  abstract	= {The C++ language offers a two layer evaluation model.
		  Thus, it is possible to evaluate a program in two steps:
		  the so-called static and dynamic evaluations. Static
		  evaluation is used for reducing the amount of work done at
		  execution-time. Programs executed statically (called
		  metaprograms) are written in C++ through an intensive use
		  of template classes. Due to the complexity of these
		  structures, writing, debugging and maintaining C++
		  meta-programs is a difficult task. Metagene is a program
		  transformation tool which simplifies the development of
		  such programs. Due to the similarities between C++
		  meta-programming and functional programming, the input
		  language of Metagene is an ML language. Given a functional
		  input program, Metagene outputs the corresponding C++
		  meta-program expressed using template classes.}
}