ConceptClang: Brief Interface Descriptionn


Premise

In designing this implementation, our main goal is to clearly identify its modular and reusable components. In addition, our extensions from
Clang must be as non-intrusive and separate from it as possible.

We have implemented the abstract layer of ConceptClang, along with two instantiations of it. The instantiations are based on two main concepts designs, known under Technical Reports N3351=12-0041 and N2914=09-0104, and herein dubbed the Palo Alto and pre-Frankfurt Instantiations.

Disclaimer: This is made available purely for illustration purposes. The implementation itself has yet to be finalized and deployed. Meanwhile, here's a (sample) bundle download for all the files listed below.


The Abstract Layer

The implementation structure consists of the following files, categorized under the different components of
our compilation model:

Note: A dummy instantiation is also implemented for cases when the concepts feature is disabled: ConceptsDesignDummy.h


The Pre-Frankfurt Instantiation

To instantiate ConceptClang for implementing the proposal in Technical Report
N2914=09-0104, we simply need to define two classes, PreFrankfurtConceptsDesignParser and PreFrankfurtConceptsDesignSema, as subclasses of the ConceptsDesignParserImpl and ConceptsDesignSemaImpl classes.
The next step is to implement the virtual functions, at the very least.


The Palo Alto Instantiation

To instantiate ConceptClang for implementing the proposal in Technical Report
N3351=12-0041, we follow the steps as we did for the pre-Frankfurt above, and define two classes, PaloAltoConceptsDesignParser and PaloAltoConceptsDesignSema, extending the ConceptsDesignParserImpl and ConceptsDesignSemaImpl classes.
The next step is to implement the virtual functions, at the very least.