Diff for /ADD_ver_10/Attic/BasesDatos.c between versions 1.1 and 1.2

version 1.1, 2006/01/19 17:16:29 version 1.2, 2006/02/15 13:00:30
Line 1 Line 1
 /********************************************************************/  
 /*  BasesDatos.c                                                    */  
 /*                                                                  */  
 /*  Copyright (c) 1997-2006 Rafael Rico      (rafael.rico@uah.es)   */  
 /*                                                                  */  
 /*  This file is part of ADD version 5.10.                          */  
 /*                                                                  */  
 /*  ADD is free software; you can redistribute it and/or modify     */  
 /*  it under the terms of the GNU General Public License as         */  
 /*  published by the Free Software Foundation; either version 2 of  */  
 /*  the License, or (at your option) any later version.             */  
 /*                                                                  */  
 /*  ADD is distributed in the hope that it will be useful,          */  
 /*  but WITHOUT ANY WARRANTY; without even the implied warranty of  */  
 /*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   */  
 /*  GNU General Public License for more details.                    */  
 /*                                                                  */  
 /*  You should have received a copy of the GNU General Public       */  
 /*  License along with ADD; if not, write to the Free Software      */  
 /*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA        */  
 /*  02111-1307  USA                                                 */  
 /*                                                                  */  
 /*  --------------------------- History --------------------------- */  
 /*                                                                  */  
 /*  Revision 1.2. 01/2006                                           */  
 /*  Added GPL License and JavaDoc style documentation               */  
 /*                                                                  */  
 /*  Revision 1.1. 09/2005                                           */  
 /*  Initial Revision                                                */  
 /*                                                                  */  
 /********************************************************************/  
   
 /******************************************************************************/  /******************************************************************************/
 /* MÓDULO: BasesDatos.c                                                       */  /* MÓDULO: BasesDatos.c                                                       */
 /*                                                                            */  /*                                                                            */
Line 68  void CargarArquitecturaIA16Nemonicos(FIL Line 36  void CargarArquitecturaIA16Nemonicos(FIL
     unsigned int i;      unsigned int i;
     char linea[MAX_LINE];      char linea[MAX_LINE];
     char *registro, *campo;      char *registro, *campo;
         char mensaje[MAX_LINE];      char mensaje[MAX_LINE];
   
   
     sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Cargando base de datos del repertorio IA16...");      sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Cargando base de datos del repertorio IA16...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* salto los comentarios */      /* salto los comentarios */
     do fgets (linea, MAX_LINE, f_ia16_nemos); while (linea[0]=='#');      do fgets (linea, MAX_LINE, f_ia16_nemos); while (linea[0]=='#');
Line 81  void CargarArquitecturaIA16Nemonicos(FIL Line 49  void CargarArquitecturaIA16Nemonicos(FIL
     num_nemonicos = atoi(linea);      num_nemonicos = atoi(linea);
   
     sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Reservo memoria para %d registros", num_nemonicos);      sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Reservo memoria para %d registros", num_nemonicos);
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */      /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */
     /* calloc es más lenta pero me asegura que los valores numéricos van */      /* calloc es más lenta pero me asegura que los valores numéricos van */
Line 90  void CargarArquitecturaIA16Nemonicos(FIL Line 58  void CargarArquitecturaIA16Nemonicos(FIL
     if (nemonicos == NULL)      if (nemonicos == NULL)
     {      {
         sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Memoria insuficiente");          sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Memoria insuficiente");
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);          Notificar(mensaje, ERROR_SALIR, ECO_NO);
                 /* el programa finaliza si no hay memoria suficiente */          /* el programa finaliza si no hay memoria suficiente */
     }      }
   
     sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Cargando datos de nemónicos...");      sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] Cargando datos de nemónicos...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     i = 0;      i = 0;
     while(i<num_nemonicos)      while(i<num_nemonicos)
Line 162  void CargarArquitecturaIA16Nemonicos(FIL Line 130  void CargarArquitecturaIA16Nemonicos(FIL
     }      }
   
     sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] La tabla de nemónicos se ha cargado con éxito");      sprintf(mensaje, "[CargarArquitecturaIA16Nemonicos] La tabla de nemónicos se ha cargado con éxito");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
 }  }
   
   
Line 171  void CargarArquitecturaIA16Simbolos(FILE Line 139  void CargarArquitecturaIA16Simbolos(FILE
     unsigned int i;      unsigned int i;
     char linea[MAX_LINE];      char linea[MAX_LINE];
     char *campo;      char *campo;
         char mensaje[MAX_LINE];      char mensaje[MAX_LINE];
   
     sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Cargando base de datos del repertorio IA16...");      sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Cargando base de datos del repertorio IA16...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* salto los comentarios */      /* salto los comentarios */
     do fgets (linea, MAX_LINE, f_ia16_ubis); while (linea[0]=='#');      do fgets (linea, MAX_LINE, f_ia16_ubis); while (linea[0]=='#');
Line 183  void CargarArquitecturaIA16Simbolos(FILE Line 151  void CargarArquitecturaIA16Simbolos(FILE
     num_simbolos = atoi(linea);      num_simbolos = atoi(linea);
   
     sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Reservo memoria para %d registros", num_simbolos);      sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Reservo memoria para %d registros", num_simbolos);
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */      /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */
     /* calloc es más lenta pero me asegura que los valores numéricos van */      /* calloc es más lenta pero me asegura que los valores numéricos van */
Line 192  void CargarArquitecturaIA16Simbolos(FILE Line 160  void CargarArquitecturaIA16Simbolos(FILE
     if (simbolos == NULL)      if (simbolos == NULL)
     {      {
         sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Memoria insuficiente");          sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Memoria insuficiente");
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);          Notificar(mensaje, ERROR_SALIR, ECO_NO);
                 /* el programa finaliza si no hay memoria suficiente */          /* el programa finaliza si no hay memoria suficiente */
     }      }
   
     sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Cargando datos de símbolos...");      sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] Cargando datos de símbolos...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     i = 0;      i = 0;
     while(i<num_simbolos)      while(i<num_simbolos)
Line 237  void CargarArquitecturaIA16Simbolos(FILE Line 205  void CargarArquitecturaIA16Simbolos(FILE
             /* capturo el siguiente campo */              /* capturo el siguiente campo */
             campo = strtok(NULL, "\t\n");              campo = strtok(NULL, "\t\n");
         }          }
                           
                 /* echo */          /* echo */
                 /* printf(); */          /* printf(); */
                 /* _getch(); */          /* _getch(); */
   
                 i++;    /* índice del siguiente registro */          i++;    /* índice del siguiente registro */
     }      }
   
     sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] La tabla de símbolos se ha cargado con éxito");      sprintf(mensaje, "[CargarArquitecturaIA16Simbolos] La tabla de símbolos se ha cargado con éxito");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
 }  }
   
   
Line 255  void CargarTiemposProcesador(FILE *f_pro Line 223  void CargarTiemposProcesador(FILE *f_pro
     unsigned int i;      unsigned int i;
     char linea[MAX_LINE];      char linea[MAX_LINE];
     char *campo;      char *campo;
         char mensaje[MAX_LINE];      char mensaje[MAX_LINE];
   
     sprintf(mensaje, "[CargarTiemposProcesador] Cargando base de datos del procesador...");      sprintf(mensaje, "[CargarTiemposProcesador] Cargando base de datos del procesador...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* salto los comentarios */      /* salto los comentarios */
     do fgets (linea, MAX_LINE, f_procesador); while (linea[0]=='#');      do fgets (linea, MAX_LINE, f_procesador); while (linea[0]=='#');
Line 267  void CargarTiemposProcesador(FILE *f_pro Line 235  void CargarTiemposProcesador(FILE *f_pro
     num_tiempos = atoi(linea);      num_tiempos = atoi(linea);
   
     sprintf(mensaje, "[CargarTiemposProcesador] Reservo memoria para %d registros", num_tiempos);      sprintf(mensaje, "[CargarTiemposProcesador] Reservo memoria para %d registros", num_tiempos);
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */      /* malloc reserva memoria; calloc reserva memoria y rellena con 0's */
     /* calloc es más lenta pero me asegura que los valores numéricos van */      /* calloc es más lenta pero me asegura que los valores numéricos van */
Line 276  void CargarTiemposProcesador(FILE *f_pro Line 244  void CargarTiemposProcesador(FILE *f_pro
     if (ciclos == NULL)      if (ciclos == NULL)
     {      {
         sprintf(mensaje, "[CargarTiemposProcesador] Memoria insuficiente");          sprintf(mensaje, "[CargarTiemposProcesador] Memoria insuficiente");
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);          Notificar(mensaje, ERROR_SALIR, ECO_NO);
                 /* el programa finaliza si no hay memoria suficiente */          /* el programa finaliza si no hay memoria suficiente */
     }      }
   
     sprintf(mensaje, "[CargarTiemposProcesador] Cargando datos de tiempos...");      sprintf(mensaje, "[CargarTiemposProcesador] Cargando datos de tiempos...");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
   
     i = 0;      i = 0;
     while(i<num_tiempos)      while(i<num_tiempos)
Line 317  void CargarTiemposProcesador(FILE *f_pro Line 285  void CargarTiemposProcesador(FILE *f_pro
         /* echo */          /* echo */
         /* printf(); */          /* printf(); */
         /* _getch(); */          /* _getch(); */
                           
                 i++;    /* índice del siguiente registro */          i++;    /* índice del siguiente registro */
     }      }
   
     sprintf(mensaje, "[CargarTiemposProcesador] La tabla de tiempos se ha cargado con éxito");      sprintf(mensaje, "[CargarTiemposProcesador] La tabla de tiempos se ha cargado con éxito");
         Notificar(mensaje, NO_ERROR, ECO_NO);      Notificar(mensaje, NO_ERROR, ECO_NO);
 }  }
   
   
 void CargarArquitecturaIA16()  void CargarArquitecturaIA16()
 {  {
         FILE *f_ia16_nemos, *f_ia16_ubis;      FILE *f_ia16_nemos, *f_ia16_ubis;
         char mensaje[MAX_LINE];      char mensaje[MAX_LINE];
   
           
         /* abro el fichero de nemónicos de la arquitectura del repertorio */      /* abro el fichero de nemónicos de la arquitectura del repertorio */
     if((f_ia16_nemos  = fopen(configuracion.ficheronemos, "r")) != NULL)      if((f_ia16_nemos  = fopen(configuracion.ficheronemos, "r")) != NULL)
     {      {
         sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' se ha abierto con éxito", configuracion.ficheronemos);          sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' se ha abierto con éxito", configuracion.ficheronemos);
                 Notificar(mensaje, NO_ERROR, ECO_NO);          Notificar(mensaje, NO_ERROR, ECO_NO);
   
         CargarArquitecturaIA16Nemonicos(f_ia16_nemos);          CargarArquitecturaIA16Nemonicos(f_ia16_nemos);
   
         /* cierro el fichero de nemónicos */          /* cierro el fichero de nemónicos */
         if(fclose(f_ia16_nemos))          if(fclose(f_ia16_nemos))
                 {          {
                         sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido cerrar", configuracion.ficheronemos);              sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido cerrar", configuracion.ficheronemos);
                         Notificar(mensaje, ERROR_SEGUIR, ECO_NO);              Notificar(mensaje, ERROR_SEGUIR, ECO_NO);
                 }          }
     }      }
     else      else
         {      {
                 sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido abrir", configuracion.ficheronemos);          sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido abrir", configuracion.ficheronemos);
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);          Notificar(mensaje, ERROR_SALIR, ECO_NO);
         }      }
   
   
     /* abro el fichero de ubicaciones de la arquitectura del repertorio */      /* abro el fichero de ubicaciones de la arquitectura del repertorio */
     if((f_ia16_ubis  = fopen(configuracion.ficheroubis, "r")) != NULL)      if((f_ia16_ubis  = fopen(configuracion.ficheroubis, "r")) != NULL)
     {      {
         sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' se ha abierto con éxito", configuracion.ficheroubis);          sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' se ha abierto con éxito", configuracion.ficheroubis);
                 Notificar(mensaje, NO_ERROR, ECO_NO);          Notificar(mensaje, NO_ERROR, ECO_NO);
   
         CargarArquitecturaIA16Simbolos(f_ia16_ubis);          CargarArquitecturaIA16Simbolos(f_ia16_ubis);
   
         /* cierro el fichero de ubicaciones */          /* cierro el fichero de ubicaciones */
         if(fclose(f_ia16_ubis))          if(fclose(f_ia16_ubis))
                 {          {
                         sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido cerrar", configuracion.ficheroubis);              sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido cerrar", configuracion.ficheroubis);
                         Notificar(mensaje, ERROR_SEGUIR, ECO_NO);              Notificar(mensaje, ERROR_SEGUIR, ECO_NO);
                 }          }
     }      }
     else      else
         {      {
                 sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido abrir", configuracion.ficheroubis);          sprintf(mensaje, "[CargarArquitecturaIA16] El fichero '%s' no se ha podido abrir", configuracion.ficheroubis);
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);          Notificar(mensaje, ERROR_SALIR, ECO_NO);
         }      }
 }  }
   
   
 void CargarProcesador()  void CargarProcesador()
 {  {
         FILE *f_procesador;      FILE *f_procesador;
         char mensaje[MAX_LINE];      char mensaje[MAX_LINE];
   
   
         /* abro el fichero con la tabla de tiempos del procesador */      /* abro el fichero con la tabla de tiempos del procesador */
     if((f_procesador  = fopen(configuracion.ficherociclos, "r")) != NULL)      if((f_procesador  = fopen(configuracion.ficherociclos, "r")) != NULL)
     {      {
         sprintf(mensaje, "[CargarProcesador] El fichero '%s' se ha abierto con éxito", configuracion.ficherociclos);          sprintf(mensaje, "[CargarProcesador] El fichero '%s' se ha abierto con éxito", configuracion.ficherociclos);
                 Notificar(mensaje, NO_ERROR, ECO_NO);          Notificar(mensaje, NO_ERROR, ECO_NO);
   
         CargarTiemposProcesador(f_procesador);          CargarTiemposProcesador(f_procesador);
   
         /* cierro el fichero del procesador */          /* cierro el fichero del procesador */
         if(fclose(f_procesador))          if(fclose(f_procesador))
                 {          {
                         sprintf(mensaje, "[CargarProcesador] El fichero '%s' no se ha podido cerrar", configuracion.ficherociclos);              sprintf(mensaje, "[CargarProcesador] El fichero '%s' no se ha podido cerrar", configuracion.ficherociclos);
                         Notificar(mensaje, ERROR_SEGUIR, ECO_NO);              Notificar(mensaje, ERROR_SEGUIR, ECO_NO);
                 }          }
     }      }
     else      else
         {      {
                 sprintf(mensaje, "[CargarProcesador] El fichero '%s' no se ha podido abrir", configuracion.ficherociclos);          sprintf(mensaje, "[CargarProcesador] El fichero '%s' no se ha podido abrir", configuracion.ficherociclos);
                 Notificar(mensaje, ERROR_SALIR, ECO_NO);                  Notificar(mensaje, ERROR_SALIR, ECO_NO);    
         }      }
 }  }
   
   
Line 410  void CargarProcesador() Line 378  void CargarProcesador()
   
 void CargarBasesDatos()  void CargarBasesDatos()
 {  {
         CargarArquitecturaIA16();      CargarArquitecturaIA16();
         if(configuracion.cpi == SI) CargarProcesador();      if(configuracion.cpi == SI) CargarProcesador();
 }  }
   
   
Line 421  void LiberarMemoriaBasesDatos() Line 389  void LiberarMemoriaBasesDatos()
 {  {
     free(nemonicos);      free(nemonicos);
     free(simbolos);      free(simbolos);
         if(configuracion.cpi == SI) free(ciclos);      if(configuracion.cpi == SI) free(ciclos);
 }  }
   
   
Line 429  void LiberarMemoriaBasesDatos() Line 397  void LiberarMemoriaBasesDatos()
 #if 0  #if 0
   
     /* la función strtok de <string.h> descompone la línea en campos */      /* la función strtok de <string.h> descompone la línea en campos */
         /* OJO: modifica la cadena de caracteres de la línea que se le pasa */      /* OJO: modifica la cadena de caracteres de la línea que se le pasa */
           
     /* capturo el primer campo */          /* capturo el primer campo */    
     campo = strtok(linea, "\t");      campo = strtok(linea, "\t");

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>