Changeset 46d09b in git


Ignore:
Timestamp:
Jun 13, 1998, 2:44:51 PM (26 years ago)
Author:
Kai Krüger <krueger@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
fa833c0e6245af29581a651d73e8740e92ad2ca7
Parents:
24c10ac334406bcf0c360f28d2f85e95a6a58946
Message:
Added developpement for Namespaces. Need to define HAVE_NAMESPACES first to activate it.


git-svn-id: file:///usr/local/Singular/svn/trunk@2138 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • Singular/extra.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR      *
    33*****************************************/
    4 /* $Id: extra.cc,v 1.55 1998-06-12 10:13:32 Singular Exp $ */
     4/* $Id: extra.cc,v 1.56 1998-06-13 12:44:36 krueger Exp $ */
    55/*
    66* ABSTRACT: general interface to internals of Singular ("system" command)
     
    208208        #ifdef TEST_MAC_ORDER
    209209          TEST_FOR("MAC_ORDER");
     210        #endif
     211        #ifdef HAVE_NAMESPACES
     212          TEST_FOR("Namespaces");
     213        #endif
     214        #ifdef HAVE_DYNAMIC_LOADING
     215          TEST_FOR("DynamicLoading");
    210216        #endif
    211217          ;
  • Singular/grammar.y

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: grammar.y,v 1.38 1998-05-28 16:50:46 Singular Exp $ */
     4/* $Id: grammar.y,v 1.39 1998-06-13 12:44:37 krueger Exp $ */
    55/*
    66* ABSTRACT: SINGULAR shell grammatik
     
    8181  if (currid!=NULL)
    8282  {
    83     killid(currid,&idroot);
     83    killid(currid,&IDROOT);
    8484    currid = NULL;
    8585  }
     
    444444        | elemexpr COLONCOLON extendedid
    445445          {
    446             idhdl r=idroot;
     446            idhdl r=IDROOT;
    447447            if ($1.Typ()!=PACKAGE_CMD) MYYERROR("<package>::<id> expected");
     448#ifdef HAVE_NAMESPACES
     449            namespaceroot->push( IDPACKAGE((idhdl)$1.data),
     450                                 ((sleftv)$1).name);
     451            syMake(&$$,$3);
     452            namespaceroot->pop();
     453#else /* HAVE_NAMESPACES */
    448454            idroot=IDPACKAGE((idhdl)$1.data)->idroot;
    449455            syMake(&$$,$3);
    450456            idroot=r;
     457#endif /* HAVE_NAMESPACES */
    451458          }
    452459        | '[' exprlist ']'
     
    828835        ROOT_DECL elemexpr
    829836          {
    830             if (iiDeclCommand(&$$,&$2,myynest,$1,&idroot)) YYERROR;
     837            if (iiDeclCommand(&$$,&$2,myynest,$1,&IDROOT)) YYERROR;
    831838          }
    832839        | ROOT_DECL_LIST elemexpr
    833840          {
    834             if (iiDeclCommand(&$$,&$2,myynest,$1,&idroot)) YYERROR;
     841            if (iiDeclCommand(&$$,&$2,myynest,$1,&IDROOT)) YYERROR;
    835842          }
    836843        | RING_DECL elemexpr
     
    864871        | INTMAT_CMD elemexpr '[' expr ']' '[' expr ']'
    865872          {
    866             if (iiDeclCommand(&$$,&$2,myynest,$1,&idroot)) YYERROR;
     873            if (iiDeclCommand(&$$,&$2,myynest,$1,&IDROOT)) YYERROR;
    867874            int r; TESTSETINT($4,r);
    868875            int c; TESTSETINT($7,c);
     
    880887        | INTMAT_CMD elemexpr
    881888          {
    882             if (iiDeclCommand(&$$,&$2,myynest,$1,&idroot)) YYERROR;
     889            if (iiDeclCommand(&$$,&$2,myynest,$1,&IDROOT)) YYERROR;
    883890            leftv v=&$$;
    884891            idhdl h;
     
    902909            else
    903910            {
    904               if (iiDeclCommand(&r,&$3,myynest,t,&idroot)) YYERROR;
     911              if (iiDeclCommand(&r,&$3,myynest,t,&IDROOT)) YYERROR;
    905912            }
    906913            leftv v=&$1;
     
    912919        | PROC_CMD elemexpr
    913920          {
    914             if (iiDeclCommand(&$$,&$2,myynest,PROC_CMD,&idroot,TRUE)) YYERROR;
     921            if (iiDeclCommand(&$$,&$2,myynest,PROC_CMD,&IDROOT,TRUE)) YYERROR;
    915922          }
    916923        ;
     
    10791086        {
    10801087          if ((strcmp($3,"to")!=0) ||
    1081           (($4.Typ()!=PACKAGE_CMD) && ($4.Typ()!=INT_CMD)))
     1088          (($4.Typ()!=PACKAGE_CMD) && ($4.Typ()!=INT_CMD) &&
     1089           ($4.Typ()!=STRING_CMD)))
    10821090            MYYERROR("export <id> to <package|int>");
    10831091          FreeL((ADDRESS)$3);
     
    10881096          else
    10891097          {
    1090             if (iiExport(&$2,0,IDPACKAGE((idhdl)$4.data)->idroot))
    1091               YYERROR;
     1098            if ($4.Typ()==PACKAGE_CMD) {
     1099              if (iiExport(&$2,0,IDPACKAGE((idhdl)$4.data)->idroot))
     1100                YYERROR;
     1101            }
     1102            else
     1103            {
     1104             printf("String: %s;\n", (char *)$4.data);
     1105            }
    10921106          }
    10931107        }
     
    12441258                  if (IDLEV(h)!=0)
    12451259                  {
     1260#ifdef HAVE_NAMESPACES
     1261                    if(namespaceroot->isroot) {
     1262                      if (iiExport(&$2,myynest-1)) YYERROR;
     1263                    } else {
     1264                      if (iiExport(&$2,myynest-1, NSROOT(namespaceroot->next))) YYERROR;
     1265                    }
     1266#else /* HAVE_NAMESPACES */
    12461267                    if (iiExport(&$2,myynest-1)) YYERROR;
     1268#endif /* HAVE_NAMESPACES */
    12471269                    //if (TEST_OPT_KEEPVARS)
    12481270                    //{
     
    14181440          {
    14191441            procinfov pi;
    1420             idhdl h = enterid($2,myynest,PROC_CMD,&idroot,FALSE);
     1442            idhdl h = enterid($2,myynest,PROC_CMD,&IDROOT,FALSE);
    14211443            if (h==NULL) {FreeL((ADDRESS)$3); YYERROR;}
    14221444            iiInitSingularProcinfo(IDPROC(h),"", $2, 0, 0);
     
    14271449        | PROC_DEF STRINGTOK BLOCKTOK
    14281450          {
    1429             idhdl h = enterid($1,myynest,PROC_CMD,&idroot,FALSE);
     1451            idhdl h = enterid($1,myynest,PROC_CMD,&IDROOT,FALSE);
    14301452            if (h==NULL)
    14311453            {
     
    14471469          {
    14481470            FreeL((ADDRESS)$3);
    1449             idhdl h = enterid($1,myynest,PROC_CMD,&idroot,FALSE);
     1471            idhdl h = enterid($1,myynest,PROC_CMD,&IDROOT,FALSE);
    14501472            if (h==NULL)
    14511473            {
     
    14781500            sleftv tmp_expr;
    14791501            //yylineno--;
    1480             if ((iiDeclCommand(&tmp_expr,&$2,myynest,DEF_CMD,&idroot))
     1502            if ((iiDeclCommand(&tmp_expr,&$2,myynest,DEF_CMD,&IDROOT))
    14811503            || (iiParameter(&tmp_expr)))
    14821504              YYERROR;
  • Singular/iparith.cc

    r24c10ac r46d09b  
    42334233static BOOLEAN jjNAMES0(leftv res, leftv v)
    42344234{
    4235   res->data=(void *)ipNameList(idroot);
     4235  res->data=(void *)ipNameList(IDROOT);
    42364236  return FALSE;
    42374237}
  • Singular/ipassign.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipassign.cc,v 1.30 1998-05-28 16:50:48 Singular Exp $ */
     4/* $Id: ipassign.cc,v 1.31 1998-06-13 12:44:40 krueger Exp $ */
    55
    66/*
     
    592592    {
    593593      sleftv ll;
    594       iiDeclCommand(&ll,l,myynest,rt,&idroot);
     594      iiDeclCommand(&ll,l,myynest,rt,&IDROOT);
    595595      memcpy(l,&ll,sizeof(sleftv));
    596596    }
  • Singular/ipid.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipid.cc,v 1.11 1998-04-07 17:52:45 Singular Exp $ */
     4/* $Id: ipid.cc,v 1.12 1998-06-13 12:44:40 krueger Exp $ */
    55
    66/*
     
    2727#include "ipid.h"
    2828
     29#ifdef HAVE_NAMESPACES
     30namehdl namespaceroot = NULL;
     31#define TEST
     32#else /* HAVE_NAMESPACES */
    2933idhdl idroot = NULL;
     34#endif /* HAVE_NAMESPACES */
    3035idhdl currRingHdl = NULL;
    3136ring  currRing = NULL;
     
    7277  IDTYP(h)  = t;
    7378  IDLEV(h)  = lev;
     79#ifdef HAVE_NAMESPACES
     80  h->ref    = 1;
     81#endif /* HAVE_NAMESPACES */
    7482  IDNEXT(h) = this;
    7583  if (init)
     
    136144  idhdl h;
    137145  // is it the currRing - id ?
     146#ifdef HAVE_NAMESPACES
     147  namehdl topnsroot = namespaceroot->root;
     148#endif
    138149  if ((currRingHdl!=NULL)
    139150  &&(IDLEV(currRingHdl)!=lev)
     
    161172  }
    162173  // is it already defined in idroot ?
    163   else if (*root != idroot)
    164   {
     174  else if (*root != IDROOT)
     175  {
     176#ifdef HAVE_NAMESPACES
     177    if ((h=namespaceroot->get(s,lev))!=NULL)
     178#else
    165179    if ((h=idroot->get(s,lev))!=NULL)
     180#endif /* HAVE_NAMESPACES */
    166181    {
    167182      if (IDLEV(h)!=lev)
     
    174189          Warn("redefining %s **",s);
    175190        IDID(h)=NULL;
    176         killhdl(h,&idroot);
     191        killhdl(h,&IDROOT);
    177192      }
    178193      else
     
    182197    }
    183198  }
     199#ifdef HAVE_NAMESPACES
     200  // is it already defined in toplevel idroot ?
     201  else if (*root != NSROOT(topnsroot))
     202  {
     203    if ((h=topnsroot->get(s,lev))!=NULL)
     204    {
     205#if 0
     206      if (IDLEV(h)!=lev)
     207      {
     208        s=mstrdup(s);
     209      }
     210      else if ((IDTYP(h) == t)||(t==DEF_CMD))
     211      {
     212        if (BVERBOSE(V_REDEFINE))
     213          Warn("1 redefining %s **",s);
     214        IDID(h)=NULL;
     215        killhdl(h,&(NSROOT(topnsroot)));
     216      }
     217      else
     218      {
     219        goto errlabel;
     220      }
     221#else
     222      s=mstrdup(s);
     223#endif
     224    }
     225  }
     226#endif /* HAVE_NAMESPACES */
    184227  // is it already defined in currRing->idroot ?
    185228  else if ((currRing!=NULL)&&((*root) != currRing->idroot))
     
    245288  else
    246289  {
    247     idhdl s=idroot;
     290    idhdl s=IDROOT;
    248291    while ((s!=h) && (s!=NULL)) s=s->next;
    249292    if (s==NULL) killhdl(h,&currRing->idroot);
    250     else killhdl(h,&idroot);
     293    else killhdl(h,&IDROOT);
    251294  }
    252295}
     
    267310  // package  -------------------------------------------------------------
    268311  if ((IDTYP(h) == RING_CMD) || (IDTYP(h) == QRING_CMD)
    269   || (IDTYP(h) == PACKAGE_CMD) )
     312  || (IDTYP(h) == PACKAGE_CMD) /*|| (IDTYP(h) == POINTER_CMD)*/)
    270313  {
    271314    idhdl savecurrRingHdl = currRingHdl;
     
    305348      }
    306349    }
    307     rKill(h);
     350#ifdef HAVE_NAMESPACES
     351    if((IDTYP(h)==PACKAGE_CMD) || (IDTYP(h)==POINTER_CMD))
     352      Print(">>>>>>Free package\n");
     353    else
     354#endif /* HAVE_NAMESPACES */
     355      rKill(h);
    308356  }
    309357  // poly / vector -------------------------------------------------------
     
    397445idhdl ggetid(const char *n)
    398446{
     447#ifdef HAVE_NAMESPACES
     448  idhdl h =namespaceroot->get(n,myynest, TRUE); // search in toplevel namespace
     449  idhdl h2=namespaceroot->get(n,myynest); // search in current namespace
     450  idhdl h3=NULL;
     451  if ((currRing!=NULL) && ((h2==NULL)||(IDLEV(h2)!=myynest)))
     452  {
     453    h3 = currRing->idroot->get(n,myynest);
     454  }
     455  if (h3==NULL) {
     456    if (h2==NULL) return h; else return h2;
     457  }
     458  return h3;
     459#else /* HAVE_NAMESPACES */
    399460  idhdl h = idroot->get(n,myynest);
    400461  idhdl h2=NULL;
     
    405466  if (h2==NULL) return h;
    406467  return h2;
     468#endif /* HAVE_NAMESPACES */
    407469}
    408470
     
    471533    {
    472534      /*move 'tomove' to ring id's*/
    473       ipSwapId(tomove,idroot,currRing->idroot);
     535      ipSwapId(tomove,IDROOT,currRing->idroot);
    474536    }
    475537    else
    476538    {
    477539      /*move 'tomove' to global id's*/
    478       ipSwapId(tomove,currRing->idroot,idroot);
     540      ipSwapId(tomove,currRing->idroot,IDROOT);
    479541    }
    480542  }
     
    525587}
    526588
     589#ifdef HAVE_NAMESPACES
     590char *getnamelev()
     591{
     592  char buf[256];
     593  sprintf(buf, "(%s:%d)", namespaceroot->name,namespaceroot->lev);
     594  return(buf);
     595}
     596
     597namehdl namerec::push(package pack, char *name, BOOLEAN init)
     598{
     599  //printf("PUSH: put entry (%s) on stack\n", name);
     600  namehdl ns = (namerec *)Alloc0(sizeof(namerec));
     601  ns->next   = this;
     602  if(this==NULL && !init) {
     603    printf("PUSH: this is NULL and init not set.\n");
     604    init=TRUE;
     605  }
     606  if(init) {
     607    ns->pack   = (ip_package *)Alloc0(sizeof(ip_package));
     608    ns->isroot = TRUE;
     609    ns->lev    = 1;
     610  } else {
     611    ns->pack   = pack;
     612    ns->lev    = this->lev+1;
     613  }
     614  ns->name   = mstrdup(name);
     615
     616
     617  //if(ns->isroot) Print("PUSH: Add root NameSpace\n");
     618  if(ns->isroot) ns->root=ns; else ns->root = this->root;
     619  namespaceroot = ns;
     620  if(init && ns->isroot) {
     621    idhdl pl = enterid( mstrdup("toplevel"),0, PACKAGE_CMD,
     622                      &NSROOT(namespaceroot), TRUE );
     623   
     624  }
     625  return(namespaceroot);
     626}
     627
     628namehdl namerec::pop()
     629{
     630  namehdl ns;
     631  //printf("POP: remove entry (%s)\n", this->name);
     632  if(this==NULL) return NULL;
     633  if(isroot) {
     634    //printf("POP: base. woul'd do it.\n");
     635    return this;
     636  }
     637  ns = this;
     638  namespaceroot = this->next;
     639  FreeL((ADDRESS)ns->name);
     640  Free((ADDRESS)ns, sizeof(namerec));
     641  return(namespaceroot);
     642}
     643
     644idhdl namerec::get(const char * s, int lev, int root)
     645{
     646  namehdl ns;
     647  if(root) {
     648    ns = this->root;
     649  } else {
     650    ns = this;
     651  }
     652  //printf("//====== namerec::get(%s, %d) from '%s'\n", s, lev, ns->name);
     653  if(ns==NULL) {
     654    //printf("//======== namerec::get() from null\n");
     655    return NULL;
     656  }
     657  return( NSROOT(ns)->get(s, lev));
     658}
     659#endif /* HAVE_NAMESPACES */
  • Singular/ipid.h

    r24c10ac r46d09b  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: ipid.h,v 1.13 1998-06-02 15:29:55 Singular Exp $ */
     6/* $Id: ipid.h,v 1.14 1998-06-13 12:44:41 krueger Exp $ */
    77/*
    88* ABSTRACT: identfier handling
     
    108108
    109109  short      lev;
     110  short      ref;
    110111
    111112#define IDNEXT(a)    ((a)->next)
     
    137138};
    138139
     140#ifdef HAVE_NAMESPACES
     141class namerec {
     142  public:
     143  namehdl    next;
     144  namehdl    root;
     145  package    pack;
     146  bool       isroot;
     147  char *     name;
     148  int        lev;
     149#define NSROOT(a) ((a)->pack->idroot)
     150 
     151  namerec()  { memset(this,0,sizeof(*this)); }
     152  //namehdl    Set(idhdl root);
     153  namehdl    pop();
     154  namehdl    push(package pack, char *name, BOOLEAN init=FALSE);
     155  idhdl      get(const char * s, int lev, int root=FALSE);
     156};
    139157
     158extern namehdl namespaceroot;
     159#define IDROOT (NSROOT(namespaceroot))
     160#else /* HAVE_NAMESPACES */
    140161extern idhdl      idroot;
     162#define IDROOT idroot
     163#endif /* HAVE_NAMESPACES */
     164
    141165extern idhdl      currRingHdl;
    142166/*extern ring     currRing;  in structs.h */
  • Singular/iplib.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: iplib.cc,v 1.29 1998-06-03 08:47:15 obachman Exp $ */
     4/* $Id: iplib.cc,v 1.30 1998-06-13 12:44:42 krueger Exp $ */
    55/*
    66* ABSTRACT: interpreter: LIB and help
     
    316316  int err;
    317317  procinfov pi = IDPROC(pn);
     318#ifdef HAVE_NAMESPACES
     319  char *plib = iiConvName(pi->libname);
     320  idhdl ns = namespaceroot->get(plib,0, TRUE);
     321  FreeL(plib);
     322  if(ns != NULL) {
     323    namespaceroot->push(IDPACKAGE(ns), IDID(ns));
     324    //printf("iiMake_proc: namespace found.\n");
     325  } else {
     326    namespaceroot->push(namespaceroot->root->pack, "toplevel");
     327    //printf("iiMake_proc: staying in TOP-LEVEL\n");
     328  }
     329#else /* HAVE_NAMESPACES */
    318330  if(pi->is_static && myynest==0) {
    319331    Werror("'%s::%s()' is a local procedure and cannot be accessed by an user.",
     
    321333    return NULL;
    322334  }
     335#endif /* HAVE_NAMESPACES */
    323336  iiCheckNest();
    324337  iiLocalRing[myynest]=currRing;
     
    400413    iiCurrArgs=NULL;
    401414  }
     415#ifdef HAVE_NAMESPACES
     416  namespaceroot->pop();
     417#endif /* HAVE_NAMESPACES */
    402418  if (err) return NULL;
    403419  return &iiRETURNEXPR[myynest+1];
     
    453469  char libnamebuf[128];
    454470  idhdl h,hl;
     471#ifdef HAVE_NAMESPACES
     472  idhdl pl;
     473#endif /* HAVE_NAMESPACES */
    455474  int lines = 1;
    456475  long pos = 0L;
    457476  procinfov pi;
     477#ifdef HAVE_NAMESPACES
     478  char *plib = iiConvName(newlib);
     479#endif /* HAVE_NAMESPACES */
    458480  FILE * fp = feFopen( newlib, "r", libnamebuf, tellerror );
    459481  if (fp==NULL)
     
    461483    return TRUE;
    462484  }
     485#ifdef HAVE_NAMESPACES
     486  hl = namespaceroot->get("LIB",0, TRUE);
     487#else /* HAVE_NAMESPACES */
    463488  hl = idroot->get("LIB",0);
     489#endif /* HAVE_NAMESPACES */
    464490  if (hl==NULL)
    465491  {
     492#ifdef HAVE_NAMESPACES
     493    hl = enterid( mstrdup("LIB"),0, STRING_CMD,
     494                  &NSROOT(namespaceroot->root), FALSE );
     495#else /* HAVE_NAMESPACES */
    466496    hl = enterid( mstrdup("LIB"),0, STRING_CMD, &idroot, FALSE );
     497#endif /* HAVE_NAMESPACES */
    467498    IDSTRING(hl) = mstrdup(newlib);
    468499  }
     
    511542#endif
    512543  }
     544#ifdef HAVE_NAMESPACES
     545  pl = namespaceroot->get(plib,0, TRUE);
     546  if (pl==NULL)
     547  {
     548    pl = enterid( mstrdup(plib),0, PACKAGE_CMD,
     549                  &NSROOT(namespaceroot->root), TRUE );
     550  } else {
     551    Print("Found.\n");
     552    if(IDTYP(pl)!=PACKAGE_CMD) Print("not of typ package.\n");
     553  }
     554  namespaceroot->push(IDPACKAGE(pl), IDID(pl));
     555#endif /* HAVE_NAMESPACES */
    513556
    514557#ifdef HAVE_LIBPARSER
     
    524567  extern int lpverbose;
    525568  if (BVERBOSE(V_DEBUG_LIB)) lpverbose=1; else lpverbose=0;
     569# ifdef HAVE_NAMESPACES
     570   yylplex(newlib, libnamebuf, &lib_style, pl);
     571# else /* HAVE_NAMESPACES */
    526572  yylplex(newlib, libnamebuf, &lib_style);
     573# endif /* HAVE_NAMESPACES */
    527574  if(yylp_errno) {
    528575    Werror("Library %s: ERROR occured: in line %d, %d.", newlib, yylplineno,
     
    550597  reinit_yylp();
    551598  fclose( yylpin );
     599#ifdef HAVE_NAMESPACES
     600   namespaceroot->pop();
     601#endif /* HAVE_NAMESPACES */
    552602  {
    553603    libstackv ls;
     
    642692            char *p =  iiConvName(newlib);
    643693            Print("Init found:%s;\n", p);
    644             h = enterid( mstrdup(p), myynest, PROC_CMD, &idroot, FALSE );
     694#ifdef HAVE_NAMESPACES
     695             h = enterid( mstrdup(p), myynest, PROC_CMD, IDPACKAGE(pl), FALSE );
     696#else /* HAVE_NAMESPACES */
     697             h = enterid( mstrdup(p), myynest, PROC_CMD, &idroot, FALSE );
     698#endif /* HAVE_NAMESPACES */
    645699            FreeL((ADDRESS)p);
    646700          } else
    647701#endif
    648             h = enterid( mstrdup(proc), myynest, PROC_CMD, &idroot, FALSE );
     702#ifdef HAVE_NAMESPACES
     703            h = enterid(mstrdup(proc), myynest, PROC_CMD,
     704                      &IDPACKAGE(pl)->idroot, FALSE);
     705#else /* HAVE_NAMESPACES */
     706            h = enterid( mstrdup(proc), myynest, PROC_CMD, &idroot, FALSE);
     707#endif /* HAVE_NAMESPACES */
    649708          if (h!=NULL)
    650709          {
     
    705764  } while (fgets( buf, sizeof(buf), fp));
    706765  fclose( fp );
     766#ifdef HAVE_NAMESPACES
     767  namespaceroot->pop();
     768#endif /* HAVE_NAMESPACES */
    707769
    708770  //if (h!=NULL) IDPROC(h) = pi;
     
    718780#endif /* HAVE_LIBPARSER */
    719781  FreeL((ADDRESS)newlib);
     782#ifdef HAVE_NAMESPACES
     783   FreeL((ADDRESS)plib);
     784#endif /* HAVE_LIBPARSER */
    720785  return FALSE;
    721786}
     
    737802  pi->is_static = pstatic;
    738803  pi->data.s.proc_start = pos;
     804  pi->data.s.def_end    = 0L;
    739805  pi->data.s.help_start = 0L;
    740806  pi->data.s.help_end   = 0L;
     
    757823  idhdl h;
    758824
    759   h = enterid(mstrdup(procname),0, PROC_CMD, &idroot, FALSE);
     825  h = enterid(mstrdup(procname),0, PROC_CMD, &IDROOT, FALSE);
    760826  if ( h!= NULL ) {
    761827    Print("register binary proc: %s::%s\n", libname, procname);
     
    783849
    784850  memset(p,0,l);
    785   sprintf(p, "%s_init", libname);
     851  //sprintf(p, "%s_init", libname);
     852  sprintf(p, "%s", libname);
    786853  for(r=p; *r!='\0'; r++)
    787854  {
     
    796863{
    797864  idhdl h;
     865#ifdef HAVE_NAMESPACES
     866  idhdl pl;
     867#endif /* HAVE_NAMESPACES */
    798868  procinfo *proc;
    799869  char *name;
     
    801871  Print( "%-15s  %20s      %s,%s  %s,%s   %s,%s\n", "Library", "function",
    802872         "line", "start", "line", "body", "line", "example");
    803   for(h = idroot; h != NULL; h = IDNEXT(h))
     873#ifdef HAVE_NAMESPACES
     874  for(pl = IDROOT; pl != NULL; pl = IDNEXT(pl)) {
     875    if(IDTYP(pl) == PACKAGE_CMD) {
     876      for(h = IDPACKAGE(pl)->idroot; h != NULL; h = IDNEXT(h))
     877#else /* HAVE_NAMESPACES */
     878  for(h = IDROOT; h != NULL; h = IDNEXT(h))
     879#endif /* HAVE_NAMESPACES */
    804880  {
    805881    if(IDTYP(h) == PROC_CMD)
     
    810886        name = (char *)AllocL(strlen(IDID(h))+strlen(proc->procname)+4);
    811887        sprintf(name, "%s -> %s", IDID(h), proc->procname);
    812         Print( "%-15s  %20s ", proc->libname, name);
     888        Print( "%d %-15s  %20s ", proc->is_static ? 1 : 0, proc->libname, name);
    813889        FreeL(name);
    814890      }
    815891      else
    816         Print( "%-15s  %20s ", proc->libname, proc->procname);
     892        Print( "%d %-15s  %20s ", proc->is_static ? 1 : 0, proc->libname,
     893               proc->procname);
    817894      if(proc->language==LANG_SINGULAR)
    818895        Print("line %4d,%-5ld  %4d,%-5ld  %4d,%-5ld\n",
     
    822899      else if(proc->language==LANG_C)
    823900        Print("type: object\n");
    824 
     901#ifdef HAVE_NAMESPACES
     902          }
     903      }
     904#endif /* HAVE_NAMESPACES */
    825905    }
    826906  }
     
    843923void libstack::push(char *p, char *libname)
    844924{
     925#  ifdef HAVE_NAMESPACES
     926  idhdl hl = namespaceroot->get("LIB",0, TRUE);
     927#  else /* HAVE_NAMESPACES */
    845928  idhdl hl = idroot->get("LIB",0);
     929#  endif /* HAVE_NAMESPACES */
    846930  libstackv lp;
    847931  char *f = NULL;
  • Singular/ipshell.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipshell.cc,v 1.21 1998-05-12 10:01:07 Singular Exp $ */
     4/* $Id: ipshell.cc,v 1.22 1998-06-13 12:44:42 krueger Exp $ */
    55/*
    66* ABSTRACT:
     
    229229void killlocals(int v)
    230230{
    231   killlocals0(v,&idroot);
    232 
    233   idhdl h = idroot;
     231  killlocals0(v,&IDROOT);
     232
     233  idhdl h = IDROOT;
    234234  idhdl sh=currRingHdl;
    235235  BOOLEAN changed=FALSE;
     
    265265    {
    266266      really_all=TRUE;
    267       h=idroot;
     267      h=IDROOT;
    268268    }
    269269    else
     
    274274        if (iterate) list1(prefix,h,TRUE);
    275275        if ((IDTYP(h)==RING_CMD)
    276             || (IDTYP(h)==QRING_CMD)
    277             || (IDTYP(h)==PACKAGE_CMD))
     276            || (IDTYP(h)==QRING_CMD))
    278277        {
    279278          h=IDRING(h)->idroot;
    280279        }
     280        else if((IDTYP(h)==PACKAGE_CMD) || (IDTYP(h)==POINTER_CMD))
     281        {
     282          //Print("list_cmd:package or pointer\n");
     283          h=IDPACKAGE(h)->idroot;
     284        }
    281285        else
    282286          return;
     
    295299  }
    296300  else
    297     h = idroot;
     301    h = IDROOT;
    298302  start=h;
    299303  while (h!=NULL)
     
    303307    {
    304308      list1(prefix,h,start==currRingHdl);
    305       if ((((IDTYP(h)==RING_CMD)||(IDTYP(h)==QRING_CMD))
     309      if (((IDTYP(h)==RING_CMD)||(IDTYP(h)==QRING_CMD))
    306310        && (really_all || (all && (h==currRingHdl)))
    307311        && ((IDLEV(h)==0)||(IDLEV(h)==myynest)))
    308       ||(IDTYP(h)==PACKAGE_CMD))
    309312      {
    310313        list_cmd(0,IDID(h),"//      ",FALSE);
    311314      }
     315#ifdef HAVE_NAMESPACES
     316      if (IDTYP(h)==PACKAGE_CMD)
     317      {
     318        namespaceroot->push(IDPACKAGE(h), IDID(h));
     319        list_cmd(0,IDID(h),"//      ",FALSE);
     320        namespaceroot->pop();
     321      }
     322#endif /* HAVE_NAMESPACES */
    312323    }
    313324    h = IDNEXT(h);
     
    474485  int i;
    475486
     487#ifdef HAVE_NAMESPACES
     488  r=namespaceroot->get(theMap->preimage,myynest);
     489#else
    476490  r=idroot->get(theMap->preimage,myynest);
     491#endif /* HAVE_NAMESPACES */
    477492  if ((r!=NULL) && ((r->typ == RING_CMD) || (r->typ== QRING_CMD)))
    478493  {
     
    763778      else
    764779      {
     780#ifdef HAVE_NAMESPACES
     781        h=namespaceroot->get(v->name,toLev);
     782#else /* HAVE_NAMESPACES */
    765783        h=idroot->get(v->name,toLev);
    766         idhdl *root=&idroot;
     784#endif /* HAVE_NAMESPACES */
     785        idhdl *root=&IDROOT;
    767786        if ((h==NULL)&&(currRing!=NULL))
    768787        {
     
    825844      }
    826845      idhdl h=(idhdl)v->data;
    827       if (h==idroot)
    828       {
    829         idroot=h->next;
     846      if (h==IDROOT)
     847      {
     848        IDROOT=h->next;
    830849      }
    831850      else
    832851      {
    833         idhdl hh=idroot;
     852        idhdl hh=IDROOT;
    834853        while ((hh->next!=h)&&(hh->next!=NULL))
    835854          hh=hh->next;
  • Singular/libparse.h

    r24c10ac r46d09b  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: libparse.h,v 1.7 1998-06-02 15:29:56 Singular Exp $ */
     6/* $Id: libparse.h,v 1.8 1998-06-13 12:44:43 krueger Exp $ */
    77/*
    88* ABSTRACT: lib parsing
     
    1717                                 char *procname, int line, long pos,
    1818                                 BOOLEAN pstatic = FALSE);
     19#ifdef HAVE_NAMESPACES
     20int yylplex(char *libname, char *libfile, lib_style_types *lib_style,
     21           idhdl pl, lp_modes=LOAD_LIB);
     22#else /* HAVE_NAMESPACES */
    1923int yylplex(char *libname, char *libfile, lib_style_types *lib_style,
    2024            lp_modes=LOAD_LIB);
     25#endif /* HAVE_NAMESPACES */
     26
    2127void reinit_yylp();
    2228
  • Singular/libparse.l

    r24c10ac r46d09b  
    33*  Computer Algebra System SINGULAR     *
    44****************************************/
    5 /* $Id: libparse.l,v 1.24 1998-05-31 15:42:23 krueger Exp $ */
     5/* $Id: libparse.l,v 1.25 1998-06-13 12:44:44 krueger Exp $ */
    66#include <stdio.h>
    77#include <string.h>
     
    3333int current_pos(int i);
    3434void print_version(lp_modes mode, char *p);
     35#ifdef HAVE_NAMESPACES
     36void copy_string(lp_modes mode, idhdl pl);
     37#else /* HAVE_NAMESPACES */
    3538void copy_string(lp_modes mode);
     39#endif /* HAVE_NAMESPACES */
    3640void make_version(char *p, int what);
    3741
     
    147151
    148152#  undef YY_DECL
    149 #  define YY_DECL int yylex(char *newlib, char *libfile, \
     153#  ifdef HAVE_NAMESPACES
     154#    define YY_DECL int yylex(char *newlib, char *libfile, \
     155                               lib_style_types *lib_style, \
     156                               idhdl pl, lp_modes mode)
     157#  else /* HAVE_NAMESPACES */
     158#    define YY_DECL int yylex(char *newlib, char *libfile, \
    150159                                 lib_style_types *lib_style, \
    151160                                 lp_modes mode)
     161#  endif /* HAVE_NAMESPACES */
    152162
    153163#  undef YY_INPUT
     
    238248               printf("Version:%s;\n", libnamebuf);
    239249#else
     250#  ifdef HAVE_NAMESPACES
     251               h0 = enterid( mstrdup("version"), myynest, STRING_CMD,
     252                                  &IDPACKAGE(pl)->idroot, FALSE );
     253                if (h0!=NULL) {
     254                   IDSTRING(h0) = mstrdup(libnamebuf);
     255                }
     256#  else /* HAVE_NAMESPACES */
    240257               text_buffer = mstrdup(libnamebuf);
     258#  endif /* HAVE_NAMESPACES */
    241259#endif
    242260             }
     
    265283#else STANDALONE_PARSER
    266284             if( mode == LOAD_LIB) {
     285#  ifdef HAVE_NAMESPACES
     286                h0 = enterid( mstrdup(proc), myynest, PROC_CMD,
     287                                  &IDPACKAGE(pl)->idroot, FALSE );
     288#  else /* HAVE_NAMESPACES */
    267289               h0 = enterid( mstrdup(proc), myynest, PROC_CMD,
    268290                                   &idroot, FALSE );
     291#  endif /* HAVE_NAMESPACES */
    269292               if (h0!=NULL) {
    270293                 iiInitSingularProcinfo(IDPROC(h0), newlib, proc,
     
    603626
    604627<string>"\""             { quote--;
     628#ifdef HAVE_NAMESPACES
     629                            copy_string(mode, pl);
     630#else /* HAVE_NAMESPACES */
    605631                           copy_string(mode);
     632#endif /* HAVE_NAMESPACES */
    606633                           last_cmd = LP_NONE;
    607634                           if(old_state==phelp)
     
    736763}
    737764
     765#ifdef HAVE_NAMESPACES
     766void copy_string(lp_modes mode, idhdl pl)
     767#else /* HAVE_NAMESPACES */
    738768void copy_string(lp_modes mode)
     769#endif /* HAVE_NAMESPACES */
    739770{
    740771#  ifndef STANDALONE_PARSER
     
    752783    for(i=0;i<=len; i++) {
    753784      if(text_buffer[i]=='\\' &&
    754          (text_buffer[i+1]=='"' || text_buffer[i+1]=='{' ||
     785         (text_buffer[i+1]=='\"' || text_buffer[i+1]=='{' ||
    755786          text_buffer[i+1]=='}' || text_buffer[i+1]=='\\')) {
    756787        i++;
     
    759790      if(offset>0) text_buffer[i-offset] = text_buffer[i];
    760791    }
     792#    ifdef HAVE_NAMESPACES
     793    h0 = enterid( mstrdup("info"), myynest, STRING_CMD,
     794                        &IDPACKAGE(pl)->idroot, FALSE );
     795    if (h0!=NULL) {
     796       IDSTRING(h0) = mstrdup(text_buffer);
     797    }
     798#    endif /* HAVE_NAMESPACES */
    761799  }
    762800#  endif /* STANDALONE_PARSER */
  • Singular/mpsr_Get.cc

    r24c10ac r46d09b  
    33****************************************/
    44
    5 /* $Id: mpsr_Get.cc,v 1.16 1998-04-16 16:10:21 obachman Exp $ */
     5/* $Id: mpsr_Get.cc,v 1.17 1998-06-13 12:44:44 krueger Exp $ */
    66/***************************************************************
    77 *
     
    670670  {
    671671    h = mpsr_InitIdhdl(RING_CMD, r, name);
    672     h->next = idroot;
    673     idroot = h;
     672    h->next = IDROOT;
     673    IDROOT = h;
    674674  }
    675675
  • Singular/mpsr_GetMisc.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mpsr_GetMisc.cc,v 1.8 1998-03-23 22:51:01 obachman Exp $ */
     4/* $Id: mpsr_GetMisc.cc,v 1.9 1998-06-13 12:44:45 krueger Exp $ */
    55
    66/***************************************************************
     
    350350void mpsr_SetCurrRingHdl(ring r)
    351351{
    352   idhdl h = idroot, rh = NULL;
     352  idhdl h = IDROOT, rh = NULL;
    353353
    354354  if (r == NULL)
     
    396396    if (currRingHdl != NULL) mpsr_SetCurrRing(IDRING(currRingHdl), TRUE);
    397397    rSetHdl(rh, TRUE);
    398     rh->next = idroot;
    399     idroot = rh;
     398    rh->next = IDROOT;
     399    IDROOT = rh;
    400400    r->ref = 0;
    401401  }
     
    416416idhdl mpsr_FindIdhdl(char *name, ring &r)
    417417{
     418#ifdef HAVE_NAMESPACES
     419  idhdl h = (NSROOT(namespaceroot) != NULL ? namespaceroot->get(name, 0): (idhdl) NULL), h2;
     420#else /* HAVE_NAMESPACES */
    418421  idhdl h = (idroot != NULL ? idroot->get(name, 0): (idhdl) NULL), h2;
     422#endif /* HAVE_NAMESPACES */
    419423  r = NULL;
    420424 
     
    425429  }
    426430
    427   h = idroot;
     431  h = IDROOT;
    428432  while ( h != NULL)
    429433  {
  • Singular/mpsr_Put.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mpsr_Put.cc,v 1.8 1998-04-07 18:35:27 obachman Exp $ */
     4/* $Id: mpsr_Put.cc,v 1.9 1998-06-13 12:44:46 krueger Exp $ */
    55
    66
     
    493493                                      3));
    494494  // First, is the ring
     495#ifdef HAVE_NAMESPACES
     496  failr(mpsr_PutRingLeftv(link, (leftv) namespaceroot->get(m->preimage, 1)));
     497#else /* HAVE_NAMESPACES */
    495498  failr(mpsr_PutRingLeftv(link, (leftv) idroot->get(m->preimage, 1)));
     499#endif /* HAVE_NAMESPACES */
    496500
    497501  // Second, the name of the ring
     
    511515mpsr_Status_t mpsr_PutDump(MP_Link_pt link)
    512516{
    513   idhdl h = idroot, h2 = NULL, rh = currRingHdl;
     517  idhdl h = IDROOT, h2 = NULL, rh = currRingHdl;
    514518  ring r;
    515519  sip_command cmd;
  • Singular/ring.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ring.cc,v 1.25 1998-05-28 16:50:53 Singular Exp $ */
     4/* $Id: ring.cc,v 1.26 1998-06-13 12:44:47 krueger Exp $ */
    55
    66/*
     
    189189  idhdl tmp=NULL;
    190190
    191   if (s!=NULL) tmp = enterid(s, myynest, RING_CMD, &idroot);
     191  if (s!=NULL) tmp = enterid(s, myynest, RING_CMD, &IDROOT);
    192192  if (tmp==NULL) return NULL;
    193193
     
    649649  rComplete(&tmpR);
    650650  /* try to enter the ring into the name list*/
    651   if ((tmp = enterid(s, myynest, RING_CMD, &idroot))==NULL)
     651  if ((tmp = enterid(s, myynest, RING_CMD, &IDROOT))==NULL)
    652652  {
    653653    return NULL;
     
    920920  if (h==currRingHdl)
    921921  {
    922     currRingHdl=idroot;
     922    currRingHdl=IDROOT;
    923923    while (currRingHdl!=NULL)
    924924    {
     
    934934idhdl rFindHdl(ring r, idhdl n)
    935935{
    936   idhdl h=idroot;
     936  idhdl h=IDROOT;
    937937  while (h!=NULL)
    938938  {
  • Singular/silink.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: silink.cc,v 1.19 1998-06-03 10:04:24 obachman Exp $ */
     4/* $Id: silink.cc,v 1.20 1998-06-13 12:44:47 krueger Exp $ */
    55
    66/*
     
    453453{
    454454  FILE *fd = (FILE *) l->data;
    455   idhdl h = idroot, rh = currRingHdl;
     455  idhdl h = IDROOT, rh = currRingHdl;
    456456  BOOLEAN status = DumpAscii(fd, h);
    457457
  • Singular/sing_mp.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: sing_mp.cc,v 1.18 1998-06-03 10:04:25 obachman Exp $ */
     4/* $Id: sing_mp.cc,v 1.19 1998-06-13 12:44:48 krueger Exp $ */
    55
    66/*
     
    452452  leftv v = NULL;
    453453  // establish top-level identifier for link
    454   idhdl id = enterid(mstrdup("mp_ll"), 0, LINK_CMD, &idroot, FALSE);
     454  idhdl id = enterid(mstrdup("mp_ll"), 0, LINK_CMD, &IDROOT, FALSE);
    455455  IDLINK(id) = silink;
    456456
  • Singular/structs.h

    r24c10ac r46d09b  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: structs.h,v 1.12 1998-06-02 15:30:05 Singular Exp $ */
     6/* $Id: structs.h,v 1.13 1998-06-13 12:44:49 krueger Exp $ */
    77/*
    88* ABSTRACT
     
    4646class ssyStrategy;
    4747class procinfo;
     48#ifdef HAVE_NAMESPACES
     49class namerec;
     50#endif
    4851
    4952struct  sip_sring;
     
    9598typedef struct reca *      alg;
    9699typedef procinfo *         procinfov;
     100#ifdef HAVE_NAMESPACES
     101typedef namerec *          namehdl;
     102#endif
    97103
    98104struct _scmdnames
  • Singular/subexpr.cc

    r24c10ac r46d09b  
    148148           break;
    149149         }
     150       case POINTER_CMD:
     151         { package pack = (package)d;
     152         ::Print("%-*.*s// %s\n",spaces,spaces," ","PointerTest");
     153         ::Print("%-*.*s// %s",spaces,spaces," ",IDID(pack->idroot));
     154         //::Print(((char *)(pack->idroot)->data), spaces);
     155         break;
     156         }
    150157       case LINK_CMD:
    151158          {
     
    216223    && (t/*Typ()*/!=RING_CMD)
    217224    && (t/*Typ()*/!=QRING_CMD)
     225    && (t/*Typ()*/!=POINTER_CMD)
    218226    && (t/*Typ()*/!=PACKAGE_CMD)
    219227    && (t/*Typ()*/!=PROC_CMD)
     
    327335    switch (rtyp)
    328336    {
     337      case POINTER_CMD:
    329338      case PACKAGE_CMD:
    330339      case IDHDL:
     
    412421      }
    413422      #endif
     423    case POINTER_CMD:
     424      return d;
    414425    case PROC_CMD:
    415426      return  (void *)piCopy((procinfov) d);
     
    470481    case STRING_CMD:
    471482      data= (void *)mstrdup((char *)d);
     483      break;
     484    case POINTER_CMD:
     485      data=d;
    472486      break;
    473487    case PROC_CMD:
     
    812826      case IDHDL:
    813827        return IDDATA((idhdl)data);
     828      case POINTER_CMD:
     829        return IDDATA((idhdl)data);
    814830      case COMMAND:
    815831        //return NULL;
     
    12561272            nok=iiDeclCommand(&t,&d->arg1,0,save_typ,&currRing->idroot);
    12571273          else
    1258             nok=iiDeclCommand(&t,&d->arg1,0,save_typ,&idroot);
     1274            nok=iiDeclCommand(&t,&d->arg1,0,save_typ,&IDROOT);
    12591275          memcpy(&d->arg1,&t,sizeof(sleftv));
    12601276          mmTestLP(d->arg1.name);
  • Singular/tesths.cc

    r24c10ac r46d09b  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: tesths.cc,v 1.47 1998-06-08 18:18:19 Singular Exp $ */
     4/* $Id: tesths.cc,v 1.48 1998-06-13 12:44:50 krueger Exp $ */
    55
    66/*
     
    467467  }
    468468  /*. say hello */
     469#ifdef HAVE_NAMESPACES
     470  namespaceroot->push(NULL, "(ROOT)", TRUE);
     471#endif /* HAVE_NAMESPACES */
    469472  if (BVERBOSE(0) && !feBatch)
    470473  {
  • Singular/tok.h

    r24c10ac r46d09b  
    77* ABSTRACT: token for interpreter, as types; general macros
    88*/
    9 /* $Id: tok.h,v 1.18 1998-06-02 15:30:06 Singular Exp $ */
     9/* $Id: tok.h,v 1.19 1998-06-13 12:44:51 krueger Exp $ */
    1010
    1111#ifndef MYYSTYPE
     
    8686  PACKAGE_CMD,
    8787  PARSTR_CMD,
     88  POINTER_CMD,
    8889  PRIME_CMD,
    8990  PRINT_CMD,
Note: See TracChangeset for help on using the changeset viewer.