Changeset 8b1af6 in git for Singular/links/ssiLink.cc


Ignore:
Timestamp:
Nov 6, 2013, 2:30:52 PM (10 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
93fc820b11e13b03357f9d05061a1954e37d658c
Parents:
75761633171290fa9ee90c7fc19a9d9bfba3534911ab4e8595e6e90a6b646949f46d516f88a72015
Message:
Merge pull request #389 from jankoboehm/spielwiese

Gerhards fix for zeroRad und some typos
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/links/ssiLink.cc

    r11ab4e r8b1af6  
    154154    {
    155155      #if SIZEOF_LONG == 4
    156       fprintf(d->f_write,"4 %ld ",((LONG)SR_TO_INT(n)));
     156      fprintf(d->f_write,"4 %ld ",SR_TO_INT(n));
    157157      #else
    158158      long nn=SR_TO_INT(n);
    159159      if ((nn<POW_2_28)||(nn>= -POW_2_28))
    160         fprintf(d->f_write,"4 %ld ",((LONG)nn));
     160        fprintf(d->f_write,"4 %ld ",nn);
    161161      else
    162162      {
     
    200200  if (d->r!=NULL) rKill(d->r);
    201201  d->r=r;
    202   d->r->ref++;
    203   fprintf(d->f_write,"%d %d ",n_GetChar(r->cf),r->N);
    204 
    205   int i;
    206   for(i=0;i<r->N;i++)
    207   {
    208     fprintf(d->f_write,"%d %s ",(int)strlen(r->names[i]),r->names[i]);
    209   }
    210   /* number of orderings:*/
    211   i=0;
    212   while (r->order[i]!=0) i++;
    213   fprintf(d->f_write,"%d ",i);
    214   /* each ordering block: */
    215   i=0;
    216   while(r->order[i]!=0)
    217   {
    218     fprintf(d->f_write,"%d %d %d ",r->order[i],r->block0[i], r->block1[i]);
    219     switch(r->order[i])
    220     {
    221       case ringorder_a:
    222       case ringorder_wp:
    223       case ringorder_Wp:
    224       case ringorder_ws:
    225       case ringorder_Ws:
    226       case ringorder_aa:
    227       {
    228         int ii;
    229         for(ii=r->block0[i];ii<=r->block1[i];ii++)
    230           fprintf(d->f_write,"%d ",r->wvhdl[i][ii-r->block0[i]]);
    231       }
    232       break;
    233 
    234       case ringorder_a64:
    235       case ringorder_M:
    236       case ringorder_L:
    237       case ringorder_IS:
    238         Werror("ring oder not implemented for ssi:%d",r->order[i]);
     202  if (r!=NULL)
     203  {
     204    /*d->*/r->ref++;
     205    fprintf(d->f_write,"%d %d ",n_GetChar(r->cf),r->N);
     206
     207    int i;
     208    for(i=0;i<r->N;i++)
     209    {
     210      fprintf(d->f_write,"%d %s ",(int)strlen(r->names[i]),r->names[i]);
     211    }
     212    /* number of orderings:*/
     213    i=0;
     214    // remember dummy ring: everything 0:
     215    if (r->order!=NULL) while (r->order[i]!=0) i++;
     216    fprintf(d->f_write,"%d ",i);
     217    /* each ordering block: */
     218    i=0;
     219    if (r->order!=NULL) while(r->order[i]!=0)
     220    {
     221      fprintf(d->f_write,"%d %d %d ",r->order[i],r->block0[i], r->block1[i]);
     222      switch(r->order[i])
     223      {
     224        case ringorder_a:
     225        case ringorder_wp:
     226        case ringorder_Wp:
     227        case ringorder_ws:
     228        case ringorder_Ws:
     229        case ringorder_aa:
     230        {
     231          int ii;
     232          for(ii=r->block0[i];ii<=r->block1[i];ii++)
     233            fprintf(d->f_write,"%d ",r->wvhdl[i][ii-r->block0[i]]);
     234        }
    239235        break;
    240236
    241       default: break;
    242     }
    243     i++;
     237        case ringorder_a64:
     238        case ringorder_M:
     239        case ringorder_L:
     240        case ringorder_IS:
     241          Werror("ring oder not implemented for ssi:%d",r->order[i]);
     242          break;
     243
     244        default: break;
     245      }
     246      i++;
     247    }
     248  }
     249  else /* dummy ring r==NULL*/
     250  {
     251    fprintf(d->f_write,"0 0 0 "/*,r->ch,r->N, blocks*/);
    244252  }
    245253}
     
    478486  ch=s_readint(d->f_read);
    479487  N=s_readint(d->f_read);
    480   names=(char**)omAlloc(N*sizeof(char*));
    481   for(i=0;i<N;i++)
    482   {
    483     names[i]=ssiReadString(d);
     488  if (N!=0)
     489  {
     490    names=(char**)omAlloc(N*sizeof(char*));
     491    for(i=0;i<N;i++)
     492    {
     493      names[i]=ssiReadString(d);
     494    }
    484495  }
    485496  // read the orderings:
     
    521532    }
    522533  }
     534  if (N==0)
     535  {
     536    omFree(ord);
     537    omFree(block0);
     538    omFree(block1);
     539    omFree(wvhdl);
     540    return NULL;
     541  }
     542  else return rDefault(ch,N,names,num_ord,ord,block0,block1,wvhdl);
     543
    523544  return rDefault(ch,N,names,num_ord,ord,block0,block1,wvhdl);
    524545}
     
    11801201    case 5:{
    11811202             d->r=ssiReadRing(d);
    1182              d->r->ref++;
    11831203             res->rtyp=RING_CMD;
    11841204             res->data=(char*)d->r;
    11851205             // we are in the top-level, so set the basering to d->r:
    1186              ssiSetCurrRing(d->r);
     1206             if (d->r!=NULL)
     1207             {
     1208               d->r->ref++;
     1209               ssiSetCurrRing(d->r);
     1210             }
    11871211             if (t==15) return ssiRead1(l);
    11881212           }
Note: See TracChangeset for help on using the changeset viewer.