Changeset 56aaae in git for Singular/links/ssiLink.cc
- Timestamp:
- Oct 28, 2013, 3:39:36 PM (10 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- d302d07c56cde53a3680353cb3985baaa2572f53
- Parents:
- 215353e5dbc6e1393f0f2107ee3615f129b47538
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/links/ssiLink.cc
r215353e r56aaae 154 154 { 155 155 #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)); 157 157 #else 158 158 long nn=SR_TO_INT(n); … … 200 200 if (d->r!=NULL) rKill(d->r); 201 201 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 } 239 235 break; 240 236 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*/); 244 252 } 245 253 } … … 478 486 ch=s_readint(d->f_read); 479 487 N=s_readint(d->f_read); 480 names=(char**)om Alloc(N*sizeof(char*));488 names=(char**)omalloc(N*sizeof(char*)); 481 489 for(i=0;i<N;i++) 482 490 { … … 521 529 } 522 530 } 531 if (N==0) 532 { 533 omFree(ord); 534 omFree(block0); 535 omFree(block1); 536 omFree(wvhdl); 537 return NULL; 538 } 539 else return rDefault(ch,N,names,num_ord,ord,block0,block1,wvhdl); 540 523 541 return rDefault(ch,N,names,num_ord,ord,block0,block1,wvhdl); 524 542 } … … 1180 1198 case 5:{ 1181 1199 d->r=ssiReadRing(d); 1182 d->r->ref++;1183 1200 res->rtyp=RING_CMD; 1184 1201 res->data=(char*)d->r; 1185 1202 // we are in the top-level, so set the basering to d->r: 1186 ssiSetCurrRing(d->r); 1203 if (d->r!=NULL) 1204 { 1205 d->r->ref++; 1206 ssiSetCurrRing(d->r); 1207 } 1187 1208 if (t==15) return ssiRead1(l); 1188 1209 }
Note: See TracChangeset
for help on using the changeset viewer.