"Fossies" - the Fresh Open Source Software Archive

Member "laspack/errhandl.c" (27 Mar 1995, 5739 Bytes) of package /linux/privat/old/laspack.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /****************************************************************************/
    2 /*                                errhandl.c                                */
    3 /****************************************************************************/
    4 /*                                                                          */
    5 /* ERRor HANDLing routines                                                  */
    6 /*                                                                          */
    7 /* Copyright (C) 1992-1995 Tomas Skalicky. All rights reserved.             */
    8 /*                                                                          */
    9 /****************************************************************************/
   10 /*                                                                          */
   11 /*        ANY USE OF THIS CODE CONSTITUTES ACCEPTANCE OF THE TERMS          */
   12 /*              OF THE COPYRIGHT NOTICE (SEE FILE COPYRGHT.H)               */
   13 /*                                                                          */
   14 /****************************************************************************/
   15 
   16 #include <stdlib.h>
   17 #include <string.h>
   18 
   19 #include "laspack/errhandl.h"
   20 #include "laspack/copyrght.h"
   21 
   22 /* LASPack error status, procedure and objects where an error has ariced */
   23 static LASErrIdType LASErrId = LASOK;
   24 static char *LASProcName = NULL;
   25 static char *LASObject1Name = NULL;
   26 static char *LASObject2Name = NULL;
   27 static char *LASObject3Name = NULL;
   28 
   29 void LASError(LASErrIdType ErrId, char *ProcName, char *Object1Name,
   30           char *Object2Name, char *Object3Name)
   31 /* Set error status to ErrId, ... */
   32 {
   33     LASErrId = ErrId;
   34     
   35     /* release current values of error variables */
   36     if (LASProcName != NULL)
   37         free(LASProcName);
   38     if (LASObject1Name != NULL)
   39         free(LASObject1Name);
   40     if (LASObject2Name != NULL)
   41         free(LASObject2Name);
   42     if (LASObject3Name != NULL)
   43         free(LASObject2Name);
   44     LASProcName = NULL;
   45     LASObject1Name = NULL;
   46     LASObject2Name = NULL;
   47     LASObject3Name = NULL;
   48     
   49     LASProcName = (char *)malloc((strlen(ProcName) + 1) * sizeof(char));
   50     if (LASProcName != NULL) {
   51         strcpy(LASProcName, ProcName);
   52     
   53     if (Object1Name != NULL && strlen(Object1Name) > 0) {
   54             LASObject1Name = (char *)malloc((strlen(Object1Name) + 1) * sizeof(char));
   55             if (LASObject1Name != NULL)
   56                 strcpy(LASObject1Name, Object1Name);
   57     }
   58     if (Object2Name != NULL && strlen(Object2Name) > 0) {
   59             LASObject2Name = (char *)malloc((strlen(Object2Name) + 1) * sizeof(char));
   60             if (LASObject2Name != NULL)
   61                 strcpy(LASObject2Name, Object2Name);
   62     }
   63     if (Object3Name != NULL && strlen(Object3Name) > 0) {
   64             LASObject3Name = (char *)malloc((strlen(Object3Name) + 1) * sizeof(char));
   65             if (LASObject3Name != NULL)
   66                 strcpy(LASObject3Name, Object3Name);
   67     }
   68     } else {
   69         strcpy(LASProcName, "(procedure unknown)");
   70     }
   71 
   72 }
   73 
   74 void LASBreak(void)
   75 /* user break */
   76 {
   77     LASErrId = LASUserBreak;
   78 }
   79 
   80 LASErrIdType LASResult(void)
   81 /* get result of linear algebra operations */
   82 {
   83     return(LASErrId);
   84 }
   85 
   86 void WriteLASErrDescr(FILE *File)
   87 /* write a short description of the reason caused break of LASPack */
   88 {
   89     int NoPrintedObj;
   90     
   91     if (LASErrId != LASOK) {
   92     if (LASProcName != NULL) {
   93             fprintf(File, "in %s", LASProcName);
   94         NoPrintedObj = 0;
   95         if (LASObject1Name != NULL || LASObject2Name != NULL
   96         || LASObject3Name != NULL)
   97                 fprintf(File, " for ");
   98         if (LASObject1Name != NULL) {
   99             if (NoPrintedObj > 0)
  100                     fprintf(File, ", ");
  101                 fprintf(File, "%s", LASObject1Name);
  102         NoPrintedObj++;
  103         }
  104         if (LASObject2Name != NULL) {
  105             if (NoPrintedObj > 0)
  106                     fprintf(File, ", ");
  107                 fprintf(File, "%s", LASObject2Name);
  108         NoPrintedObj++;
  109         }
  110         if (LASObject3Name != NULL) {
  111             if (NoPrintedObj > 0)
  112                     fprintf(File, ", ");
  113                 fprintf(File, "%s", LASObject3Name);
  114         NoPrintedObj++;
  115         }
  116             fprintf(File, ":");
  117         }
  118         fprintf(File, "\n");
  119     }
  120     
  121     switch (LASErrId) {
  122         case LASOK:
  123             break;
  124         case LASMemAllocErr:
  125         fprintf(File, "Not enough memory is available.\n");
  126             break;
  127         case LASLValErr:
  128         fprintf(File, "L-value parameter is expected.\n");
  129             break;
  130         case LASDimErr:
  131         fprintf(File, "Objects have incompatible dimensions.\n");
  132             break;
  133         case LASRangeErr:
  134         fprintf(File, "Indices are out of range.\n");
  135             break;
  136         case LASSymStorErr:
  137         fprintf(File, "Some elements are stored in lower triangular part");
  138         fprintf(File, " of a symmetric matrix.\n");
  139             break;
  140         case LASMatrCombErr:
  141         fprintf(File, "Matrices can not be combined.\n");
  142             break;
  143         case LASMulInvErr:
  144         fprintf(File, "Inverse multiplication can not be carried out.\n");
  145             break;
  146         case LASElNotSortedErr:
  147         fprintf(File, "Matrix elements are not sorted.\n");
  148             break;
  149         case LASZeroInDiagErr:
  150         fprintf(File, "Zero elements in matrix diagonal are not allowed.\n");
  151             break;
  152         case LASZeroPivotErr:
  153         fprintf(File, "Factorization produces zero pivot elements.\n");
  154             break;
  155         case LASILUStructErr:
  156         fprintf(File, "Matrix has structure which is not allowed for ILU factorization.\n");
  157             break;
  158         case LASBreakdownErr:
  159         fprintf(File, "Iterative solver fails.\n");
  160             break;
  161         case LASUserBreak:
  162         fprintf(File, "Termination by an user break.\n");
  163             break;
  164     }
  165 }