Changeset d22802 in git


Ignore:
Timestamp:
Mar 19, 2021, 9:47:57 PM (3 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
d5b4b6b74819f9180ae9279cb701e929fb931c12
Parents:
2c5e6915fcb7bea0992cbde73d5924fccef312af
Message:
fix: newstruct (example projectiveBundle)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipassign.cc

    r2c5e69 rd22802  
    461461  return FALSE;
    462462}
    463 static inline void jjCheck_FLAG_OTHER_RING(leftv res)
    464 {
     463static inline ring jjCheck_FLAG_OTHER_RING(leftv res)
     464{
     465  ring old_r=currRing;
    465466  if (Sy_inset(FLAG_RING,res->flag))
    466467  {
     
    469470      if ((res-1)->data!=NULL)
    470471      {
    471         ring rr=(ring)(res-1)->data;
    472         rr->ref--;
     472        old_r=(ring)(res-1)->data;
     473        old_r->ref--;
    473474      }
    474475      (res-1)->data=currRing;
     
    477478    }
    478479  }
     480  res->flag &= ~(Sy_bit(FLAG_OTHER_RING) |Sy_bit(FLAG_RING));
     481  return old_r;
    479482}
    480483static BOOLEAN jiA_NUMBER(leftv res, leftv a, Subexpr)
    481484{
    482   void *test_p=a->Data(); // can I access it (newstruct)?
     485  number p=(number)a->CopyD(NUMBER_CMD);
    483486  if (errorreported) return TRUE;
    484   number p=(number)a->CopyD(NUMBER_CMD);
    485487  if (res->data!=NULL) nDelete((number *)&res->data);
    486488  nNormalize(p);
     
    706708static BOOLEAN jiA_LIST_RES(leftv res, leftv a,Subexpr)
    707709{
    708   void *test_p=a->Data(); // can I access it (newstruct)?
     710  syStrategy r=(syStrategy)a->CopyD(RESOLUTION_CMD);
    709711  if (errorreported) return TRUE;
    710   syStrategy r=(syStrategy)a->CopyD(RESOLUTION_CMD);
    711712  if (res->data!=NULL) ((lists)res->data)->Clean();
    712713  int add_row_shift = 0;
     
    719720static BOOLEAN jiA_LIST(leftv res, leftv a,Subexpr)
    720721{
    721   void *test_p=a->Data(); // can I access it (newstruct)?
     722  lists l=(lists)a->CopyD(LIST_CMD);
    722723  if (errorreported) return TRUE;
    723   // FLAG_OTHER_RING is only set for ring dep. types, so currRing!=NULL
    724   lists l=(lists)a->CopyD(LIST_CMD);
    725724  if (res->data!=NULL) ((lists)res->data)->Clean();
    726725  res->data=(void *)l;
     
    730729static BOOLEAN jiA_POLY(leftv res, leftv a,Subexpr e)
    731730{
    732   void *test_p=a->Data(); // can I access it (newstruct)?
     731  poly p=(poly)a->CopyD(POLY_CMD);
    733732  if (errorreported) return TRUE;
    734   poly p=(poly)a->CopyD(POLY_CMD);
    735733  pNormalize(p);
    736734  if (e==NULL)
     
    828826  }
    829827  matrix am=(matrix)a->CopyD(MATRIX_CMD);
     828  if (errorreported) return TRUE;
    830829  if ((MATROWS(am)!=1) || (MATCOLS(am)!=1))
    831830  {
     
    918917// there should be no assign bucket:=bucket, here we have poly:=bucket
    919918{
    920   void *test_p=a->Data(); // can I access it (newstruct)?
     919  sBucket_pt b=(sBucket_pt)a->CopyD();
    921920  if (errorreported) return TRUE;
    922   sBucket_pt b=(sBucket_pt)a->CopyD();
    923921  poly p; int l;
    924922  sBucketDestroyAdd(b,&p,&l);
     
    931929static BOOLEAN jiA_IDEAL(leftv res, leftv a, Subexpr)
    932930{
    933   void *test_p=a->Data(); // can I access it (newstruct)?
     931  ideal I=(ideal)a->CopyD(MATRIX_CMD);
    934932  if (errorreported) return TRUE;
    935933  if (res->data!=NULL) idDelete((ideal*)&res->data);
    936   res->data=(void *)a->CopyD(MATRIX_CMD);
     934  res->data=(void*)I;
    937935  if (a->rtyp==IDHDL) id_Normalize((ideal)a->Data(), currRing);
    938   else                id_Normalize((ideal)res->data, currRing);
     936  else                id_Normalize(I/*(ideal)res->data*/, currRing);
    939937  jiAssignAttr(res,a);
    940938  if (((res->rtyp==IDEAL_CMD)||(res->rtyp==MODUL_CMD))
    941   && (IDELEMS((ideal)(res->data))==1)
     939  && (IDELEMS(I/*(ideal)(res->data)*/)==1)
    942940  && (currRing->qideal==NULL)
    943941  && (!rIsPluralRing(currRing))
     
    955953static BOOLEAN jiA_RESOLUTION(leftv res, leftv a, Subexpr)
    956954{
    957   void *test_p=a->Data(); // can I access it (newstruct)?
     955  syStrategy R=(syStrategy)a->CopyD(RESOLUTION_CMD);
    958956  if (errorreported) return TRUE;
    959957  if (res->data!=NULL) syKillComputation((syStrategy)res->data);
    960   res->data=(void *)a->CopyD(RESOLUTION_CMD);
     958  res->data=(void*)R;
    961959  jiAssignAttr(res,a);
    962960  return FALSE;
     
    965963/* module = poly */
    966964{
    967   void *test_p=a->Data(); // can I access it (newstruct)?
    968   if (errorreported) return TRUE;
    969   if (res->data!=NULL) idDelete((ideal*)&res->data);
    970965  ideal I=idInit(1,1);
    971966  I->m[0]=(poly)a->CopyD(POLY_CMD);
     967  if (errorreported) return TRUE;
    972968  if (I->m[0]!=NULL) pSetCompP(I->m[0],1);
    973969  pNormalize(I->m[0]);
     970  if (res->data!=NULL) idDelete((ideal*)&res->data);
    974971  res->data=(void *)I;
    975972  if (TEST_V_QRING && (currRing->qideal!=NULL))
     
    982979static BOOLEAN jiA_IDEAL_M(leftv res, leftv a, Subexpr)
    983980{
    984   void *test_p=a->Data(); // can I access it (newstruct)?
     981  matrix m=(matrix)a->CopyD(MATRIX_CMD);
    985982  if (errorreported) return TRUE;
    986   if (res->data!=NULL) idDelete((ideal*)&res->data);
    987   matrix m=(matrix)a->CopyD(MATRIX_CMD);
    988983  if (TEST_V_ALLWARN)
    989984    if (MATROWS(m)>1)
     
    993988  MATROWS(m)=1;
    994989  id_Normalize((ideal)m, currRing);
     990  if (res->data!=NULL) idDelete((ideal*)&res->data);
    995991  res->data=(void *)m;
    996992  if (TEST_V_QRING && (currRing->qideal!=NULL))
     
    1003999static BOOLEAN jiA_IDEAL_Mo(leftv res, leftv a, Subexpr)
    10041000{
    1005   void *test_p=a->Data(); // can I access it (newstruct)?
     1001  ideal m=(ideal)a->CopyD(MODUL_CMD);
    10061002  if (errorreported) return TRUE;
    1007   ideal m=(ideal)a->CopyD(MODUL_CMD);
    10081003  if (m->rank>1)
    10091004  {
     
    10491044static BOOLEAN jiA_MAP(leftv res, leftv a, Subexpr)
    10501045{
    1051   void *test_p=a->Data(); // can I access it (newstruct)?
    1052   if (errorreported) return TRUE;
    10531046  if (res->data!=NULL)
    10541047  {
     
    10581051  }
    10591052  res->data=(void *)a->CopyD(MAP_CMD);
     1053  if (errorreported) return TRUE;
    10601054  jiAssignAttr(res,a);
    10611055  return FALSE;
     
    10641058static BOOLEAN jiA_MAP_ID(leftv res, leftv a, Subexpr)
    10651059{
    1066   void *test_p=a->Data(); // can I access it (newstruct)?
    1067   if (errorreported) return TRUE;
    10681060  map f=(map)res->data;
    10691061  char *rn=f->preimage; // save the old/already assigned preimage ring name
     
    10711063  idDelete((ideal *)&f);
    10721064  res->data=(void *)a->CopyD(IDEAL_CMD);
     1065  if (errorreported) return TRUE;
    10731066  f=(map)res->data;
    10741067  id_Normalize((ideal)f, currRing);
     
    10851078    return TRUE;
    10861079  }
    1087   void *test_p=a->Data(); // can I access it (newstruct)?
    1088   if (errorreported) return TRUE;
    10891080
    10901081  ring old_ring=(ring)res->Data();
     
    10921083  coeffs newcf = currRing->cf;
    10931084  ideal id = (ideal)a->Data(); //?
     1085  if (errorreported) return TRUE;
    10941086  const int cpos = idPosConstant(id);
    10951087  if(rField_is_Ring(currRing))
     
    12261218{
    12271219  coeffs r=(coeffs)a->Data();
     1220  if (errorreported) return TRUE;
    12281221  if (r==NULL) return TRUE;
    12291222  if (res->data!=NULL) nKillChar((coeffs)res->data);
     
    19161909  sleftv tmp;
    19171910  memset(&tmp,0,sizeof(sleftv));
    1918   tmp.flag=ld->flag;
    19191911  if (/*(ld->rtyp!=LIST_CMD)
    19201912  &&*/(ld->e==NULL)
    19211913  && (ld->Typ()!=r->Typ()))
    19221914  {
    1923     jjCheck_FLAG_OTHER_RING(ld);
     1915    ring old_r=jjCheck_FLAG_OTHER_RING(ld);
    19241916    tmp.rtyp=DEF_CMD;
     1917    tmp.flag=ld->flag;
    19251918    b=iiAssign(&tmp,r,FALSE);
    1926     ld->CleanUp();
     1919    ld->CleanUp(old_r);
    19271920    memcpy(ld,&tmp,sizeof(sleftv));
    19281921  }
     
    19311924  && (ld->Typ()<MAX_TOK))
    19321925  {
    1933     jjCheck_FLAG_OTHER_RING(ld);
     1926    ring old_r=jjCheck_FLAG_OTHER_RING(ld);
    19341927    tmp.rtyp=r->Typ();
     1928    tmp.flag=ld->flag;
    19351929    tmp.data=(char*)idrecDataInit(r->Typ());
    19361930    b=iiAssign(&tmp,r,FALSE);
    1937     ld->CleanUp();
     1931    ld->CleanUp(old_r);
    19381932    memcpy(ld,&tmp,sizeof(sleftv));
    19391933  }
Note: See TracChangeset for help on using the changeset viewer.