/****************************************************************************/
/*                                                                          */
/*                      Chaine de CAO & VLSI   Alliance                     */
/*                                                                          */
/*    Produit : ELP Verison 1                                               */
/*    Fichier : elperror.c                                                   */
/*                                                                          */
/*    (c) copyright 1991-1995 Laboratoire MASI equipe CAO & VLSI            */
/*    Tous droits reserves                                                  */
/*    Support : e-mail cao-vlsi@masi.ibp.fr                                 */
/*                                                                          */
/*    Auteur(s) : Payam KIANI                                               */
/*                                                                          */
/****************************************************************************/
/* traitement des erreur elp                                                */
/****************************************************************************/

#include "elp.h"


/*****************************************************************************/
/*                               fonction Error()                            */
/* affichage et gestion des messages. Les erreurs de la bibliotheque ELP n'  */
/* arretent pas l'execution du programme. Ce sont juste des avertissements.  */
/* C'est a celui qui travaille avec de faire ce qu'il en veut!               */
/*                                                                           */
/* Parametres en entree:                                                     */
/* --------------------                                                      */
/*    1) errnum  : le numero de l'erreur (> 1000 pour eviter les conflits).  */
/*    2) va_alist: la fonction est a nombre d'arguments variables. La vari-  */
/*                 able va_alist contient tous les autres arguments que le   */
/*                 numero de l'erreur.                                       */
/*                                                                           */
/* Parametre en sortie:                                                      */
/* -------------------                                                       */
/*    La fonction renvoie le numero de l'erreur.                             */
/*****************************************************************************/
elperrorFCT short elpError(short errnum, ...)
{
va_list arg;

if(elpLang == elpENGLISH)
fprintf(stderr,"\n!!! elp error: %d !!!\n",errnum) ;
else
fprintf(stderr,"\n!!! erreur elp : %d !!!\n",errnum) ;

va_start(arg, errnum) ;

switch(errnum)
    {
    /* fichier techno ne pouvant pas s'ouvrir */
    case 1000: if(elpLang == elpENGLISH)
               fprintf(stderr,"can not open the file %s\n",
                       va_arg(arg,char *)) ;
               else
               fprintf(stderr,"le fichier %s ne peut pas s'ouvrir\n",
                       va_arg(arg,char *)) ;
               break ;

    /* erreur de syntaxe dans le fichier techno */
    case 1001: if(elpLang == elpENGLISH)
               fprintf(stderr,"syntax error on %s at line %d\n",
                       va_arg(arg,char *),va_arg(arg,int)) ;
               else
               fprintf(stderr,"erreur de syntaxe sur %s ligne %d\n",
                       va_arg(arg,char *),va_arg(arg,int)) ;
               break ;

    /* erreur dans le parser */
    case 1002: if(elpLang == elpENGLISH)
               fprintf(stderr,"loading error: %s\n",va_arg(arg,char *)) ;
               else
               fprintf(stderr,"erreur de chargement: %s\n",
                       va_arg(arg,char *)) ;
               break ;

    /* fichier techno ne pouvant pas etre ferme */
    case 1003: if(elpLang == elpENGLISH)
               fprintf(stderr,"can not close the file %s\n",
                       va_arg(arg,char *)) ;
               else
               fprintf(stderr,"le fichier %s ne peut pas se ferme\n",
                       va_arg(arg,char *)) ;
               break ;

    /* paramtetre obligatoire manquant */
    case 1004: if(elpLang == elpENGLISH)
               fprintf(stderr,"incomplete technology file %s\n",
                       va_arg(arg,char *)) ;
               else
               fprintf(stderr,"fichier techno incomplet %s\n",
                       va_arg(arg,char *)) ;
               break ;

    case 1005: if(elpLang == elpENGLISH)
               fprintf(stderr,"no %s capacitance parameters\n",
                       va_arg(arg,char *)) ;
               else
               fprintf(stderr,"pas de parametre de capacite de %s\n",
                       va_arg(arg,char *)) ;
               break ;
    case 1006: if(elpLang == elpENGLISH)
               fprintf(stderr,"bad transistor model name in %s \n",
                       va_arg(arg,char *)) ;
               else
               fprintf(stderr,"mauvais nom de modele de transistor dans %s\n",
                       va_arg(arg,char *)) ;
               break ;
    }
   va_end(arg);

fflush(stderr) ;
return errnum ;
}
