Go to the source code of this file.
|
int | newstruct_desc_size () |
|
static int | NeedShadowRing (int t) |
|
char * | newstruct_String (blackbox *b, void *d) |
|
lists | lCopy_newstruct (lists L) |
|
void * | newstruct_Copy (blackbox *, void *d) |
|
BOOLEAN | newstruct_Assign_user (int op, leftv l, leftv r) |
|
void | lClean_newstruct (lists l) |
|
static BOOLEAN | newstruct_Assign_same (leftv l, leftv r) |
|
BOOLEAN | newstruct_Op1 (int op, leftv res, leftv arg) |
|
BOOLEAN | newstruct_Assign (leftv l, leftv r) |
|
BOOLEAN | newstruct_Op2 (int op, leftv res, leftv a1, leftv a2) |
|
BOOLEAN | newstruct_OpM (int op, leftv res, leftv args) |
|
void | newstruct_destroy (blackbox *, void *d) |
|
void * | newstruct_Init (blackbox *b) |
|
BOOLEAN | newstruct_CheckAssign (blackbox *, leftv L, leftv R) |
|
BOOLEAN | newstruct_serialize (blackbox *b, void *d, si_link f) |
|
BOOLEAN | newstruct_deserialize (blackbox **, void **d, si_link f) |
|
void | newstruct_Print (blackbox *b, void *d) |
|
void | newstruct_setup (const char *n, newstruct_desc d) |
|
static newstruct_desc | scanNewstructFromString (const char *s, newstruct_desc res) |
|
newstruct_desc | newstructFromString (const char *s) |
|
newstruct_desc | newstructChildFromString (const char *parent, const char *s) |
|
void | newstructShow (newstruct_desc d) |
|
BOOLEAN | newstruct_set_proc (const char *bbname, const char *func, int args, procinfov pr) |
|
◆ newstruct_member_s
struct newstruct_member_s |
Definition at line 15 of file newstruct.cc.
Data Fields |
char * |
name |
|
newstruct_member |
next |
|
int |
pos |
|
int |
typ |
|
◆ newstruct_proc_a
◆ newstruct_desc_s
Definition at line 33 of file newstruct.cc.
Data Fields |
int |
id |
|
newstruct_member |
member |
|
newstruct_desc |
parent |
|
newstruct_proc |
procs |
|
int |
size |
|
◆ lClean_newstruct()
void lClean_newstruct |
( |
lists | l | ) |
|
Definition at line 217 of file newstruct.cc.
218{
220 {
223 for(
i=
l->nr;
i>=0;
i--)
224 {
226 r=(ring)(
l->m[
i-1].data);
227 else
230 }
233 }
235}
Class used for (list of) interpreter objects.
#define omFreeSize(addr, size)
#define omFreeBin(addr, bin)
◆ lCopy_newstruct()
Definition at line 134 of file newstruct.cc.
135{
140 for(;n>=0;n--)
141 {
144 {
147 {
150 N->m[n].Copy(&L->
m[n]);
151 }
152 else
153 {
154 N->m[n].rtyp=L->
m[n].
rtyp;
156 }
157 }
159 {
160 N->m[n].rtyp=L->
m[n].
rtyp;
162 }
164 {
165 N->m[n].rtyp=L->
m[n].
rtyp;
167 N->m[n].data=(
void *)
b->blackbox_Copy(
b,L->
m[n].
data);
168 }
169 else
170 N->m[n].Copy(&L->
m[n]);
171 }
174}
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
const CanonicalForm CFMap CFMap & N
static int RingDependend(int t)
void * idrecDataInit(int t)
BOOLEAN lRingDependend(lists L)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
◆ NeedShadowRing()
static int NeedShadowRing |
( |
int | t | ) |
|
|
inlinestatic |
◆ newstruct_Assign()
Definition at line 287 of file newstruct.cc.
288{
290 if (
l->Typ()==r->
Typ())
291 {
293 }
295 {
297 if (
l->Typ()!=r->
Typ())
298 {
299 newstruct_desc rrn=(newstruct_desc)rr->data;
300
302 {
303 Werror(
"custom type %s(%d) cannot be assigned to newstruct %s(%d)",
306 }
307
308
309 newstruct_desc rrp=rrn->parent;
310 while ((rrp!=
NULL)&&(rrp->id!=
l->Typ())) rrp=rrp->parent;
312 {
314 {
316 }
317 else
318 {
320 }
321 }
322 else
323 {
327 }
328 }
329 if (
l->Typ()==r->
Typ())
330 {
332 }
333 }
334 else
335 {
338 }
339 Werror(
"assign %s(%d) = %s(%d)",
342}
const char * Tok2Cmdname(int tok)
BOOLEAN newstruct_Assign_user(int op, leftv l, leftv r)
static BOOLEAN newstruct_Assign_same(leftv l, leftv r)
BOOLEAN newstruct_Op1(int op, leftv res, leftv arg)
BOOLEAN newstruct_Assign(leftv l, leftv r)
void Werror(const char *fmt,...)
◆ newstruct_Assign_same()
Definition at line 237 of file newstruct.cc.
238{
241 {
244 }
249 {
251 }
252 else
253 {
255 }
257}
void CleanUp(ring r=currRing)
void lClean_newstruct(lists l)
lists lCopy_newstruct(lists L)
◆ newstruct_Assign_user()
Definition at line 182 of file newstruct.cc.
183{
186 newstruct_desc nt=(newstruct_desc)ll->data;
187 newstruct_proc
p=nt->procs;
188
189 while( (
p!=
NULL) && ((
p->t!=
'=')||(
p->args!=1)) )
p=
p->next;
190
192 {
202 if (!sl)
203 {
205 {
209 }
212 }
213 }
215}
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
INST_VAR sleftv iiRETURNEXPR
◆ newstruct_CheckAssign()
Definition at line 557 of file newstruct.cc.
558{
562 {
565 if ((rt>0) && (lt>0)
567 {
568 Werror(
"can not assign %s(%d) to member of type %s(%d)",
569 rt1,rt,lt1,lt);
570 }
571 else
572 {
573 Werror(
"can not assign %s to member of type %s",rt1,lt1);
574 }
576 }
578}
int iiTestConvert(int inputType, int outputType)
const struct sConvertTypes dConvertTypes[]
◆ newstruct_Copy()
void * newstruct_Copy |
( |
blackbox * | , |
|
|
void * | d ) |
◆ newstruct_desc_size()
int newstruct_desc_size |
( |
| ) |
|
◆ newstruct_deserialize()
Definition at line 644 of file newstruct.cc.
645{
646
647
648
649
651 int Ll=(int)(
long)
l->data;
655 for(
int i=0;
i<=Ll;
i++)
656 {
659 {
662 }
663 }
664
665
666 *d=L;
668}
INLINE_THIS void Init(int l=0)
EXTERN_VAR omBin sleftv_bin
◆ newstruct_destroy()
void newstruct_destroy |
( |
blackbox * | , |
|
|
void * | d ) |
◆ newstruct_Init()
void * newstruct_Init |
( |
blackbox * | b | ) |
|
Definition at line 536 of file newstruct.cc.
537{
538 newstruct_desc n=(newstruct_desc)
b->data;
541 newstruct_member nm=n->member;
543 {
544 l->m[nm->pos].rtyp=nm->typ;
546 {
550 }
552 nm=nm->next;
553 }
555}
static int NeedShadowRing(int t)
static ring rIncRefCnt(ring r)
◆ newstruct_Op1()
Definition at line 259 of file newstruct.cc.
260{
261
263 newstruct_desc nt=(newstruct_desc)a->data;
264 newstruct_proc
p=nt->procs;
265
266 while((
p!=
NULL) &&( (
p->t!=op) || (
p->args!=1) ))
p=
p->next;
267
269 {
277 else
278 {
282 }
283 }
285}
BOOLEAN blackboxDefaultOp1(int op, leftv l, leftv r)
default procedure blackboxDefaultOp1, to be called as "default:" branch
◆ newstruct_Op2()
Definition at line 344 of file newstruct.cc.
345{
346
348 newstruct_desc nt;
351 {
352 nt=(newstruct_desc)a->data;
353 switch(op)
354 {
355 case '.':
356 {
358 {
360 newstruct_member nm=nt->member;
361 while ((nm!=
NULL)&&(strcmp(nm->name,a2->
name)!=0)) nm=nm->next;
362 if ((nm==
NULL) && (strncmp(a2->
name,
"r_",2)==0))
363 {
364 nm=nt->member;
365 while ((nm!=
NULL)&&(strcmp(nm->name,a2->
name+2)!=0)) nm=nm->next;
368 else
370 }
372 {
375 }
376 if (search_ring)
377 {
378 ring r=(ring)al->
m[nm->pos-1].
data;
381 {
384 WerrorS(
"ring of this member is not set and no basering found");
385 }
390 }
393 {
395 {
396
397 ring r=(ring)al->
m[nm->pos-1].
data;
399 {
403 }
404 }
406 {
407
409
410 }
411 else
412 {
413
415
416 }
418 }
420 {
422 {
423 ring old=(ring)al->
m[nm->pos-1].
data;
425 }
428 }
430 r->start = nm->pos+1;
434 else
435 {
437 while (sh->next !=
NULL) sh=sh->next;
438 sh->next=r;
439 }
440
443 }
444 else
445 {
448 }
449 }
450 }
451 }
452 else
453 {
455 nt=(newstruct_desc)a->data;
457 }
458 newstruct_proc
p=nt->procs;
459 while((
p!=
NULL) && ( (
p->t!=op) || (
p->args!=2) ))
p=
p->next;
461 {
475 else
476 {
480 }
481 }
483}
BOOLEAN blackboxDefaultOp2(int, leftv, leftv, leftv)
default procedure blackboxDefaultOp2, to be called as "default:" branch
void WerrorS(const char *s)
static void rDecRefCnt(ring r)
◆ newstruct_OpM()
Definition at line 486 of file newstruct.cc.
487{
488
490 newstruct_desc nt=(newstruct_desc)a->data;
491 switch(op)
492 {
494 {
495 res->data=(
void *)a->blackbox_String(a,args->
Data());
499 }
500 default:
501 break;
502 }
503 newstruct_proc
p=nt->procs;
504
505 while((
p!=
NULL) &&( (
p->t!=op) || (
p->args!=4) ))
p=
p->next;
506
508 {
517 else
518 {
522 }
523 }
525}
BOOLEAN blackboxDefaultOpM(int op, leftv res, leftv args)
default procedure blackboxDefaultOpM, to be called as "default:" branch
◆ newstruct_Print()
void newstruct_Print |
( |
blackbox * | b, |
|
|
void * | d ) |
Definition at line 670 of file newstruct.cc.
671{
672 newstruct_desc dd=(newstruct_desc)
b->data;
673 newstruct_proc
p=dd->procs;
677 {
689 if (!sl)
690 {
693 }
695 }
696 else
698}
void blackbox_default_Print(blackbox *b, void *d)
default procedure blackbox_default_Print: print the string
void * newstruct_Copy(blackbox *, void *d)
◆ newstruct_serialize()
Definition at line 602 of file newstruct.cc.
603{
604 newstruct_desc dd=(newstruct_desc)
b->data;
613 l.data=(
void*)(
long)Ll;
615
617 newstruct_member elem=dd->member;
619 {
620 rings[elem->pos]='\1';
621 elem=elem->next;
622 }
627 {
629 {
631 {
634 }
635 }
636 f->m->Write(
f,&(ll->
m[
i]));
637 }
639 if (ring_changed && (save_ring!=
NULL))
640 f->m->SetRing(
f,save_ring,
FALSE);
642}
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
◆ newstruct_set_proc()
Definition at line 857 of file newstruct.cc.
858{
859 int id=0;
862 {
863 Werror(
">>%s<< is not a newstruct type",bbname);
865 }
867 newstruct_desc desc=(newstruct_desc)bb->data;
868 newstruct_proc
p=(newstruct_proc)
omAlloc(
sizeof(*
p));
869 p->next=desc->procs; desc->procs=
p;
870
873
874 int tt;
875 if(!(tt=
IsCmd(func,
p->t)))
876 {
877 int t;
879 {
884 ||(t=='='))
886 else if (t=='(')
888 else if (t=='-')
890 }
891 else
892 {
895 Werror(
">>%s<< is not a kernel command",func);
898 }
899 }
900 switch(tt)
901 {
902
909
911 if(args!=1) {
Warn(
"args must be 1 for %s in %s",func,
my_yylinebuf);args=1;}
912 break;
915 break;
918 break;
921 break;
924 break;
927 break;
930 break;
934 break;
935 default:
937 break;
938 }
941 {
945 }
950}
int blackboxIsCmd(const char *n, int &tok)
used by scanner: returns ROOT_DECL for known types (and the type number in tok)
VAR char my_yylinebuf[80]
int IsCmd(const char *n, int &tok)
int iiOpsTwoChar(const char *s)
◆ newstruct_setup()
void newstruct_setup |
( |
const char * | n, |
|
|
newstruct_desc | d ) |
Definition at line 699 of file newstruct.cc.
700{
701 blackbox *
b=(blackbox*)
omAlloc0(
sizeof(blackbox));
702
703
704
713
721 d->id=rt;
722
723}
int setBlackboxStuff(blackbox *bb, const char *n)
define a new type
BOOLEAN newstruct_Op2(int op, leftv res, leftv a1, leftv a2)
BOOLEAN newstruct_deserialize(blackbox **, void **d, si_link f)
void newstruct_destroy(blackbox *, void *d)
char * newstruct_String(blackbox *b, void *d)
BOOLEAN newstruct_serialize(blackbox *b, void *d, si_link f)
void * newstruct_Init(blackbox *b)
BOOLEAN newstruct_OpM(int op, leftv res, leftv args)
BOOLEAN newstruct_CheckAssign(blackbox *, leftv L, leftv R)
void newstruct_Print(blackbox *b, void *d)
◆ newstruct_String()
char * newstruct_String |
( |
blackbox * | b, |
|
|
void * | d ) |
Definition at line 50 of file newstruct.cc.
51{
53 else
54 {
55 newstruct_desc ad=(newstruct_desc)(
b->data);
56
57 newstruct_proc
p=ad->procs;
60
62 {
74
76 {
80 }
83 }
84
86 newstruct_member a=ad->member;
89 {
93
96 {
97
99 {
101 }
102 else
104 {
106 }
107 else
108 {
109 char *
tmp2=
l->m[a->pos].String();
111 {
115 }
118 }
119 }
120 else
121 {
125 }
126 if (a->next==
NULL)
break;
129 a=a->next;
130 }
132 }
133}
void StringSetS(const char *st)
void StringAppendS(const char *st)
◆ newstructChildFromString()
newstruct_desc newstructChildFromString |
( |
const char * | parent, |
|
|
const char * | s ) |
Definition at line 810 of file newstruct.cc.
811{
812
813 int parent_id=0;
816 {
817 Werror(
">>%s< not found",parent);
819 }
821
823 {
824 Werror(
">>%s< is not a user defined type",parent);
826 }
827
829 newstruct_desc parent_desc=(newstruct_desc)parent_bb->data;
830 res->size=parent_desc->size;
831 res->member=parent_desc->member;
832 res->parent=parent_desc;
833
835}
const CanonicalForm int s
static newstruct_desc scanNewstructFromString(const char *s, newstruct_desc res)
◆ newstructFromString()
newstruct_desc newstructFromString |
( |
const char * | s | ) |
|
◆ newstructShow()
void newstructShow |
( |
newstruct_desc | d | ) |
|
Definition at line 837 of file newstruct.cc.
838{
839 newstruct_member elem;
840 Print(
"id: %d\n",d->id);
841 elem=d->member;
843 {
844 Print(
">>%s<< at pos %d, type %d (%s)\n",elem->name,elem->pos,elem->typ,
Tok2Cmdname(elem->typ));
846 Print(
">>r_%s<< at pos %d, shadow ring\n",elem->name,elem->pos-1);
847 elem=elem->next;
848 }
849 newstruct_proc
p=d->procs;
851 {
852 Print(
"op:%d(%s) with %d args -> %s\n",
p->t,
iiTwoOps(
p->t),
p->args,
p->p->procname);
854 }
855}
const char * iiTwoOps(int t)
◆ scanNewstructFromString()
static newstruct_desc scanNewstructFromString |
( |
const char * | s, |
|
|
newstruct_desc | res ) |
|
static |
Definition at line 725 of file newstruct.cc.
726{
729 char *start;
730 int t;
731 char c;
732 newstruct_member elem;
733
737 {
738
739 while ((*
p!=
'\0') && (*
p<=
' '))
p++;
741 while (isalnum(*
p))
p++;
744 if (t==0)
745 {
746 Werror(
"unknown type `%s`",start);
751 }
755
756 elem=(newstruct_member)
omAlloc0(
sizeof(*elem));
757
759 while ((*
p!=
'\0') && (*
p<=
' '))
p++;
761 while (isalnum(*
p))
p++;
764 elem->typ=t;
766 if ((*start=='\0') ||(isdigit(*start)))
767 {
768 WerrorS(
"illegal/empty name for element");
769 goto error_in_newstruct_def;
770 }
772
773 elem->next=
res->member;
776
777
779 while ((*
p!=
'\0') && (*
p<=
' '))
p++;
781 {
783 {
784 Werror(
"unknown character in newstruct:>>%s<<",
p);
785 goto error_in_newstruct_def;
786 }
787 break;
788 }
790 }
793
794
796error_in_newstruct_def:
802}