/// <summary> /// stores the semi into the composition element /// </summary> /// <param name="semi">the semi to be stored</param> public override void doActionComposition(CSsemi.CSemiExp semi) { CompositionElem compositionelem = new CompositionElem(); Elem elem = new Elem(); bool existingCompositor = false; for (int i = 0; i < repo_.analyzedata.Count; i++) { elem = repo_.analyzedata[i]; if ((elem.type == "struct" && semi[0] == elem.name) || (elem.type == "enum" && semi[0] == elem.name)) { for (int j = 0; j < repo_.compositiondata.Count; j++) { compositionelem = repo_.compositiondata[j]; if (semi[2] == compositionelem.compositor) { existingCompositor = true; int index = repo_.compositiondata.IndexOf(compositionelem); compositionelem.composedelement.Add(semi[1]); compositionelem.type = semi[0]; repo_.compositiondata.Remove(compositionelem); repo_.compositiondata.Insert(index, compositionelem); } } if (!existingCompositor) { compositionelem = new CompositionElem(); compositionelem.composedelement.Add(semi[1]); compositionelem.compositor = semi[2]; compositionelem.type = semi[0]; repo_.compositiondata.Add(compositionelem); } createPackageAnalysisList("Composition", semi, i); } } }