Changeset 7604db in git for Singular/subexpr.cc


Ignore:
Timestamp:
Apr 19, 1999, 1:03:57 PM (24 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
228c7e51151a4fc3bdf6908acbb09367f243d275
Parents:
a30caa3e79912e5d42b9d62c6d2e1aa1239e5486
Message:
* print command


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

Legend:

Unmodified
Added
Removed
  • Singular/subexpr.cc

    ra30caa3 r7604db  
    657657  if (!errorreported)
    658658  {
    659     /* create a string, which may be freed by FreeL
    660      * leave the switch with return
    661      * or with break, which copies the string s*/
    662659    char *s;
    663660    const char *n;
     
    667664    {
    668665        case INT_CMD:
    669           s=(char *)AllocL(MAX_INT_LEN+2);
    670           sprintf(s,"%d",(int)d);
    671           break;
     666          if (typed)
     667          {
     668            s=(char *)AllocL(MAX_INT_LEN+7);
     669            sprintf(s,"int(%d)",(int)d);
     670          }
     671          else
     672          {
     673            s=(char *)AllocL(MAX_INT_LEN+2);
     674            sprintf(s,"%d",(int)d);
     675          }
     676          return s;
     677
    672678        case STRING_CMD:
    673           if (d != NULL) s = mstrdup((char*)d);
    674           else s = mstrdup("");
    675           break;
     679          if (d == NULL)
     680          {
     681            if (typed) return mstrdup("\"\"");
     682            return mstrdup("");
     683          }
     684          if (typed)
     685          {
     686            s = (char*) AllocL(strlen((char*) d) + 3);
     687            sprintf(s,"\"%s\"", (char*) d);
     688            return s;
     689          }
     690          else
     691          {
     692            return mstrdup((char*)d);
     693          }
     694   
    676695        case POLY_CMD:
    677696        case VECTOR_CMD:
    678           s = mstrdup(pString((poly)d));
    679           break;
     697          if (typed)
     698          {
     699            char* ps = pString((poly) d);
     700            s = (char*) AllocL(strlen(ps) + 10);
     701            sprintf(s,"%s(%s)", (Typ() == POLY_CMD ? "poly" : "vector"), ps);
     702            return s;
     703          }
     704          else
     705            return mstrdup(pString((poly)d));
     706
    680707        case NUMBER_CMD:
    681           StringSetS("");
     708          StringSetS((typed ? "number(" : ""));
    682709          if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD))
    683710          {
     
    700727            nDelete(&n);
    701728          }
    702           s = StringAppendS("");
    703           s = mstrdup(s);
    704           break;
     729          s = StringAppendS((typed ? ")" : ""));
     730          return mstrdup(s);
     731         
    705732        case MATRIX_CMD:
    706           s= mstrdup(iiStringMatrix((matrix)d,dim));
    707           break;
     733          s= iiStringMatrix((matrix)d,dim);
     734          if (typed)
     735          {
     736            char* ns = (char*) AllocL(strlen(s) + 40);
     737            sprintf(ns, "matrix(ideal(%s),%d,%d)", s,
     738                    ((ideal) d)->nrows, ((ideal) d)->ncols);
     739            mmTestL(ns);
     740            return ns;
     741          }
     742          else
     743          {
     744            return mstrdup(s);
     745          }
     746
    708747        case MODUL_CMD:
    709748        case IDEAL_CMD:
    710749        case MAP_CMD:
    711           s= mstrdup(iiStringMatrix((matrix)d,dim));
    712           break;
     750          s= iiStringMatrix((matrix)d,dim);
     751          if (typed)
     752          {
     753            char* ns = (char*) AllocL(strlen(s) + 10);
     754            sprintf(ns, "%s(%s)", (Typ()==MODUL_CMD ? "module" : "ideal"), s);
     755            mmTestL(ns);
     756            return ns;
     757          }
     758          return mstrdup(s);
     759
    713760        case INTVEC_CMD:
    714761        case INTMAT_CMD:
     
    716763          intvec *v=(intvec *)d;
    717764          s = v->String(dim);
    718           break;
     765          if (typed)
     766          {
     767            char* ns;
     768            if (Typ() == INTMAT_CMD)
     769            {
     770              ns = (char*) AllocL(strlen(s) + 40);
     771              sprintf(ns, "intmat(intvec(%s),%d,%d)", s, v->rows(), v->cols());
     772            }
     773            else
     774            {
     775              ns = (char*) AllocL(strlen(s) + 10);
     776              sprintf(ns, "intvec(%s)", s);
     777            }
     778            mmTestL(ns);
     779            FreeL(s);
     780            return ns;
     781          }
     782          else
     783            return s;
    719784        }
     785
    720786        case RING_CMD:
    721         {
    722           s = rString((ring)d);
    723           break;
    724         }
    725787        case QRING_CMD:
    726         {
    727           char* r = rString((ring)d);
    728           char* i = iiStringMatrix((matrix) ((ring) d)->qideal, 1);
    729           s = (char*) AllocL(strlen(r) + strlen(i) + 4);
    730           sprintf(s, "%s,(%s)", r, i);
    731           FreeL(r);
    732           break;
    733         }
     788          s  = rString((ring)d);
     789         
     790          if (typed)
     791          {
     792            char* ns;
     793            if (Typ() == QRING_CMD)
     794            {
     795              char* id = iiStringMatrix((matrix) ((ring) d)->qideal, dim);
     796              ns = (char*) AllocL(strlen(s) + strlen(id) + 20);
     797              sprintf(ns, "\"%s\";%sideal(%s)", s,(dim == 2 ? "\n" : " "), id);
     798            }
     799            else
     800            {
     801              ns = (char*) AllocL(strlen(s) + 4);
     802              sprintf(ns, "\"%s\"", s);
     803            }
     804            FreeL(s);
     805            mmTestL(ns);
     806            return ns;
     807          }
     808          return s;
     809         
    734810        case RESOLUTION_CMD:
    735811        {
     
    737813          s = lString(l, typed, dim);
    738814          l->Clean();
    739           break;
     815          return s;
    740816        }
     817
    741818        case PROC_CMD:
    742819        {
    743820          procinfo* pi = (procinfo*) d;
    744821          if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL))
    745             s = mstrdup(pi->data.s.body);
     822            s = (pi->data.s.body);
    746823          else
    747             s = mstrdup("");
    748           break;
     824            s = "";
     825          if (typed)
     826          {
     827            char* ns = (char*) AllocL(strlen(s) + 4);
     828            sprintf(ns, "\"%s\"", s);
     829            mmTestL(ns);
     830            return ns;
     831          }
     832          return mstrdup(s);
    749833        }
    750834         
    751835        case LINK_CMD:
    752         {
    753836          s = slString((si_link) d);
    754           break;
    755         }
     837          if (typed)
     838          {
     839            char* ns = (char*) AllocL(strlen(s) + 10);
     840            sprintf(ns, "link(\"%s\")", s);
     841            FreeL(s);
     842            mmTestL(ns);
     843            return ns;
     844          }
     845          return s;
     846         
    756847       
    757848        case LIST_CMD:
    758         {
    759           s = lString((lists) d, typed, dim);
    760         }
    761         default:
    762 #ifdef TEST
    763           ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ());
    764 #endif
    765           return mstrdup("");
     849          return lString((lists) d, typed, dim);
    766850    } /* end switch: (Typ()) */
    767 
    768     return s;
    769851  }
    770852  return mstrdup("");
    771853}
    772854
     855   
    773856int  sleftv::Typ()
    774857{
Note: See TracChangeset for help on using the changeset viewer.