public override void CompararValor(EscritorC escritor) { escritor.WriteLine("//" + Definicion.Nombre); switch (Definicion.Tipo) { case Tipo.UInt8: case Tipo.Int8: case Tipo.Char: escritor.WriteLine("struct Listachar *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearchar(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarchar(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /*escritor.If("TienePunterosInvalidoschar(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCircularchar(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf(); */ escritor.WriteLine("switch(PunteroInvalidoOListaCircularchar(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadchar(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux)"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.Int16: case Tipo.UInt16: escritor.WriteLine("struct Listashort *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearshort(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarshort(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /* escritor.If("TienePunterosInvalidosshort(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCircularshort(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf();*/ escritor.WriteLine("switch(PunteroInvalidoOListaCircularshort(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadshort(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux)"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.UInt32: case Tipo.Int32: escritor.WriteLine("struct Listaint *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearint(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarint(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /*escritor.If("TienePunterosInvalidosint(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCircularint(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf();*/ escritor.WriteLine("switch(PunteroInvalidoOListaCircularint(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadint(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux)"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.Booleano: escritor.WriteLine("struct Listabool *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearbool(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarbool(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /*escritor.If("TienePunterosInvalidosbool(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCircularbool(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf();*/ escritor.WriteLine("switch(PunteroInvalidoOListaCircularbool(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadbool(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux)"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.UInt64: case Tipo.Int64: escritor.WriteLine("struct Listalonglong *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearlonglong(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarlonglong(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); escritor.WriteLine("switch(PunteroInvalidoOListaCircularlonglong(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadlonglong(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux)"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.Float32: escritor.WriteLine("struct Listafloat *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("crearfloat(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertarfloat(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /*escritor.If("TienePunterosInvalidosfloat(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCircularfloat(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf();*/ escritor.WriteLine("switch(PunteroInvalidoOListaCircularfloat(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdadfloat(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux," + Definicion.Precision + ")"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; case Tipo.Float64: escritor.WriteLine("struct Listadouble *" + Definicion.Nombre + "listaaux;"); escritor.WriteLine("creardouble(&" + Definicion.Nombre + "listaaux);"); foreach (Elem elemento in Elementos) escritor.WriteLine("insertardouble(&" + Definicion.Nombre + "listaaux, " + elemento.Valor + ", false);"); /*escritor.If("TienePunterosInvalidosdouble(" + Definicion.Nombre + ")"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.FinIf(); escritor.If("ListaCirculardouble(" + Definicion.Nombre + ")"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.FinIf();*/ escritor.WriteLine("switch(PunteroInvalidoOListaCirculardouble(" + Definicion.Nombre + ")){"); escritor.WriteLine("case listaCircular:"); escritor.PrintListaCircular(); escritor.WriteLine("return 1;"); escritor.WriteLine("case punteroInvalido:"); escritor.PrintPunterosInvalidos(); escritor.WriteLine("return 1;"); escritor.WriteLine("}"); escritor.If("!igualdaddouble(" + Definicion.Nombre + ", " + Definicion.Nombre + "listaaux, " + Definicion.Precision + ")"); escritor.WriteLine(" cantErrores++;"); escritor.FinIf(); break; default: throw new Exception(Mensajes.TipoIncorrectoListas); } }