Changeset 4b2155 in git for Singular/subexpr.cc


Ignore:
Timestamp:
Apr 16, 1999, 9:53:44 AM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'e7cc1ebecb61be8b9ca6c18016352af89940b21a')
Children:
0df02761ea5104747ff923eee578ddb4d27f4a45
Parents:
04d56fffcf5bd9bd7b214fdec1609e8a293fd986
Message:
*string() implemented for all types -- no line breaks
*inmtat(intvec, n, m) implemented


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

Legend:

Unmodified
Added
Removed
  • Singular/subexpr.cc

    r04d56f r4b2155  
    638638}
    639639
    640 char *  sleftv::String(void *d)
     640char *  sleftv::String(void *d, BOOLEAN func)
    641641{
    642642#ifdef SIQ
     
    658658  {
    659659    /* create a string, which may be freed by FreeL
    660     * leave the switch with return
    661     * or with break, which copies the string s*/
     660     * leave the switch with return
     661     * or with break, which copies the string s*/
    662662    char *s;
    663663    const char *n;
     
    666666    switch (Typ())
    667667    {
    668       case INT_CMD:
    669         s=(char *)AllocL(MAX_INT_LEN+2);
    670         sprintf(s,"%d",(int)d);
    671         return s;
    672       case STRING_CMD:
    673         return (char *)CopyD(STRING_CMD);
    674       case POLY_CMD:
    675       case VECTOR_CMD:
    676         s = pString((poly)d);
    677         break;
    678       case NUMBER_CMD:
    679         StringSetS("");
    680         if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD))
    681         {
    682           nWrite(IDNUMBER((idhdl)data));
    683         }
    684         else if (rtyp==NUMBER_CMD)
    685         {
    686           number n=(number)data;
    687           nWrite(n);
    688           data=(char *)n;
    689         }
    690         else if((rtyp==VMINPOLY)&&(rField_is_GF()))
    691         {
    692           nfShowMipo();
    693         }
    694         else
    695         {
    696           number n=nCopy((number)d);
    697           nWrite(n);
    698           nDelete(&n);
    699         }
    700         s = StringAppend("");
    701         break;
    702       case MATRIX_CMD:
    703         s= iiStringMatrix((matrix)d,2);
    704         break;
    705       case MODUL_CMD:
    706       case IDEAL_CMD:
    707       case MAP_CMD:
    708         s= iiStringMatrix((matrix)d,1);
    709         break;
    710       case INTVEC_CMD:
    711       case INTMAT_CMD:
    712       {
    713         intvec *v=(intvec *)d;
    714         return v->String();
    715       }
    716       case RING_CMD:
    717       case QRING_CMD:
    718       {
    719         return rString((ring)d);
    720       }
     668        case INT_CMD:
     669          s=(char *)AllocL(MAX_INT_LEN+2);
     670          sprintf(s,"%d",(int)d);
     671          return s;
     672        case STRING_CMD:
     673          if (d != NULL) return mstrdup((char*)d);
     674          return mstrdup("");
     675        case POLY_CMD:
     676        case VECTOR_CMD:
     677          s = pString((poly)d);
     678          break;
     679        case NUMBER_CMD:
     680          StringSetS("");
     681          if ((rtyp==IDHDL)&&(IDTYP((idhdl)data)==NUMBER_CMD))
     682          {
     683            nWrite(IDNUMBER((idhdl)data));
     684          }
     685          else if (rtyp==NUMBER_CMD)
     686          {
     687            number n=(number)data;
     688            nWrite(n);
     689            data=(char *)n;
     690          }
     691          else if((rtyp==VMINPOLY)&&(rField_is_GF()))
     692          {
     693            nfShowMipo();
     694          }
     695          else
     696          {
     697            number n=nCopy((number)d);
     698            nWrite(n);
     699            nDelete(&n);
     700          }
     701          s = StringAppend("");
     702          break;
     703        case MATRIX_CMD:
     704          s= iiStringMatrix((matrix)d,1);
     705          break;
     706        case MODUL_CMD:
     707        case IDEAL_CMD:
     708        case MAP_CMD:
     709          s= iiStringMatrix((matrix)d,1);
     710          break;
     711        case INTVEC_CMD:
     712        case INTMAT_CMD:
     713        {
     714          intvec *v=(intvec *)d;
     715          return v->String(1);
     716        }
     717        case RING_CMD:
     718        {
     719          return rString((ring)d);
     720        }
     721        case QRING_CMD:
     722        {
     723          char* r = rString((ring)d);
     724          char* i = iiStringMatrix((matrix) ((ring) d)->qideal, 1);
     725          s = (char*) AllocL(strlen(r) + strlen(i) + 4);
     726          sprintf(s, "%s,(%s)", r, i);
     727          FreeL(r);
     728          return s;
     729        }
     730       
     731        case RESOLUTION_CMD:
     732        {
     733          lists l = syConvRes((syStrategy)d);
     734          s = lString(l);
     735          l->Clean();
     736          return (s);
     737        }
     738        case PROC_CMD:
     739        {
     740          procinfo* pi = (procinfo*) d;
     741          if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL))
     742            return mstrdup(pi->data.s.body);
     743          else
     744            return mstrdup("");
     745        }
     746         
    721747        case LINK_CMD:
    722748        {
    723749          return slString((si_link) d);
    724750        }
     751        case DEF_CMD:
     752        {
     753          return mstrdup("");
     754        }
    725755       
    726       default:
    727         #ifdef TEST
    728         ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ());
    729         #endif
    730         return NULL;
     756        case LIST_CMD:
     757        {
     758          return lString((lists) d);
     759        }
     760        default:
     761#ifdef TEST
     762          ::Print("String:unknown type %s(%d)", Tok2Cmdname(Typ()),Typ());
     763#endif
     764          return mstrdup("");
    731765    } /* end switch: (Typ()) */
    732766    return mstrdup(s);
    733767  }
    734   return NULL;
     768  return mstrdup("");
    735769}
    736770
Note: See TracChangeset for help on using the changeset viewer.