1 #ifndef LISTS_H
2 #define LISTS_H
3 /****************************************
4 *  Computer Algebra System SINGULAR     *
5 ****************************************/
6 /*
7 * ABSTRACT: handling of the list type
8 */
9 #include "omalloc/omalloc.h"
10 
11 #include "kernel/structs.h"
12 #include "kernel/ideals.h"
13 #include "Singular/subexpr.h"
14 #include "Singular/tok.h"
15 
16 #ifdef MDEBUG
17 #define INLINE_THIS
18 #else
19 #define INLINE_THIS inline
20 #endif
21 
22 EXTERN_VAR omBin slists_bin;
23 class slists
24 {
25   public:
26     void Clean(ring r=currRing)
27     {
28       assume (this!=NULL);
29 
30       if (nr>=0)
31       {
32         int i;
33         for(i=nr;i>=0;i--)
34         {
35           if (m[i].rtyp!=DEF_CMD) m[i].CleanUp(r);
36         }
37         omFreeSize((ADDRESS)m, (nr+1)*sizeof(sleftv));
38         nr=-1;
39       }
40       //omFreeSize((ADDRESS)this, sizeof(slists));
41       omFreeBin((ADDRESS)this,slists_bin);
42     }
43     INLINE_THIS void Init(int l=0);
44     int    nr; /* the number of elements in the list -1 */
45                /* -1: empty list */
46     sleftv  *m;  /* field of sleftv */
47 };
48 
49 typedef slists *           lists;
50 
51 int lSize(lists L);
52 lists lCopy(lists L);
53 lists lInsert0(lists ul, leftv v, int pos);
54 BOOLEAN lInsert(leftv res, leftv u, leftv v);
55 BOOLEAN lInsert3(leftv res, leftv u, leftv v, leftv w);
56 BOOLEAN lAppend(leftv res, leftv u, leftv v);
57 BOOLEAN lDelete(leftv res, leftv u, leftv v);
58 BOOLEAN lAdd(leftv res, leftv u, leftv v);
59 BOOLEAN lRingDependend(lists L);
60 char* lString(lists l, BOOLEAN typed = FALSE, int dim = 1);
61 
62 
63 lists liMakeResolv(resolvente r, int length, int reallen, int typ0, intvec ** weights,int add_row_shift);
64 resolvente liFindRes(lists L, int * len, int *typ0,intvec *** weights=NULL);
65 
66 #if ! defined(MDEBUG) || defined(LISTS_CC)
Init(int l)67 INLINE_THIS void slists::Init(int l)
68       { nr=l-1; m=(sleftv *)((l>0) ? omAlloc0(l*sizeof(sleftv)): NULL);
69       }
70 #endif
71 
72 #undef INLINE_THIS
73 
74 #endif
75