[6ae4f5] | 1 | /**************************************** |
---|
| 2 | * Computer Algebra System SINGULAR * |
---|
| 3 | ****************************************/ |
---|
| 4 | /* $Id: mpsr_Get.h,v 1.2 1997-04-09 12:20:02 Singular Exp $ */ |
---|
[0e1846] | 5 | /*************************************************************** |
---|
| 6 | * |
---|
| 7 | * File: mpsr_Get.h |
---|
| 8 | * Purpose: declarations for all the Get routines |
---|
| 9 | * Author: Olaf Bachmann (10/95) |
---|
| 10 | * |
---|
| 11 | * Change History (most recent first): |
---|
| 12 | * |
---|
| 13 | ***************************************************************/ |
---|
| 14 | #include"mod2.h" |
---|
| 15 | |
---|
| 16 | #ifdef HAVE_MPSR |
---|
| 17 | |
---|
| 18 | #ifndef __MPSR_GET__ |
---|
| 19 | #define __MPSR_GET__ |
---|
| 20 | |
---|
| 21 | #include "numbers.h" |
---|
| 22 | #include "polys.h" |
---|
| 23 | #include "febase.h" |
---|
| 24 | |
---|
| 25 | #include"mpsr.h" |
---|
| 26 | |
---|
| 27 | |
---|
| 28 | |
---|
| 29 | /*************************************************************** |
---|
| 30 | * |
---|
| 31 | * Get-specific data structures |
---|
| 32 | * |
---|
| 33 | ***************************************************************/ |
---|
| 34 | |
---|
| 35 | // the data structure which functions as external data |
---|
| 36 | typedef struct mpsr_sleftv |
---|
| 37 | { |
---|
| 38 | leftv lv; |
---|
| 39 | ring r; |
---|
| 40 | } mpsr_sleftv; |
---|
| 41 | |
---|
| 42 | typedef mpsr_sleftv * mpsr_leftv; |
---|
| 43 | |
---|
| 44 | |
---|
| 45 | /*************************************************************** |
---|
| 46 | * |
---|
| 47 | * prototypes |
---|
| 48 | * |
---|
| 49 | ***************************************************************/ |
---|
| 50 | // from mpsr_GetMisc.cc |
---|
| 51 | extern int mpsr_rDefault(short ch, char *name, ring &r); |
---|
| 52 | extern ring mpsr_rDefault(short ch); |
---|
| 53 | extern BOOLEAN mpsr_RingEqual(ring r1, ring r2); |
---|
| 54 | extern mpsr_Status_t mpsr_MergeLeftv(mpsr_leftv mlv1, mpsr_leftv mlv2); |
---|
| 55 | extern void mpsr_MapLeftv(leftv l, ring from_ring, ring to_ring); |
---|
| 56 | extern void mpsr_SetCurrRingHdl(ring r); |
---|
| 57 | extern idhdl mpsr_FindIdhdl(char *name, ring &r); |
---|
| 58 | |
---|
| 59 | // from mpsr_GetPoly.cc |
---|
| 60 | extern mpsr_Status_t mpsr_GetRingAnnots(MPT_Node_pt node, ring &r, BOOLEAN &mv); |
---|
| 61 | extern mpsr_Status_t mpsr_GetPoly(MP_Link_pt link, poly &p, MP_Uint32_t nmon, |
---|
| 62 | ring cring); |
---|
| 63 | extern mpsr_Status_t mpsr_GetPolyVector(MP_Link_pt link, poly &p, |
---|
| 64 | MP_Uint32_t nmon, ring cring); |
---|
| 65 | extern mpsr_Status_t mpsr_rSetOrdSgn(ring r); |
---|
| 66 | |
---|
| 67 | // from mpsr_Get.cc |
---|
| 68 | extern mpsr_Status_t mpsr_GetLeftv(MP_Link_pt link, mpsr_leftv mlv, short quote); |
---|
| 69 | |
---|
| 70 | extern mpsr_Status_t mpsr_GetCommonOperatorLeftv(MP_Link_pt link, |
---|
| 71 | MPT_Node_pt node, |
---|
| 72 | mpsr_leftv mlv, |
---|
| 73 | short quote); |
---|
| 74 | extern mpsr_Status_t mpsr_GetOperatorLeftv(MP_Link_pt link, |
---|
| 75 | MPT_Node_pt node, |
---|
| 76 | mpsr_leftv mlv, |
---|
| 77 | short quote); |
---|
| 78 | extern MPT_Status_t mpsr_GetExternalData(MP_Link_pt link, |
---|
| 79 | MPT_Arg_t *odata, |
---|
| 80 | MPT_Node_pt node); |
---|
| 81 | |
---|
| 82 | |
---|
| 83 | /*************************************************************** |
---|
| 84 | * |
---|
| 85 | * inlines |
---|
| 86 | * |
---|
| 87 | ***************************************************************/ |
---|
| 88 | inline BOOLEAN NodeCheck(MPT_Node_pt node, MP_NodeType_t type, |
---|
| 89 | MP_DictTag_t dtag, MP_Common_t cv) |
---|
| 90 | { |
---|
| 91 | mpsr_assume(node != NULL); |
---|
| 92 | return |
---|
| 93 | node->type == type && |
---|
| 94 | MP_COMMON_T(node->nvalue) == cv && |
---|
| 95 | node->dict == dtag; |
---|
| 96 | } |
---|
| 97 | |
---|
| 98 | inline BOOLEAN NodeCheck(MPT_Node_pt node, MP_DictTag_t dtag, MP_Common_t cv) |
---|
| 99 | { |
---|
| 100 | mpsr_assume(node != NULL); |
---|
| 101 | return |
---|
| 102 | MP_COMMON_T(node->nvalue) == cv && |
---|
| 103 | node->dict == dtag; |
---|
| 104 | } |
---|
| 105 | |
---|
| 106 | |
---|
| 107 | inline idhdl mpsr_InitIdhdl(short tok, void *data, char *name) |
---|
| 108 | { |
---|
| 109 | idhdl h = (idhdl) Alloc0(sizeof(idrec)); |
---|
| 110 | IDID(h) = mstrdup(name); |
---|
| 111 | IDTYP(h) = tok; |
---|
| 112 | IDDATA(h) = (char *) data; |
---|
| 113 | |
---|
| 114 | return h; |
---|
| 115 | } |
---|
| 116 | |
---|
| 117 | |
---|
| 118 | #endif |
---|
| 119 | #endif |
---|