Changeset 4b2155 in git for Singular/iparith.cc


Ignore:
Timestamp:
Apr 16, 1999, 9:53:44 AM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
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/iparith.cc

    r04d56f r4b2155  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iparith.cc,v 1.141 1999-04-15 09:57:03 obachman Exp $ */
     4/* $Id: iparith.cc,v 1.142 1999-04-16 07:53:37 obachman Exp $ */
    55
    66/*
     
    29522952  return FALSE;
    29532953}
    2954 static BOOLEAN jjSTRING(leftv res, leftv v)
    2955 {
    2956   res->data = (char *)v->String();
    2957   if (res->data==NULL)
    2958   {
    2959     Werror("cannot convert %s to string",Tok2Cmdname(v->Typ()));
    2960     return TRUE;
    2961   }
    2962   return FALSE;
    2963 }
    29642954static BOOLEAN jjSort_Id(leftv res, leftv v)
    29652955{
    29662956  res->data = (char *)idSort((ideal)v->Data());
    2967   return FALSE;
    2968 }
    2969 static BOOLEAN jjSTRING_PROC(leftv res, leftv v)
    2970 {
    2971   procinfov pi = IDPROC((idhdl)v->data);
    2972   if((pi->language == LANG_SINGULAR) && (pi->data.s.body!=NULL))
    2973   //if(pi->language == LANG_SINGULAR)
    2974   {
    2975     //if(pi->data.s.body==NULL)
    2976     //  iiGetLibProcBuffer(IDPROC((idhdl)v->data));
    2977     res->data=mstrdup(pi->data.s.body);
    2978   }
    2979   else
    2980     res->data=mstrdup("");
    29812957  return FALSE;
    29822958}
     
    35593535,{jjSTD,        STD_CMD,         MODUL_CMD,      MODUL_CMD }
    35603536,{jjDUMMY,      STRING_CMD,      STRING_CMD,     STRING_CMD }
    3561 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     INT_CMD }
    3562 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     POLY_CMD }
    3563 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     VECTOR_CMD }
    3564 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     NUMBER_CMD }
    3565 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     MATRIX_CMD }
    3566 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     MODUL_CMD }
    3567 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     IDEAL_CMD }
    3568 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     MAP_CMD }
    3569 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     INTVEC_CMD }
    3570 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     INTMAT_CMD }
    3571 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     LINK_CMD }
    3572 ,{jjSTRING_PROC,STRING_CMD,      STRING_CMD,     PROC_CMD }
    3573 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     RING_CMD }
    3574 ,{jjSTRING,     STRING_CMD,      STRING_CMD,     QRING_CMD }
    35753537,{jjSYSTEM,     SYSTEM_CMD,      NONE,           STRING_CMD }
    35763538,{jjSYZYGY,     SYZYGY_CMD,      MODUL_CMD,      IDEAL_CMD }
     
    39263888  return FALSE;
    39273889}
     3890static BOOLEAN jjINTMAT3(leftv res, leftv u, leftv v,leftv w)
     3891{
     3892  intvec* im= new intvec((int)v->Data(),(int)w->Data(), 0);
     3893  intvec* arg = (intvec*) u->Data();
     3894  int i, n = min(im->cols()*im->rows(), arg->cols()*arg->rows());
     3895 
     3896  for (i=0; i<n; i++)
     3897  {
     3898    (*im)[i] = (*arg)[i];
     3899  }
     3900 
     3901  res->data = (char *)im;
     3902  return FALSE;
     3903}
    39283904static BOOLEAN jjJET_P_IV(leftv res, leftv u, leftv v, leftv w)
    39293905{
     
    42274203//,{jjCALL3MANY,      INTERSECT_CMD,  NONE,   DEF_CMD,    DEF_CMD,    DEF_CMD }
    42284204,{lInsert3,         INSERT_CMD, LIST_CMD,   LIST_CMD,   DEF_CMD,    INT_CMD }
     4205,{jjINTMAT3,        INTMAT_CMD, INTMAT_CMD, INTMAT_CMD, INT_CMD,    INT_CMD}
    42294206,{jjCALL3MANY,      INTVEC_CMD, INTVEC_CMD, DEF_CMD,    DEF_CMD,    DEF_CMD }
    42304207,{jjJET_P_IV,       JET_CMD,    POLY_CMD,   POLY_CMD,   INT_CMD,    INTVEC_CMD }
     
    45874564static BOOLEAN jjSTRING_PL(leftv res, leftv v)
    45884565{
    4589   if ((v!=NULL)&&(v->next==NULL))
    4590     return iiExprArith1(res,v,iiOp);
    4591   int sl=0;
    4592   leftv h=v,nachher;
    4593   sleftv tmpR;
    4594   BOOLEAN bo;
    4595   char *sum=NULL;
    4596   while(h!=NULL)
    4597   {
    4598     /* convert to string =================================*/
    4599     nachher=h->next;
    4600     h->next=NULL;
    4601     bo=iiExprArith1(&tmpR,h,iiOp);
    4602     if(bo)
    4603     {
    4604       h->next=nachher;
    4605       FreeL(sum);
    4606       return TRUE;
    4607     }
    4608     /* append to 'sum' =================================*/
    4609     if(sum==NULL)
    4610     {
    4611       sum=(char *)tmpR.data;
    4612       sl=strlen(sum);
    4613     }
    4614     else
    4615     {
    4616       int nl=strlen((char *)tmpR.data);
    4617       char *s=(char *)AllocL(sl+nl+1);
    4618       memcpy(s,sum,sl);
    4619       memcpy(s+sl,(char *)tmpR.data,nl);
    4620       s[sl+nl]='\0';
    4621       sl+=nl;
    4622       FreeL(sum);
    4623       sum=s;
    4624     }
    4625     /* next sleftv =================================*/
    4626     h->next=nachher;
    4627     h=nachher;
    4628   }
    4629   if (sum==NULL) sum=mstrdup("");
    4630   res->data=(char *)sum;
     4566  if (v == NULL)
     4567  {
     4568    res->data = mstrdup("");
     4569    return FALSE;
     4570  }
     4571  int n = v->listLength();
     4572  if (n == 1)
     4573  {
     4574    res->data = v->String();
     4575    return FALSE;
     4576  }
     4577 
     4578  char** slist = (char**) Alloc(n*sizeof(char*));
     4579  int i, j;
     4580 
     4581  for (i=0, j=0; i<n; i++, v = v ->next)
     4582  {
     4583    slist[i] = v->String();
     4584    assume(slist[i] != NULL);
     4585    j+=strlen(slist[i]);
     4586  }
     4587  char* s = (char*) AllocL((j+1)*sizeof(char));
     4588  *s='\0';
     4589  for (i=0;i<n;i++)
     4590  {
     4591    strcat(s, slist[i]);
     4592    FreeL(slist[i]);
     4593  }
     4594  Free(slist, n*sizeof(char*));
     4595  res->data = s;
    46314596  return FALSE;
    46324597}
Note: See TracChangeset for help on using the changeset viewer.