[f6b5f0] | 1 | /**************************************** |
---|
| 2 | * Computer Algebra System SINGULAR * |
---|
| 3 | ****************************************/ |
---|
[5615cd9] | 4 | /* $Id: mpsr_Error.cc,v 1.5 1997-06-30 17:04:45 obachman Exp $ */ |
---|
[f6b5f0] | 5 | |
---|
[0e1846] | 6 | /*************************************************************** |
---|
| 7 | * |
---|
| 8 | * File: mpsr_Error.cc |
---|
| 9 | * Purpose: Error handling of mpsr routines |
---|
| 10 | * Author: Olaf Bachmann (2/97) |
---|
| 11 | * |
---|
| 12 | * Change History (most recent first): |
---|
| 13 | * |
---|
| 14 | ***************************************************************/ |
---|
| 15 | #include "mod2.h" |
---|
| 16 | |
---|
| 17 | #ifdef HAVE_MPSR |
---|
| 18 | |
---|
| 19 | #include "febase.h" |
---|
| 20 | #include"mpsr.h" |
---|
| 21 | |
---|
| 22 | char *mpsr_errlist[] = |
---|
| 23 | { |
---|
| 24 | "mpsr_Failure", |
---|
| 25 | "mpsr_Success", |
---|
| 26 | "Low-level MP error", |
---|
| 27 | "MP (resp. MPT) syntax error", |
---|
| 28 | "Object of unknown type to put", |
---|
| 29 | "Object of wrong type to put", |
---|
| 30 | "Unknown Singular token to put", |
---|
| 31 | "Unknown dictionary item to get", |
---|
| 32 | "Unknown operator to get", |
---|
| 33 | "Unknown MP Node Type", |
---|
| 34 | "Prototype found where it can not be handled", |
---|
| 35 | "Wrong Number of Args", |
---|
| 36 | "Wrong Argument Type", |
---|
| 37 | "Wrong MP Node Type", |
---|
| 38 | "Required Annot Skip", |
---|
| 39 | "Wrong Union Discriminator", |
---|
| 40 | "Unknown Coefficient Domain Specifications", |
---|
| 41 | }; |
---|
| 42 | |
---|
| 43 | |
---|
| 44 | static mpsr_Status_t mpsr_errno = mpsr_Success; |
---|
| 45 | static mpsr_MP_errno = MP_Failure; |
---|
| 46 | |
---|
| 47 | mpsr_Status_t mpsr_SetError(mpsr_Status_t error) |
---|
| 48 | { |
---|
| 49 | mpsr_errno = error; |
---|
| 50 | return error; |
---|
| 51 | } |
---|
| 52 | |
---|
| 53 | mpsr_Status_t mpsr_SetError(MP_Link_pt link) |
---|
| 54 | { |
---|
| 55 | mpsr_SetError(mpsr_MP_Failure); |
---|
| 56 | mpsr_MP_errno = link->errno; |
---|
| 57 | return mpsr_MP_Failure; |
---|
| 58 | } |
---|
| 59 | |
---|
[286bd57] | 60 | void mpsr_PrintError(mpsr_Status_t error, MP_Link_pt link) |
---|
[0e1846] | 61 | { |
---|
| 62 | if (error != mpsr_Success) |
---|
| 63 | { |
---|
| 64 | if (error == mpsr_MP_Failure) |
---|
| 65 | Werror("%s : %s", mpsr_errlist[error], |
---|
[286bd57] | 66 | (link != NULL ? MP_ErrorStr(link) : |
---|
| 67 | (mpsr_MP_errno < MP_MaxError ? MP_errlist[mpsr_MP_errno] : |
---|
| 68 | "Unknown MP error"))); |
---|
[0e1846] | 69 | else if (error == mpsr_MPT_Failure) |
---|
| 70 | Werror("%s : %s", mpsr_errlist[error], |
---|
[286bd57] | 71 | ((MPT_errno == MPT_MP_Failure && link != NULL) ? |
---|
| 72 | MP_ErrorStr(link) : MPT_ErrorStr(MPT_errno))); |
---|
| 73 | else Werror("MP<->Singular interface error : %s", |
---|
[0e1846] | 74 | (mpsr_errno < mpsr_MaxError ? mpsr_errlist[mpsr_errno] : |
---|
| 75 | "Unknown mpsr error")); |
---|
| 76 | } |
---|
| 77 | |
---|
| 78 | } |
---|
[286bd57] | 79 | void mpsr_PrintError(MP_Link_pt link) |
---|
| 80 | { |
---|
| 81 | mpsr_PrintError(mpsr_errno, link); |
---|
| 82 | } |
---|
| 83 | |
---|
| 84 | void mpsr_PrintError(mpsr_Status_t error) |
---|
| 85 | { |
---|
| 86 | mpsr_PrintError(error, NULL); |
---|
| 87 | } |
---|
| 88 | |
---|
[0e1846] | 89 | |
---|
| 90 | void mpsr_PrintError() |
---|
| 91 | { |
---|
[286bd57] | 92 | mpsr_PrintError(mpsr_errno, NULL); |
---|
[0e1846] | 93 | } |
---|
| 94 | |
---|
| 95 | mpsr_Status_t mpsr_GetError() |
---|
| 96 | { |
---|
| 97 | return mpsr_errno; |
---|
| 98 | } |
---|
| 99 | |
---|
| 100 | void mpsr_ClearError() |
---|
| 101 | { |
---|
| 102 | mpsr_errno = mpsr_Success; |
---|
| 103 | } |
---|
| 104 | #endif |
---|