Functions | Variables
attrib.cc File Reference
#include <kernel/mod2.h>
#include <omalloc/omalloc.h>
#include <misc/options.h>
#include <misc/intvec.h>
#include <polys/matpol.h>
#include <kernel/polys.h>
#include <kernel/ideals.h>
#include <Singular/tok.h>
#include <Singular/ipid.h>
#include <Singular/ipshell.h>
#include <Singular/attrib.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>

Go to the source code of this file.

Functions

static void attr_free (attr h, const ring r=currRing)
 
void * atGet (idhdl root, const char *name, int t, void *defaultReturnValue)
 
void * atGet (leftv root, const char *name, int t)
 
void atSet (idhdl root, const char *name, void *data, int typ)
 
void atSet (leftv root, const char *name, void *data, int typ)
 
void at_Kill (idhdl root, const char *name, const ring r)
 
void at_KillAll (idhdl root, const ring r)
 
void at_KillAll (leftv root, const ring r)
 
BOOLEAN atATTRIB1 (leftv res, leftv v)
 
BOOLEAN atATTRIB2 (leftv res, leftv v, leftv b)
 
BOOLEAN atATTRIB3 (leftv, leftv v, leftv b, leftv c)
 
BOOLEAN atKILLATTR1 (leftv, leftv a)
 
BOOLEAN atKILLATTR2 (leftv, leftv a, leftv b)
 

Variables

static omBin sattr_bin = omGetSpecBin(sizeof(sattr))
 

Function Documentation

void at_Kill ( idhdl  root,
const char *  name,
const ring  r 
)

Definition at line 209 of file attrib.cc.

210 {
211  attr temp = root->attribute->get(name);
212  if (temp!=NULL)
213  {
214  attr N = temp->next;
215  attr temp1 = root->attribute;
216  if (temp1==temp)
217  {
218  root->attribute = N;
219  }
220  else
221  {
222  while (temp1->next!=temp) temp1 = temp1->next;
223  temp1->next = N;
224  }
225  temp->kill(r);
226  }
227 }
Definition: attrib.h:15
void kill(const ring r)
Definition: attrib.cc:188
const ring r
Definition: syzextra.cc:208
const CanonicalForm CFMap CFMap & N
Definition: cfEzgcd.cc:49
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
attr attribute
Definition: idrec.h:41
attr next
Definition: attrib.h:21
attr get(const char *s)
Definition: attrib.cc:96
void at_KillAll ( idhdl  root,
const ring  r 
)

Definition at line 229 of file attrib.cc.

230 {
231  root->attribute->killAll(r);
232  root->attribute = NULL;
233 }
void killAll(const ring r)
Definition: attrib.cc:196
const ring r
Definition: syzextra.cc:208
#define NULL
Definition: omList.c:10
attr attribute
Definition: idrec.h:41
void at_KillAll ( leftv  root,
const ring  r 
)

Definition at line 235 of file attrib.cc.

236 {
237  root->attribute->killAll(r);
238  root->attribute = NULL;
239 }
void killAll(const ring r)
Definition: attrib.cc:196
const ring r
Definition: syzextra.cc:208
#define NULL
Definition: omList.c:10
attr attribute
Definition: subexpr.h:90
BOOLEAN atATTRIB1 ( leftv  res,
leftv  v 
)

Definition at line 241 of file attrib.cc.

242 {
243  int t;
244  attr *aa=(v->Attribute());
245  if (aa==NULL)
246  {
247  WerrorS("this object cannot have attributes");
248  return TRUE;
249  }
250  attr a=*aa;
251  BOOLEAN haveNoAttribute=TRUE;
252  if (v->e==NULL)
253  {
254  if (hasFlag(v,FLAG_STD))
255  {
256  PrintS("attr:isSB, type int\n");
257  haveNoAttribute=FALSE;
258  }
259  if (hasFlag(v,FLAG_QRING))
260  {
261  PrintS("attr:qringNF, type int\n");
262  haveNoAttribute=FALSE;
263  }
264  if (((t=v->Typ())==RING_CMD)||(t==QRING_CMD))
265  {
266  PrintS("attr:global, type int\n");
267  haveNoAttribute=FALSE;
268  }
269  }
270  else
271  {
272  leftv at=v->LData();
273  return atATTRIB1(res,at);
274  }
275  if (a!=NULL) a->Print();
276  else if(haveNoAttribute) PrintS("no attributes\n");
277  return FALSE;
278 }
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
const poly a
Definition: syzextra.cc:212
Definition: attrib.h:15
void Print()
Definition: attrib.cc:34
Subexpr e
Definition: subexpr.h:106
#define FALSE
Definition: auxiliary.h:140
attr * Attribute()
Definition: subexpr.cc:1352
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:23
int Typ()
Definition: subexpr.cc:955
#define FLAG_QRING
Definition: ipid.h:110
void PrintS(const char *s)
Definition: reporter.cc:294
#define FLAG_STD
Definition: ipid.h:108
BOOLEAN atATTRIB1(leftv res, leftv v)
Definition: attrib.cc:241
#define NULL
Definition: omList.c:10
#define hasFlag(A, F)
Definition: ipid.h:111
Definition: tok.h:126
int BOOLEAN
Definition: auxiliary.h:131
leftv LData()
Definition: subexpr.cc:1366
BOOLEAN atATTRIB2 ( leftv  res,
leftv  v,
leftv  b 
)

Definition at line 279 of file attrib.cc.

280 {
281  char *name=(char *)b->Data();
282  int t;
283  leftv at=NULL;
284  if (v->e!=NULL)
285  at=v->LData();
286  if (strcmp(name,"isSB")==0)
287  {
288  res->rtyp=INT_CMD;
289  res->data=(void *)(long)hasFlag(v,FLAG_STD);
290  if (at!=NULL) res->data=(void *)(long)(hasFlag(v,FLAG_STD)||(hasFlag(at,FLAG_STD)));
291  }
292  else if ((strcmp(name,"rank")==0)&&(v->Typ()==MODUL_CMD))
293  {
294  res->rtyp=INT_CMD;
295  res->data=(void *)(((ideal)v->Data())->rank);
296  }
297  else if ((strcmp(name,"global")==0)
298  &&(((t=v->Typ())==RING_CMD)||(t==QRING_CMD)))
299  {
300  res->rtyp=INT_CMD;
301  res->data=(void *)(((ring)v->Data())->OrdSgn==1);
302  }
303  else if ((strcmp(name,"ring_cf")==0)
304  &&(((t=v->Typ())==RING_CMD)||(t==QRING_CMD)))
305  {
306  res->rtyp=INT_CMD;
307  res->data=(void *)(long)(rField_is_Ring((ring)v->Data()));
308  }
309  else if (strcmp(name,"qringNF")==0)
310  {
311  res->rtyp=INT_CMD;
312  res->data=(void *)(long)hasFlag(v,FLAG_QRING);
313  if (at!=NULL) res->data=(void *)(long)(hasFlag(v,FLAG_QRING)||(hasFlag(at,FLAG_QRING)));
314  }
315 #ifdef HAVE_SHIFTBBA
316  else if ((strcmp(name,"isLPring")==0)
317  &&(((t=v->Typ())==RING_CMD)||(t==QRING_CMD)))
318  {
319  res->rtyp=INT_CMD;
320  res->data=(void *)(long)(((ring)v->Data())->isLPring);
321  }
322 #endif
323  else
324  {
325  attr *aa=v->Attribute();
326  if (aa==NULL)
327  {
328  WerrorS("this object cannot have attributes");
329  return TRUE;
330  }
331  attr a=*aa;
332  a=a->get(name);
333  if (a!=NULL)
334  {
335  res->rtyp=a->atyp;
336  res->data=a->CopyA();
337  }
338  else
339  {
340  res->rtyp=STRING_CMD;
341  res->data=omStrDup("");
342  }
343  }
344  return FALSE;
345 }
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
const poly a
Definition: syzextra.cc:212
Definition: tok.h:85
Definition: attrib.h:15
Subexpr e
Definition: subexpr.h:106
#define FALSE
Definition: auxiliary.h:140
attr * Attribute()
Definition: subexpr.cc:1352
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:23
int Typ()
Definition: subexpr.cc:955
void * data
Definition: subexpr.h:89
void * CopyA()
Definition: subexpr.cc:1918
#define FLAG_QRING
Definition: ipid.h:110
#define FLAG_STD
Definition: ipid.h:108
char name(const Variable &v)
Definition: variable.h:95
static BOOLEAN rField_is_Ring(const ring r)
Definition: ring.h:437
#define NULL
Definition: omList.c:10
#define hasFlag(A, F)
Definition: ipid.h:111
int rtyp
Definition: subexpr.h:92
void * Data()
Definition: subexpr.cc:1097
attr get(const char *s)
Definition: attrib.cc:96
Definition: tok.h:126
leftv LData()
Definition: subexpr.cc:1366
int atyp
Definition: attrib.h:22
#define omStrDup(s)
Definition: omAllocDecl.h:263
BOOLEAN atATTRIB3 ( leftv  ,
leftv  v,
leftv  b,
leftv  c 
)

Definition at line 346 of file attrib.cc.

347 {
348  idhdl h=(idhdl)v->data;
349  int t;
350  if (v->e!=NULL)
351  {
352  v=v->LData();
353  if (v==NULL) return TRUE;
354  h=NULL;
355  }
356  else if (v->rtyp!=IDHDL) h=NULL;
357 
358  char *name=(char *)b->Data();
359  if (strcmp(name,"isSB")==0)
360  {
361  if (c->Typ()!=INT_CMD)
362  {
363  WerrorS("attribute isSB must be int");
364  return TRUE;
365  }
366  if (((long)c->Data())!=0L)
367  {
368  if (h!=NULL) setFlag(h,FLAG_STD);
369  setFlag(v,FLAG_STD);
370  }
371  else
372  {
373  if (h!=NULL) resetFlag(h,FLAG_STD);
374  resetFlag(v,FLAG_STD);
375  }
376  }
377  else if (strcmp(name,"qringNF")==0)
378  {
379  if (c->Typ()!=INT_CMD)
380  {
381  WerrorS("attribute qringNF must be int");
382  return TRUE;
383  }
384  if (((long)c->Data())!=0L)
385  {
386  if (h!=NULL) setFlag(h,FLAG_QRING);
387  setFlag(v,FLAG_QRING);
388  }
389  else
390  {
391  if (h!=NULL) resetFlag(h,FLAG_QRING);
393  }
394  }
395  else if ((strcmp(name,"rank")==0)&&(v->Typ()==MODUL_CMD))
396  {
397  if (c->Typ()!=INT_CMD)
398  {
399  WerrorS("attribute `rank` must be int");
400  return TRUE;
401  }
402  ideal I=(ideal)v->Data();
403  I->rank=si_max((int)I->rank,(int)((long)c->Data()));
404  }
405  else if ((strcmp(name,"global")==0)
406  &&(((t=v->Typ())==RING_CMD)||(t==QRING_CMD)))
407  {
408  WerrorS("can not set attribute `global`");
409  return TRUE;
410  }
411 #ifdef HAVE_SHIFTBBA
412  else if ((strcmp(name,"isLPring")==0)
413  &&(((t=v->Typ())==RING_CMD)||(t==QRING_CMD)))
414  {
415  if (c->Typ()==INT_CMD)
416  ((ring)v->Data())->isLPring=(int)(long)c->Data();
417  else
418  {
419  WerrorS("attribute `isLPring` must be int");
420  return TRUE;
421  }
422  }
423 #endif
424  else
425  {
426  int typ=c->Typ();
427  if (h!=NULL) atSet(h,omStrDup(name),c->CopyD(typ),typ/*c->T(yp()*/);
428  else atSet(v,omStrDup(name),c->CopyD(typ),typ/*c->T(yp()*/);
429  }
430  return FALSE;
431 }
void atSet(idhdl root, const char *name, void *data, int typ)
Definition: attrib.cc:156
Definition: tok.h:85
Subexpr e
Definition: subexpr.h:106
#define FALSE
Definition: auxiliary.h:140
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:23
int Typ()
Definition: subexpr.cc:955
int int kStrategy strat if(h==NULL) return NULL
Definition: idrec.h:34
#define IDHDL
Definition: tok.h:35
void * data
Definition: subexpr.h:89
#define setFlag(A, F)
Definition: ipid.h:112
static int si_max(const int a, const int b)
Definition: auxiliary.h:166
idrec * idhdl
Definition: ring.h:18
#define FLAG_QRING
Definition: ipid.h:110
#define FLAG_STD
Definition: ipid.h:108
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
int rtyp
Definition: subexpr.h:92
void * Data()
Definition: subexpr.cc:1097
Definition: tok.h:126
#define resetFlag(A, F)
Definition: ipid.h:113
static Poly * h
Definition: janet.cc:978
leftv LData()
Definition: subexpr.cc:1366
void * CopyD(int t)
Definition: subexpr.cc:662
#define omStrDup(s)
Definition: omAllocDecl.h:263
void* atGet ( idhdl  root,
const char *  name,
int  t,
void *  defaultReturnValue 
)

Definition at line 135 of file attrib.cc.

136 {
137  attr temp = root->attribute->get(name);
138  if ((temp!=NULL) && (temp->atyp==t))
139  return temp->data;
140  else
141  return defaultReturnValue;
142 }
Definition: attrib.h:15
void * data
Definition: attrib.h:20
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
attr attribute
Definition: idrec.h:41
attr get(const char *s)
Definition: attrib.cc:96
int atyp
Definition: attrib.h:22
void* atGet ( leftv  root,
const char *  name,
int  t 
)

Definition at line 144 of file attrib.cc.

145 {
146  attr *a=(root->Attribute());
147  if (a!=NULL)
148  {
149  attr temp = (*a)->get(name);
150  if ((temp!=NULL) && (temp->atyp==t))
151  return temp->data;
152  }
153  return NULL;
154 }
const poly a
Definition: syzextra.cc:212
Definition: attrib.h:15
attr * Attribute()
Definition: subexpr.cc:1352
void * data
Definition: attrib.h:20
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
attr get(const char *s)
Definition: attrib.cc:96
int atyp
Definition: attrib.h:22
BOOLEAN atKILLATTR1 ( leftv  ,
leftv  a 
)

Definition at line 433 of file attrib.cc.

434 {
435  idhdl h=NULL;
436  if ((a->rtyp==IDHDL)&&(a->e==NULL))
437  {
438  h=(idhdl)a->data;
440  }
441  resetFlag(a,FLAG_STD);
442  if (h->attribute!=NULL)
443  {
444  atKillAll(h);
445  a->attribute=NULL;
446  }
447  else atKillAll(a);
448  return FALSE;
449 }
Subexpr e
Definition: subexpr.h:106
#define FALSE
Definition: auxiliary.h:140
Definition: idrec.h:34
#define IDHDL
Definition: tok.h:35
void * data
Definition: subexpr.h:89
idrec * idhdl
Definition: ring.h:18
#define FLAG_STD
Definition: ipid.h:108
#define atKillAll(H)
Definition: attrib.h:42
#define NULL
Definition: omList.c:10
attr attribute
Definition: idrec.h:41
int rtyp
Definition: subexpr.h:92
attr attribute
Definition: subexpr.h:90
#define resetFlag(A, F)
Definition: ipid.h:113
static Poly * h
Definition: janet.cc:978
BOOLEAN atKILLATTR2 ( leftv  ,
leftv  a,
leftv  b 
)

Definition at line 450 of file attrib.cc.

451 {
452  if ((a->rtyp!=IDHDL)||(a->e!=NULL))
453  {
454  WerrorS("object must have a name");
455  return TRUE;
456  }
457  char *name=(char *)b->Data();
458  if (strcmp(name,"isSB")==0)
459  {
460  resetFlag(a,FLAG_STD);
462  }
463  else if (strcmp(name,"global")==0)
464  {
465  WerrorS("can not set attribut `global`");
466  return TRUE;
467  }
468  else
469  {
470  atKill((idhdl)a->data,name);
471  }
472  return FALSE;
473 }
Subexpr e
Definition: subexpr.h:106
#define FALSE
Definition: auxiliary.h:140
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:23
Definition: idrec.h:34
#define IDHDL
Definition: tok.h:35
void * data
Definition: subexpr.h:89
#define atKill(H, A)
Definition: attrib.h:44
#define FLAG_STD
Definition: ipid.h:108
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
int rtyp
Definition: subexpr.h:92
void * Data()
Definition: subexpr.cc:1097
#define resetFlag(A, F)
Definition: ipid.h:113
void atSet ( idhdl  root,
const char *  name,
void *  data,
int  typ 
)

Definition at line 156 of file attrib.cc.

157 {
158  if (root!=NULL)
159  {
160  if ((IDTYP(root)!=RING_CMD)
161  && (IDTYP(root)!=QRING_CMD)
162  && (!RingDependend(IDTYP(root)))&&(RingDependend(typ)))
163  WerrorS("cannot set ring-dependend objects at this type");
164  else
165  root->attribute=root->attribute->set(name,data,typ);
166  }
167 }
attr set(const char *s, void *data, int t)
Definition: attrib.cc:73
void WerrorS(const char *s)
Definition: feFopen.cc:23
#define IDTYP(a)
Definition: ipid.h:118
int RingDependend(int t)
Definition: gentable.cc:23
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
attr attribute
Definition: idrec.h:41
Definition: tok.h:126
void atSet ( leftv  root,
const char *  name,
void *  data,
int  typ 
)

Definition at line 169 of file attrib.cc.

170 {
171  if (root!=NULL)
172  {
173  attr *a=root->Attribute();
174  int rt=root->Typ();
175  if (a==NULL)
176  WerrorS("cannot set attributes of this object");
177  else if ((rt!=RING_CMD)
178  && (rt!=QRING_CMD)
179  && (!RingDependend(rt))&&(RingDependend(typ)))
180  WerrorS("cannot set ring-dependend objects at this type");
181  else
182  {
183  *a=(*a)->set(name,data,typ);
184  }
185  }
186 }
const poly a
Definition: syzextra.cc:212
attr set(const char *s, void *data, int t)
Definition: attrib.cc:73
Definition: attrib.h:15
attr * Attribute()
Definition: subexpr.cc:1352
void WerrorS(const char *s)
Definition: feFopen.cc:23
int Typ()
Definition: subexpr.cc:955
int RingDependend(int t)
Definition: gentable.cc:23
char name(const Variable &v)
Definition: variable.h:95
#define NULL
Definition: omList.c:10
Definition: tok.h:126
static void attr_free ( attr  h,
const ring  r = currRing 
)
static

Definition at line 64 of file attrib.cc.

65 {
66  if (h->data!=NULL) /*avoid assume failure */
67  {
68  s_internalDelete(h->atyp,h->data,r);
69  h->data=NULL;
70  }
71 }
void * data
Definition: attrib.h:20
const ring r
Definition: syzextra.cc:208
void s_internalDelete(const int t, void *d, const ring r)
Definition: subexpr.cc:464
#define NULL
Definition: omList.c:10
int atyp
Definition: attrib.h:22

Variable Documentation

omBin sattr_bin = omGetSpecBin(sizeof(sattr))
static

Definition at line 32 of file attrib.cc.