ASIS is the Ada Semantic Interface Specification.  It's basically an
abstract interface into the underlying compiler's data structures.  With it,
you can build code that queries the data structures created by the compiler
and then write tools that use those structures.  There's an ASIS4GNAT
project hosted as http://www.sourceforge.net and there's also an ASIS
library with the OCS PowerAda compiler that I've used.  I suspect other
compilers also provide such an interface.

See http://www.acm.org/sigada/WG/asiswg/ for an introduction.

But using an ASIS implementation generally requires starting with compiled
Ada code. I think you're going the other way, right?  What I meant to
suggest was that you look into whether you wanted to map your C++ classes as
a private type, tagged type or variant record based on the methods in use.

-- Karl --