/// <summary> /// stores the semi into the Aggregation element /// </summary> /// <param name="semi">the semi to be stored</param> public override void doActionAggregation(CSsemi.CSemiExp semi) { AggregationElem aggregationelem = new AggregationElem(); Elem elem = new Elem(); bool existingAggregator = false; for (int i = 0; i < repo_.analyzedata.Count; i++) { elem = repo_.analyzedata[i]; if (elem.type == "class" && semi[0] == elem.name) { for (int j = 0; j < repo_.aggregationdata.Count; j++) { aggregationelem = repo_.aggregationdata[j]; if (semi[2] == aggregationelem.aggregator) { existingAggregator = true; int index = repo_.aggregationdata.IndexOf(aggregationelem); aggregationelem.aggregated.Add(semi[1]); aggregationelem.type = semi[0]; repo_.aggregationdata.Remove(aggregationelem); repo_.aggregationdata.Insert(index, aggregationelem); } } if (!existingAggregator) { aggregationelem = new AggregationElem(); aggregationelem.aggregated.Add(semi[1]); aggregationelem.aggregator = semi[2]; aggregationelem.type = semi[0]; repo_.aggregationdata.Add(aggregationelem); } createPackageAnalysisList("Aggregation", semi, i); } } }