Fuse tight composer

Yeah, we either add setToFull() or add that. However, the signature also needs to return whether the object has been modified since the returned object may be:

-          The original object with no modification

-          The original object with modification

-          A new object
We should return the type of object along with the object. Of course, this will cause us to have to modify all analyses so I suggest that we should document this option but implement the other one.

Greg Bronevetsky
Lawrence Livermore National Lab
(925) 424-5756
bronevetsky@llnl.gov<mailto:bronevetsky@llnl.gov>
http://greg.bronevetsky.com

From: Sriram Aananthakrishnan [mailto:notifications@github.com]
Sent: Thursday, July 03, 2014 11:43 AM
To: sriram87/edg4x-rose
Cc: bronevet
Subject: Re: [edg4x-rose] Fuse tight composer (#4)


In projects/fuse/src/analysis/tight_composer.C:

> +    boost::shared_ptr<AnalysisMapAOType> amAO_p = boost::make_shared<AnalysisMapAOType>();

> +    list<ComposedAnalysis*>::iterator a = allAnalyses.begin();

> +    list<Expr2AnyKey>::iterator qIt;

> +    list<boost::shared_ptr<AOType> > aopList;

> +

> +    // Dispatch queries to each analysis

> +    for( ; a != allAnalyses.end(); ++a) {

> +      if(implementsExpr2AnyOp(*a)) {

> +        aopList.clear();

> +        for(qIt = queryList.begin(); qIt != queryList.end(); ++qIt) {

> +          Expr2AnyKey query = *qIt;

> +          // Transition this query to analysis state corresponding to *a

> +          tcqm.transToAnalState(query, *a);

> +          // dispatch the query to the analysis

> +          boost::shared_ptr<AOType> ao_p = Expr2AnyOp(*a, query.sgn, query.pedge);

> +          // Add it to the list

Yea, I'm also thinking a variant of meetUpdate such as meetUpdateAtPartEdge which the composer call and inside this meetUpdateAtPartEdge we can check if the argument is isFull. Here we will be able to identify special full objects and also analysis objects that are full.

Here is my concern on that. Suppose if the argument to meetUpdateAtPartEdge is isFull. How do we set the current object to full? We do not have setToFull interface method for AbstractObject. Perhaps your second option works better?
The signature of the meetUpdate will be
MemLocObjectPtr meetUpdateAtPartEdge(MemLocObjectPtr o1, MemLocObjectPtr o2, PartEdge pedge)

—
Reply to this email directly or view it on GitHub<https://github.com/sriram87/edg4x-rose/pull/4/files#r14530927>.