Changeset a79a128 in git for Singular/ipprint.cc


Ignore:
Timestamp:
Apr 17, 1999, 4:58:54 PM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
a30caa3e79912e5d42b9d62c6d2e1aa1239e5486
Parents:
b45d9738be1be20b4a90b80e61feae602bc1558d
Message:
* use vsnprintf, instead of vsprintf, when possible
* new string and print implementation
* small bug fixes in iparith.cc


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

Legend:

Unmodified
Added
Removed
  • Singular/ipprint.cc

    rb45d97 ra79a128  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipprint.cc,v 1.9 1999-04-17 12:30:18 Singular Exp $ */
     4/* $Id: ipprint.cc,v 1.10 1999-04-17 14:58:49 obachman Exp $ */
    55/*
    66* ABSTRACT: interpreter: printing
     
    1818#include "ipshell.h"
    1919#include "ipprint.h"
     20#include "ideals.h"
    2021
    2122/*2
    2223* print for: int, string, poly, vector, ideal
    2324*/
    24 BOOLEAN jjPRINT_GEN(leftv res, leftv u)
    25 {
    26   char *s=u->String();
    27   if (s==NULL) return TRUE;
    28   PrintS(s);
    29   PrintLn();
    30   FreeL((ADDRESS)s);
    31   return FALSE;
    32 }
    33 
    34 /*2
    35 * print for: list
    36 */
    37 BOOLEAN jjPRINT_LIST(leftv res, leftv u)
    38 {
    39   u->Print();
    40   return FALSE;
    41 }
    42 
    4325/*2
    4426* print for: intvec
    4527*/
    46 BOOLEAN jjPRINT_INTVEC(leftv res, leftv u)
     28static BOOLEAN ipPrint_INTVEC(leftv u)
    4729{
    4830  intvec *v=(intvec *)u->Data();
     
    5537* print for: intmat
    5638*/
    57 BOOLEAN jjPRINT_INTMAT(leftv res, leftv u)
     39static BOOLEAN ipPrint_INTMAT(leftv u)
    5840{
    5941  intvec *v=(intvec *)u->Data();
     
    7355* internal print for: matrix
    7456*/
    75 void jjPRINT_MA0(matrix m, const char *name)
     57static void ipPrint_MA0(matrix m, const char *name)
    7658{
    7759  if (MATCOLS(m)>0)
     
    196178* print for: matrix
    197179*/
    198 BOOLEAN jjPRINT_MA(leftv res, leftv u)
     180static BOOLEAN ipPrint_MA(leftv u)
    199181{
    200182  matrix m=(matrix)u->Data();
    201   jjPRINT_MA0(m,u->Fullname());
     183  ipPrint_MA0(m,u->Fullname());
    202184  return FALSE;
    203185}
     
    206188* print for: vector
    207189*/
    208 BOOLEAN jjPRINT_V(leftv res, leftv u)
     190static BOOLEAN ipPrint_V(leftv u)
    209191{
    210192  polyset m=NULL;
     
    232214}
    233215
     216BOOLEAN jjPRINT(leftv res, leftv u)
     217{
     218  switch(u->Typ())
     219  {
     220      case INTVEC_CMD:
     221        return ipPrint_INTVEC(u);
     222       
     223      case INTMAT_CMD:
     224        return ipPrint_INTMAT(u);
     225       
     226      case MATRIX_CMD:
     227        return ipPrint_MA(u);
     228
     229      case IDEAL_CMD:
     230      {
     231        char* s = u->String();
     232        PrintS(s);
     233        PrintLn();
     234        FreeL(s);
     235        return FALSE;
     236      }
     237     
     238      case MODUL_CMD:
     239      {
     240        matrix m = idModule2Matrix(idCopy((ideal) u->Data()));
     241        ipPrint_MA0(m, u->Fullname());
     242        idDelete((ideal *) &m);
     243        return FALSE;
     244      }
     245     
     246      case VECTOR_CMD:
     247        return ipPrint_V(u);
     248       
     249      default:
     250        u->Print();
     251        return FALSE;
     252  }
     253}
     254
     255
    234256/*2
    235257* dbprint
     
    252274      hh=h->next;
    253275      h->next=NULL;
    254       if (iiExprArith1(res,h,PRINT_CMD)) return TRUE;
     276      if (jjPRINT(res, h)) return TRUE;
    255277      h->next=hh;
    256278      h=hh;
     
    260282}
    261283
     284static void ipPrintBetti(leftv u)
     285{
     286  int i,j;
     287  intvec * betti=(intvec *)u->Data();
     288  // head line --------------------------------------------------------
     289  PrintS("      "); // 6 spaces for no. and :
     290  for(j=0;j<betti->cols();j++) Print(" %5d",j); // 6 spaces pro column
     291  PrintS("\n------"); // 6 spaces for no. and :
     292  for(j=0;j<betti->cols();j++) PrintS("------"); // 6 spaces pro column
     293  PrintLn();
     294  // the table --------------------------------------------------------
     295  for(i=0;i<betti->rows();i++)
     296  {
     297    Print("%5d:",i);
     298    for(j=1;j<=betti->cols();j++)
     299    {
     300      Print(" %5d",IMATELEM(*betti,i+1,j));
     301    }
     302    PrintLn();
     303  }
     304  // sum --------------------------------------------------------------
     305  PrintS("------"); // 6 spaces for no. and :
     306  for(j=0;j<betti->cols();j++) PrintS("------"); // 6 spaces pro column
     307  PrintS("\ntotal:");
     308  for(j=0;j<betti->cols();j++)
     309  {
     310    int s=0;
     311    for(i=0;i<betti->rows();i++)
     312    {
     313      s+=IMATELEM(*betti,i+1,j+1);
     314    }
     315    Print(" %5d",s); // 6 spaces pro column
     316  }
     317  PrintLn();
     318}
     319
     320
    262321/*2
    263322* print(...,"format")
     
    268327  if ((u->Typ()==INTMAT_CMD)&&(strcmp((char *)v->Data(),"betti")==0))
    269328  {
    270     int i,j;
    271     intvec * betti=(intvec *)u->Data();
    272     // head line --------------------------------------------------------
    273     PrintS("      "); // 6 spaces for no. and :
    274     for(j=0;j<betti->cols();j++) Print(" %5d",j); // 6 spaces pro column
    275     PrintS("\n------"); // 6 spaces for no. and :
    276     for(j=0;j<betti->cols();j++) PrintS("------"); // 6 spaces pro column
    277     PrintLn();
    278     // the table --------------------------------------------------------
    279     for(i=0;i<betti->rows();i++)
    280     {
    281       Print("%5d:",i);
    282       for(j=1;j<=betti->cols();j++)
    283       {
    284         Print(" %5d",IMATELEM(*betti,i+1,j));
    285       }
    286       PrintLn();
    287     }
    288     // sum --------------------------------------------------------------
    289     PrintS("------"); // 6 spaces for no. and :
    290     for(j=0;j<betti->cols();j++) PrintS("------"); // 6 spaces pro column
    291     PrintS("\ntotal:");
    292     for(j=0;j<betti->cols();j++)
    293     {
    294       int s=0;
    295       for(i=0;i<betti->rows();i++)
    296       {
    297         s+=IMATELEM(*betti,i+1,j+1);
    298       }
    299       Print(" %5d",s); // 6 spaces pro column
    300     }
    301     PrintLn();
     329    ipPrintBetti(u);
     330    res->data = NULL;
     331    res->rtyp = NONE;
    302332    return FALSE;
    303333  }
    304334/* ======================== end betti ================================= */
    305335
    306   return jjPRINT_GEN(res,u);
    307 }
     336  if (strcmp((char *)v->Data(),"%s") == 0)
     337  {
     338    res->data = (char*) u->String();
     339  }
     340  else if (strcmp((char *)v->Data(),"%;") == 0)
     341  {
     342    SPrintStart();
     343    u->Print();
     344    res->data = SPrintEnd();
     345  }
     346  else if  (strcmp((char *)v->Data(),"%p") == 0)
     347  {
     348    SPrintStart();
     349    iiExprArith1(res, u, PRINT_CMD);
     350    res->data = SPrintEnd();
     351  }
     352  else if (strcmp((char *)v->Data(),"%b") == 0 && (u->Typ()==INTMAT_CMD))
     353  {
     354    SPrintStart();
     355    ipPrintBetti(u);
     356    res->data = SPrintEnd();
     357  }
     358  else
     359  {
     360    res->data = u->String();
     361  }
     362   
     363  res->rtyp = STRING_CMD;
     364  return FALSE;
     365}
     366
     367
     368
     369
     370
     371
     372
     373
     374
     375
     376
     377
     378
     379
Note: See TracChangeset for help on using the changeset viewer.