[gme-users] BON2 ExtenderInterpreter generated code and traversing connections

Thompson, Robert C robert.c.thompson3 at boeing.com
Sat Sep 3 18:23:06 CDT 2005


It seems that when the BON2 ExtenderInterpreter generates code for
traversing connectors, it allows (and forces) a developer using the
generated API to specify std::set and std::multiset "2nd template
parameter", which is the comparator used by the template for comparing

For example, if your metamodel has two classes A,B and a connection
between them "Con", BON2 Extender Interpreter generates something like
the following member function of class A:

class A { 
template <class T> std::multiset<B, T> getConDsts (TDP) { ... }

Now, if I'm utilizing this method somewhere, and I have an instance "a1"
of the BON2-EI-generated class representing "A", the following seems to

B b1 = *(a1->getConDsts<std::less<B> >.begin() );

But the thing is I have to specify the std::less<B> comparator class
template parameter for every invocation of "getConDsts()".

Of course I think I could hand-jam the BON2ExtenderInterpreter and
modify the method definition to specify a default for the parameter
value when I don't specify one:

template <class T=std::less<B> > std::multiset<B, T> getConDsts (TDP) {
... }

The problem is I have quite a few of these in my metamodel that I'd have
to manually update every time I re-gen with the Extender Interpreter.
Not a show-stopper but slightly akward in terms of the overall process.

My questions are: 

A) Is there something I could do differently to get around this, am I
missing something?
B) What's the rationale for exposing that "comparator" template
parameter for specification by the call-site?
C) What's the rationale for the generated code not specifying a
"default" such that the call-site doesn't _have_ to specify a template
parameter value?
D) Would something like "C" be considered beneficial by anyone else?

Ace Thompson
Systems and Software Engineer
FCS LSI C4ISR Battle Command
robert.c.thompson3 at boeing.com
+1 480 891 2284
The Boeing Company

More information about the gme-users mailing list