Changeset 5e147a in git


Ignore:
Timestamp:
Feb 17, 2011, 2:55:39 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '5b153614cbc72bfa198d75b1e9e33dab2645d9fe')
Children:
a34b097e6dd0af4d8de284923aa311ba5575c32c
Parents:
4a9db3308f70e3c7475877b8e3aa0ec3417427c4
Message:
handling of ring dep. stuff and nested stuff

git-svn-id: file:///usr/local/Singular/svn/trunk@13858 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/newstruct.cc

    r4a9db33 r5e147a  
    6868  for(;n>=0;n--)
    6969  {
    70     if (RingDependend(L->m[n].rtyp)
    71     && (L->m[n].data!=NULL))
    72     {
    73       assume(L->m[n-1].rtyp==RING_CMD);
    74       if((L->m[n-1].data!=NULL)&&(L->m[n-1].data!=(void*)currRing))
    75         rChangeCurrRing((ring)(L->m[n-1].data));
    76       N->m[n].Copy(&L->m[n]);
     70    if (RingDependend(L->m[n].rtyp))
     71    {
     72      assume((L->m[n-1].rtyp==RING_CMD) || (L->m[n-1].data==NULL));
     73      if(L->m[n-1].data!=NULL)
     74      {
     75        if (L->m[n-1].data!=(void*)currRing)
     76          rChangeCurrRing((ring)(L->m[n-1].data));
     77        N->m[n].Copy(&L->m[n]);
     78      }
     79      else
     80      {
     81        N->m[n].rtyp=L->m[n].rtyp;
     82        N->m[n].data=idrecDataInit(L->m[n].rtyp);
     83      }
     84    }
     85    else if((L->m[n].rtyp>MAX_TOK)||(L->m[n].rtyp==LIST_CMD))
     86    {
     87      N->m[n].rtyp=L->m[n].rtyp;
     88      N->m[n].data=(void *)lCopy_newstruct((lists)(L->m[n].data));
    7789    }
    7890    else
     
    141153        {
    142154          if (al->m[nm->pos].data==NULL)
    143           {
    144             // NULL belongs to any ring
    145             ring r=(ring)al->m[nm->pos-1].data;
    146             if (r!=NULL)
    147             {
    148               r->ref--;
    149               al->m[nm->pos-1].data=NULL;
    150               al->m[nm->pos-1].rtyp=DEF_CMD;
    151             }
    152           }
     155          {
     156            // NULL belongs to any ring
     157            ring r=(ring)al->m[nm->pos-1].data;
     158            if (r!=NULL)
     159            {
     160              r->ref--;
     161              al->m[nm->pos-1].data=NULL;
     162              al->m[nm->pos-1].rtyp=DEF_CMD;
     163            }
     164          }
    153165          else
    154166          {
     
    162174          }
    163175          if ((currRing!=NULL)&&(al->m[nm->pos-1].data==NULL))
    164           {
    165             // remember the ring, if not already set
    166             al->m[nm->pos-1].data=(void *)currRing;
    167             al->m[nm->pos-1].rtyp=RING_CMD;
    168             currRing->ref++;
    169           }
     176          {
     177            // remember the ring, if not already set
     178            al->m[nm->pos-1].data=(void *)currRing;
     179            al->m[nm->pos-1].rtyp=RING_CMD;
     180            currRing->ref++;
     181          }
    170182        }
    171183        Subexpr r=(Subexpr)omAlloc0Bin(sSubexpr_bin);
     
    248260      Werror("type change in member %s (%s(%d) -> %s(%d))",nm->name,
    249261          Tok2Cmdname(nm->typ),nm->typ,
    250           Tok2Cmdname(l->m[nm->pos].rtyp),l->m[nm->pos].rtyp);
     262          Tok2Cmdname(l->m[nm->pos].rtyp),l->m[nm->pos].rtyp);
    251263      return TRUE;
    252264    }
Note: See TracChangeset for help on using the changeset viewer.