示例#1
0
        /// <summary>
        /// Realiza una copia de la clase específicada
        /// </summary>
        /// <param name="original">Clase a copiar</param>
        /// <returns></returns>
        public static Clase Copiar(Clase original)
        {
            Clase prueba = new Clase();

            ///Copia los simbolos
            foreach (var lst01 in original.ClaseSym)
            {
                Simbolo symPrueba = new Simbolo
                {
                    Arr       = lst01.Value.Arr,
                    Dato      = lst01.Value.Dato,
                    EsPrivado = lst01.Value.EsPrivado,
                    Oper      = lst01.Value.Oper,
                    TipoDato  = lst01.Value.TipoDato
                };

                if (lst01.Value.Arreglo != null)
                {
                    Arreglo arr = new Arreglo
                    {
                        Dimension = lst01.Value.Arreglo.Dimension,
                        SizeBi    = lst01.Value.Arreglo.SizeBi,
                        SizeUni   = lst01.Value.Arreglo.SizeUni,
                        SizeTri   = lst01.Value.Arreglo.SizeTri
                    };
                    symPrueba.Arreglo = arr;
                }
                if (lst01.Value.Posicion != null)
                {
                    Posicion pos = new Posicion(lst01.Value.Posicion.Fila, lst01.Value.Posicion.Columna);
                    symPrueba.Posicion = pos;
                }
                prueba.ClaseSym.Add(lst01.Key.ToString(), symPrueba);
            }
            ///Copia los nombre de las clases importadas
            foreach (var lst01 in original.ClaseImpNames)
            {
                prueba.ClaseImpNames.AddLast(lst01.ToString());
            }
            ///Copia las funciones de la clase
            foreach (var lst01 in original.ClaseEnt)
            {
                Funcion funcion = Funcion.Copiar(lst01.Value);
                funcion.ClaseEnt      = prueba.ClaseEnt;
                funcion.ClaseImp      = prueba.ClaseImp;
                funcion.ClaseImpNames = prueba.ClaseImpNames;
                funcion.ClaseSym      = prueba.ClaseSym;
                prueba.ClaseEnt.Add(lst01.Key, funcion);
            }
            ///Copia las clases importadas
            foreach (var lst01 in original.ClaseImp)
            {
                prueba.ClaseImp.Add(lst01.Key.ToString(), Copiar(lst01.Value));
            }
            return(prueba);
        }