Changeset fff32b in git


Ignore:
Timestamp:
Feb 1, 2019, 2:18:53 PM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
ad62229092fc8ebe6427ffe920f831abe60d4619c79e0a8f7547f0e11de702dde7d7da4b36994029
Parents:
64dfab7cf1b26074304621f8a4c209d347712ac7
Message:
add: ascii-dump for Plural rings
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/links/asciiLink.cc

    r64dfab7 rfff32b  
    2424static const char* GetIdString(idhdl h);
    2525static int DumpRhs(FILE *fd, idhdl h);
    26 static BOOLEAN DumpQring(FILE *fd, idhdl h, const char *type_str);
     26static BOOLEAN DumpQring(FILE *fd, idhdl h);
     27static BOOLEAN DumpNCring(FILE *fd, idhdl h);
    2728static BOOLEAN DumpAsciiMaps(FILE *fd, idhdl h, idhdl rhdl);
    2829static BOOLEAN CollectLibs(char *name, char ***list_of_libs);
     
    294295    if (strcmp(IDID(h),"Top")==0) return FALSE; // do not dump "Top"
    295296    if (IDPACKAGE(h)->language==LANG_SINGULAR) return FALSE;
     297    if (IDPACKAGE(h)->language==LANG_MIX) return FALSE;
    296298  }
    297299  if (type_id == CRING_CMD)
     
    310312    return FALSE;
    311313
     314  // handle nc-rings separately
     315  if ((type_id == RING_CMD)&&(rIsNCRing(IDRING(h))))
     316    return DumpNCring(fd,h);
     317
    312318  // handle qrings separately
    313319  if ((type_id == RING_CMD)&&(IDRING(h)->qideal!=NULL))
    314     return DumpQring(fd, h, type_str);
     320    return DumpQring(fd, h);
    315321
    316322  // C-proc not to be dumped
     
    368374  {
    369375    case LIST_CMD:
    370     {
    371       lists l = IDLIST(h);
    372       int i, nl = l->nr + 1;
    373 
    374       for (i=0; i<nl; i++)
    375         if (GetIdString((idhdl) &(l->m[i])) == NULL) return NULL;
    376     }
     376    //{
     377    //
     378    //
     379    //  lists l = IDLIST(h);
     380    //  int i, nl = l->nr + 1;
     381//
     382    //  for (i=0; i<nl; i++)
     383    //    if (GetIdString((idhdl) &(l->m[i])) == NULL) return NULL;
     384    //  break;
     385    //}
    377386    case CRING_CMD:
    378387    #ifdef SINGULAR_4_2
     
    408417}
    409418
    410 static BOOLEAN DumpQring(FILE *fd, idhdl h, const char *type_str)
     419static BOOLEAN DumpNCring(FILE *fd, idhdl h)
    411420{
    412421  char *ring_str = h->String();
    413   if (fprintf(fd, "%s temp_ring = %s;\n", Tok2Cmdname(RING_CMD), ring_str)
    414               == EOF) return TRUE;
    415   if (fprintf(fd, "%s temp_ideal = %s;\n", Tok2Cmdname(IDEAL_CMD),
    416               iiStringMatrix((matrix) IDRING(h)->qideal, 1, currRing, n_GetChar(currRing->cf)))
     422  ring r=IDRING(h);
     423
     424  if (rIsPluralRing(r))
     425  {
     426    if (fprintf(fd, "ring temp_ring = %s;\n", ring_str)
     427      == EOF) return TRUE;
     428    if (fprintf(fd, "ideal temp_C = %s;\n",
     429              iiStringMatrix((matrix) r->GetNC()->C, 2, r, n_GetChar(r->cf)))
     430      == EOF) return TRUE;
     431    if (fprintf(fd, "ideal temp_D = %s;\n",
     432              iiStringMatrix((matrix) r->GetNC()->D, 2, r, n_GetChar(r->cf)))
     433      == EOF) return TRUE;
     434    if (fprintf(fd, "def %s = nc_algebra(temp_C,temp_D);\n",IDID(h)) == EOF)
     435      return TRUE;
     436    if (fputs("kill temp_ring;\n",fd) == EOF) return TRUE;
     437  }
     438  if (rIsLPRing(r))
     439  {
     440    //if (fprintf(fd, "ring %s = %s;\n", IDID(h), ring_str) == EOF) return TRUE;
     441    //if (fprintf(fd, "attrib(%s,\"isLetterplaceRing\",%d);\n",IDID(h),r->isLPring) ==EOF) return TRUE;
     442    Warn("cannot write LP ring %s",IDID(h));
     443    return TRUE;
     444  }
     445  omFree(ring_str);
     446  return FALSE;
     447}
     448
     449static BOOLEAN DumpQring(FILE *fd, idhdl h)
     450{
     451  char *ring_str = h->String();
     452  ring r=IDRING(h);
     453  if (fprintf(fd, "ring temp_ring = %s;\n", ring_str) == EOF) return TRUE;
     454  if (fprintf(fd, "ideal temp_ideal = %s;\n",
     455              iiStringMatrix((matrix) r->qideal, 1, currRing, n_GetChar(r->cf)))
    417456      == EOF) return TRUE;
    418457  if (fputs("attrib(temp_ideal, \"isSB\", 1);\n",fd) == EOF) return TRUE;
    419   if (fprintf(fd, "%s %s = temp_ideal;\n", type_str, IDID(h)) == EOF)
     458  if (fprintf(fd, "qring %s = temp_ideal;\n",IDID(h)) == EOF)
    420459    return TRUE;
    421460  if (fputs("kill temp_ring;\n",fd) == EOF) return TRUE;
Note: See TracChangeset for help on using the changeset viewer.