Esempio n. 1
0
        /// <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);
                }
            }
        }
Esempio n. 2
0
        /// <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);
                }
            }
        }