Changeset 58bbda in git for Singular/ipassign.cc
- Timestamp:
- Jun 17, 1997, 11:44:32 AM (27 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- 623e7ca4e8b2344c62d7c256c94ecdb52b6d1cdb
- Parents:
- 388fe1e36784de6985ec8bb9daeb7bd4f2c0c751
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/ipassign.cc
r388fe1e r58bbda 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: ipassign.cc,v 1.13 1997-06-17 09:44:25 Singular Exp $ */ 5 4 6 /* 5 7 * ABSTRACT: interpreter: … … 107 109 { 108 110 #ifdef HAVE_TCL 109 if (!tclmode) 111 if (!tclmode) 110 112 #endif 111 113 pShortOut=(int)a->Data(); … … 271 273 return TRUE; 272 274 } 273 } 275 } 274 276 } 275 277 else … … 467 469 ,{jiA_STRING, STRING_CMD, STRING_CMD } 468 470 ,{jiA_STRING, PROC_CMD, STRING_CMD } 471 ,{jiA_STRING, PROC_CMD, PROC_CMD } 469 472 ,{jiA_POLY, VECTOR_CMD, VECTOR_CMD } 470 473 ,{jiA_INTVEC, INTVEC_CMD, INTVEC_CMD } … … 490 493 #ifdef HAVE_RTIMER 491 494 ,{jjRTIMER, VRTIMER, INT_CMD } 492 #endif 495 #endif 493 496 ,{jjMAXDEG, VMAXDEG, INT_CMD } 494 497 ,{jjMAXMULT, VMAXMULT, INT_CMD } … … 501 504 /*=================== operations ============================*/ 502 505 /*2 503 * assign a = b 506 * assign a = b 504 507 */ 505 508 static BOOLEAN jiAssign_1(leftv l, leftv r) … … 511 514 return TRUE; 512 515 } 513 516 514 517 int lt=l->Typ(); 515 518 if((lt==0)&&(l->name!=NULL)) … … 523 526 return TRUE; 524 527 } 525 528 526 529 int i=0; 527 530 BOOLEAN nok=FALSE; … … 549 552 if ((l->data==r->data)&&(l->e==NULL)&&(r->e==NULL)) 550 553 return FALSE; 551 } 554 } 555 leftv ld=l; 556 if ((l->rtyp==IDHDL)&&(lt!=QRING_CMD)&&(lt!=RING_CMD)) 557 ld=(leftv)l->data; 552 558 while (((dAssign[i].res!=lt) 553 559 || (dAssign[i].arg!=rt)) … … 556 562 { 557 563 BOOLEAN b; 558 leftv ld=l;559 if ((l->rtyp==IDHDL)&&(lt!=QRING_CMD)&&(lt!=RING_CMD))560 ld=(leftv)l->data;561 564 b=dAssign[i].p(ld,r,l->e); 565 if(l!=ld) /* i.e. l is IDHDL, l->data is ld */ 566 { 567 l->flag=ld->flag; 568 l->attribute=ld->attribute; 569 } 562 570 return b; 563 571 } … … 578 586 if(!failed) 579 587 { 580 if((l->rtyp==IDHDL)&&(lt!=QRING_CMD)&&(lt!=RING_CMD)) 581 failed=dAssign[i].p((leftv)l->data,rn,l->e); 582 else 583 failed= dAssign[i].p(l,rn,l->e); 584 } 588 failed= dAssign[i].p(ld,rn,l->e); 589 } 585 590 // everything done, clean up temp. variables 586 591 rn->CleanUp(); … … 593 598 else 594 599 { 600 if(l!=ld) /* i.e. l is IDHDL, l->data is ld */ 601 { 602 l->flag=ld->flag; 603 l->attribute=ld->attribute; 604 } 595 605 // everything ok, return 596 606 return FALSE; … … 922 932 nok=jiAssign_1(l,&t); 923 933 l->next=h; 924 if (nok) 934 if (nok) 925 935 { 926 936 idDelete((ideal *)&m); … … 959 969 nok=TRUE; 960 970 break; 961 } 962 } 963 ende: 971 } 972 } 973 ende: 964 974 or->CleanUp(); 965 975 ol->CleanUp(); … … 993 1003 l->next=NULL; 994 1004 nok=jiAssign_1(l,&t); 995 if (nok) 1005 if (nok) 996 1006 { 997 1007 break; … … 1016 1026 atKillAll((idhdl)l); 1017 1027 l->attribute=NULL; 1018 } 1028 } 1019 1029 l->flag=0; 1020 1030 lists li; 1021 if (l->rtyp==IDHDL) 1031 if (l->rtyp==IDHDL) 1022 1032 { 1023 1033 li=IDLIST((idhdl)l->data); 1024 } 1034 } 1025 1035 else 1026 1036 { … … 1054 1064 b=iiAssign(ld,r); 1055 1065 l->e->next=ld->e; 1056 } 1066 } 1057 1067 return b; 1058 1068 } … … 1101 1111 { 1102 1112 IDFLAG((idhdl)l->data)=0; 1103 } 1113 } 1104 1114 l->flag=0; 1105 1115 if (ll==1) … … 1108 1118 if((l->e!=NULL) 1109 1119 && (((l->rtyp==IDHDL) && (IDTYP((idhdl)l->data)==LIST_CMD)) 1110 || (l->rtyp==LIST_CMD))) 1120 || (l->rtyp==LIST_CMD))) 1111 1121 { 1112 1122 if(r->next!=NULL) 1113 1123 b=jiA_L_LIST(l,r); 1114 else 1124 else 1115 1125 b=jiAssign_list(l,r); 1116 1126 if((l->rtyp==IDHDL) && (l->data!=NULL)) … … 1119 1129 l->attribute=IDATTR((idhdl)l->data); 1120 1130 l->flag=IDFLAG((idhdl)l->data); 1121 } 1131 } 1122 1132 r->CleanUp(); 1123 1133 Subexpr h; … … 1155 1165 l->flag=IDFLAG((idhdl)l->data); 1156 1166 l->CleanUp(); 1157 } 1167 } 1158 1168 r->CleanUp(); 1159 1169 return b; 1160 } 1170 } 1161 1171 if ((lt!=LIST_CMD) 1162 1172 &&((rt==MATRIX_CMD) … … 1164 1174 ||(rt==INTVEC_CMD) 1165 1175 ||(rt==MODUL_CMD))) 1166 { 1176 { 1167 1177 b=jiAssign_1(l,r); 1168 1178 if((l->rtyp==IDHDL)&&(l->data!=NULL)) … … 1171 1181 l->attribute=IDATTR((idhdl)l->data); 1172 1182 l->flag=IDFLAG((idhdl)l->data); 1173 } 1183 } 1174 1184 r->CleanUp(); 1175 1185 Subexpr h;
Note: See TracChangeset
for help on using the changeset viewer.