Changeset 000098 in git for Singular/ipprint.cc


Ignore:
Timestamp:
Jun 29, 2011, 12:40:24 PM (13 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
3a8c5fe234a64598138a3f2f2cd5c5c2636d4442
Parents:
7959ec93769d80d56f9893f174493c33cfc6a5b1
Message:
print returns a string

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

Legend:

Unmodified
Added
Removed
  • Singular/ipprint.cc

    r7959ec9 r000098  
    217217BOOLEAN jjPRINT(leftv res, leftv u)
    218218{
     219  SPrintStart();
     220  BOOLEAN bo=FALSE;
    219221  switch(u->Typ())
    220222  {
    221223      case INTVEC_CMD:
    222         return ipPrint_INTVEC(u);
     224        bo=ipPrint_INTVEC(u);
     225        break;
    223226
    224227      case INTMAT_CMD:
    225         return ipPrint_INTMAT(u);
     228        bo=ipPrint_INTMAT(u);
     229        break;
    226230
    227231      case MATRIX_CMD:
    228         return ipPrint_MA(u);
     232        bo=ipPrint_MA(u);
     233        break;
    229234
    230235      case IDEAL_CMD:
     
    234239        PrintLn();
    235240        omFree(s);
    236         return FALSE;
     241        break;
    237242      }
    238243
     
    242247        ipPrint_MA0(m, u->Name());
    243248        idDelete((ideal *) &m);
    244         return FALSE;
     249        break;
    245250      }
    246251
    247252      case VECTOR_CMD:
    248         return ipPrint_V(u);
     253        bo=ipPrint_V(u);
     254        break;
    249255
    250256      default:
    251257        u->Print();
    252         return FALSE;
    253   }
     258        break;
     259  }
     260  char *s=SPrintEnd();
     261  if (u->next==NULL)
     262  {
     263    int l=strlen(s);
     264    if (s[l-1]=='\n') s[l-1]='\0';
     265  }
     266  res->data=(void*)s;
     267  return bo;
    254268}
    255269
     
    276290      h->next=NULL;
    277291      if (jjPRINT(res, h)) return TRUE;
     292      PrintS((char*)res->data);
     293      omFree(res->data);
     294      PrintLn();
    278295      h->next=hh;
    279296      h=hh;
     
    333350  if ((u->Typ()==INTMAT_CMD)&&(strcmp((char *)v->Data(),"betti")==0))
    334351  {
    335     ipPrintBetti(u);
    336     res->data = NULL;
    337     res->rtyp = NONE;
    338     return FALSE;
    339   }
    340 /* ======================== end betti ================================= */
    341 
    342   char* ns = omStrDup((char*) v->Data());
    343   int dim = 1;
    344   if (strlen(ns) == 3 && ns[1] == '2')
    345   {
    346     dim = 2;
    347     ns[1] = ns[2];
    348     ns[2] = '\0';
    349   }
    350   if (strcmp(ns,"%l") == 0)
    351   {
    352     res->data = (char*) u->String(NULL, TRUE, dim);
    353     if (dim == 2)
    354     {
    355       char* ns = (char*) omAlloc(strlen((char*) res->data) + 2);
    356       strcpy(ns, (char*) res->data);
    357       omFree(res->data);
    358       strcat(ns, "\n");
    359       res->data = ns;
    360     }
    361   }
    362   else if (strcmp(ns,"%t") == 0)
    363   {
    364     SPrintStart();
    365     type_cmd(u);
    366     res->data = SPrintEnd();
    367     if (dim != 2)
    368       ((char*)res->data)[strlen((char*)res->data) -1] = '\0';
    369   }
    370   else if (strcmp(ns,"%;") == 0)
    371   {
    372     SPrintStart();
    373     u->Print();
    374     if (dim == 2) PrintLn();
    375     res->data = SPrintEnd();
    376   }
    377   else if  (strcmp(ns,"%p") == 0)
    378   {
    379     SPrintStart();
    380     iiExprArith1(res, u, PRINT_CMD);
    381     if (dim == 2) PrintLn();
    382     res->data = SPrintEnd();
    383   }
    384   else if (strcmp(ns,"%b") == 0 && (u->Typ()==INTMAT_CMD))
    385   {
    386352    SPrintStart();
    387353    ipPrintBetti(u);
    388     if (dim == 2) PrintLn();
    389     res->data = SPrintEnd();
     354    char *s = SPrintEnd();
     355    s[strlen(s)]='\0';
     356    res->data=s;
    390357  }
    391358  else
    392   {
    393     res->data = u->String(NULL, FALSE, dim);
    394     if (dim == 2)
    395     {
    396       char* ns = (char*) omAlloc(strlen((char*) res->data) + 2);
    397       strcpy(ns, (char*) res->data);
    398       omFree(res->data);
    399       strcat(ns, "\n");
    400       res->data = ns;
    401     }
    402   }
    403 
    404   omFree(ns);
    405   res->rtyp = STRING_CMD;
    406   return FALSE;
    407 }
     359/* ======================== end betti ================================= */
     360  {
     361    char* ns = omStrDup((char*) v->Data());
     362    int dim = 1;
     363    if (strlen(ns) == 3 && ns[1] == '2')
     364    {
     365      dim = 2;
     366      ns[1] = ns[2];
     367      ns[2] = '\0';
     368    }
     369    if (strcmp(ns,"%l") == 0)
     370    {
     371      res->data = (char*) u->String(NULL, TRUE, dim);
     372      if (dim == 2)
     373      {
     374        char* ns = (char*) omAlloc(strlen((char*) res->data) + 2);
     375        strcpy(ns, (char*) res->data);
     376        omFree(res->data);
     377        strcat(ns, "\n");
     378        res->data = ns;
     379      }
     380    }
     381    else if (strcmp(ns,"%t") == 0)
     382    {
     383      SPrintStart();
     384      type_cmd(u);
     385      res->data = SPrintEnd();
     386      if (dim != 2)
     387        ((char*)res->data)[strlen((char*)res->data) -1] = '\0';
     388    }
     389    else if (strcmp(ns,"%;") == 0)
     390    {
     391      SPrintStart();
     392      u->Print();
     393      if (dim == 2) PrintLn();
     394      res->data = SPrintEnd();
     395    }
     396    else if  (strcmp(ns,"%p") == 0)
     397    {
     398      iiExprArith1(res, u, PRINT_CMD);
     399    }
     400    else if (strcmp(ns,"%b") == 0 && (u->Typ()==INTMAT_CMD))
     401    {
     402      SPrintStart();
     403      ipPrintBetti(u);
     404      if (dim == 2) PrintLn();
     405      res->data = SPrintEnd();
     406    }
     407    else
     408    {
     409      res->data = u->String(NULL, FALSE, dim);
     410      if (dim == 2)
     411      {
     412        char* ns = (char*) omAlloc(strlen((char*) res->data) + 2);
     413        strcpy(ns, (char*) res->data);
     414        omFree(res->data);
     415        strcat(ns, "\n");
     416        res->data = ns;
     417      }
     418    }
     419    omFree(ns);
     420  }
     421  return FALSE;
     422}
Note: See TracChangeset for help on using the changeset viewer.