[f6b5f0] | 1 | /**************************************** |
---|
| 2 | * Computer Algebra System SINGULAR * |
---|
| 3 | ****************************************/ |
---|
| 4 | |
---|
[0e1846] | 5 | /*************************************************************** |
---|
| 6 | * |
---|
| 7 | * File: mpsr_Error.cc |
---|
| 8 | * Purpose: Error handling of mpsr routines |
---|
| 9 | * Author: Olaf Bachmann (2/97) |
---|
| 10 | * |
---|
| 11 | * Change History (most recent first): |
---|
| 12 | * |
---|
| 13 | ***************************************************************/ |
---|
[762407] | 14 | #include "config.h" |
---|
[b1dfaf] | 15 | #include <kernel/mod2.h> |
---|
[0e1846] | 16 | |
---|
| 17 | #ifdef HAVE_MPSR |
---|
| 18 | |
---|
[599326] | 19 | #include <kernel/febase.h> |
---|
| 20 | #include <Singular/mpsr.h> |
---|
[0e1846] | 21 | |
---|
[85e68dd] | 22 | const char *mpsr_errlist[] = |
---|
[0e1846] | 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; |
---|
[509167] | 45 | static MP_Errors mpsr_MP_errno = MP_Failure; |
---|
[0e1846] | 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); |
---|
[d14712] | 56 | mpsr_MP_errno = (enum MP_Errors) link->MP_errno; |
---|
[0e1846] | 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 | } |
---|
[a9a7be] | 77 | |
---|
[0e1846] | 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 |
---|