MCPcopy Create free account
hub / github.com/Singular/Singular / iiAssign_sys

Function iiAssign_sys

Singular/ipassign.cc:1513–1586  ·  view source on GitHub ↗

2 * assign sys_var = val */

Source from the content-addressed store, hash-verified

1511* assign sys_var = val
1512*/
1513static BOOLEAN iiAssign_sys(leftv l, leftv r)
1514{
1515 int rt=r->Typ();
1516
1517 if (rt==0)
1518 {
1519 if (!errorreported) Werror("`%s` is undefined",r->Fullname());
1520 return TRUE;
1521 }
1522 int i=0;
1523 int lt=l->rtyp;
1524 while (((dAssign_sys[i].res!=lt)
1525 || (dAssign_sys[i].arg!=rt))
1526 && (dAssign_sys[i].res!=0)) i++;
1527 if (dAssign_sys[i].res!=0)
1528 {
1529 if (!dAssign_sys[i].p(l,r))
1530 {
1531 // everything ok, clean up
1532 return FALSE;
1533 }
1534 }
1535 // implicite type conversion ----------------------------------------------
1536 if (dAssign_sys[i].res==0)
1537 {
1538 int ri;
1539 leftv rn = (leftv)omAlloc0Bin(sleftv_bin);
1540 BOOLEAN failed=FALSE;
1541 i=0;
1542 while ((dAssign_sys[i].res!=lt)
1543 && (dAssign_sys[i].res!=0)) i++;
1544 while (dAssign_sys[i].res==lt)
1545 {
1546 if ((ri=iiTestConvert(rt,dAssign_sys[i].arg))!=0)
1547 {
1548 failed= ((iiConvert(rt,dAssign_sys[i].arg,ri,r,rn))
1549 || (dAssign_sys[i].p(l,rn)));
1550 // everything done, clean up temp. variables
1551 rn->CleanUp();
1552 omFreeBin((ADDRESS)rn, sleftv_bin);
1553 if (failed)
1554 {
1555 // leave loop, goto error handling
1556 break;
1557 }
1558 else
1559 {
1560 // everything ok, return
1561 return FALSE;
1562 }
1563 }
1564 i++;
1565 }
1566 // error handling ---------------------------------------------------
1567 if(!errorreported)
1568 {
1569 Werror("`%s` = `%s` is not supported"
1570 ,Tok2Cmdname(lt),Tok2Cmdname(rt));

Callers 1

ipassign.ccFile · 0.85

Calls 9

WerrorFunction · 0.85
omAlloc0BinFunction · 0.85
iiConvertFunction · 0.85
omFreeBinFunction · 0.85
FullnameMethod · 0.80
CleanUpMethod · 0.80
iiTestConvertFunction · 0.70
Tok2CmdnameFunction · 0.70
TypMethod · 0.45

Tested by

no test coverage detected