The template class is the basis for all the output in IDLdoc. In the process of releasing IDLdoc 3.0, some additions were necessary to facilitate outputting more complex hierarchical data.

Previously, the template `process` method took a structure argument and substituted variables in the template by the corresponding field name in the structure. The new version uses objects (but still allows structures). Any object with a `getVariable` method that follows the following signature:

function classname::getVariable, name, found=found

can be passed to the `MGffTemplate::process` method. When a name is encountered in the template, the template object calls `getVariable` with the variable name. This is much more flexible because variable requests can be handled in many ways: inherited from a parent class, delegated to another object, retrieved from a member variable, or retrieved in some other way (array, hash table, etc). Also, output can added to an object hierarchy by just adding a method instead of creating special structures.

The files needed to use the template are the [`MGffTemplate` class](https://github.com/mgalloy/mglib/tree/master/src/fileio/mgfftemplate__define.pro) (docs) and the [MGffTokenizer class](https://github.com/mgalloy/mglib/tree/master/src/fileio/mgfftokenizer__define.pro) (docs).

See [these](http://michaelgalloy.com/2007/01/11/template-class.html) [previous](http://michaelgalloy.com/2007/02/12/report-generation-more-about-templates.html) posts about the template class.