"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 }