source: git/Singular/ipid.h @ ad0463

spielwiese
Last change on this file since ad0463 was ad0463, checked in by Hans Schönemann <hannes@…>, 22 years ago
*hannes: removed NAMESPACES git-svn-id: file:///usr/local/Singular/svn/trunk@6124 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.9 KB
Line 
1#ifndef IPID_H
2#define IPID_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: ipid.h,v 1.34 2002-06-03 12:14:47 Singular Exp $ */
7/*
8* ABSTRACT: identfier handling
9*/
10#include <string.h>
11#include "structs.h"
12#include "subexpr.h"
13
14struct sip_command
15{
16  sleftv arg1; /*arg1 to build_in, proc to proc_call*/
17  sleftv arg2; /*NULL or arg2 to build_in, args to proc_call*/
18  sleftv arg3; /*NULL or arg3*/
19  short argc; /*0,1,2,3 to build_in, -1 otherwise*/
20  short op;   /* build_in or PROC_CMD*/
21};
22
23struct sip_package
24{
25  idhdl         idroot; /* local objects */
26  char          *libname;
27  short         ref;
28  language_defs language;
29  BOOLEAN       loaded;
30  void          *handle;
31};
32
33inline package paCopy(package pack)
34{
35  pack->ref++;
36  return pack;
37}
38
39inline void paKill(package pack)
40{
41  pack->ref--;
42}
43
44union uutypes;
45
46union uutypes
47{
48  int           i;
49  ring          uring;
50  poly          p;
51  number        n;
52  ideal         uideal;
53  map           umap;
54  matrix        umatrix;
55  char *        ustring;
56  intvec *      iv;
57  lists         l;
58  si_link       li;
59  package       pack;
60  procinfo *    pinf;
61};
62
63class idrec
64{
65  public:
66  /* !! do not change the first 6 entries !! (see subexpr.h: sleftv) */
67  idhdl      next;
68  char *     id;
69  utypes     data;
70  attr       attribute;
71  BITSET     flag;
72  idtyp      typ;
73
74  short      lev;
75  short      ref;
76
77#define IDNEXT(a)    ((a)->next)
78#define IDTYP(a)     ((a)->typ)
79#define IDFLAG(a)    ((a)->flag)
80#define IDLEV(a)     ((a)->lev)
81#define IDID(a)      ((a)->id)
82#define IDATTR(a)    ((a)->attribute)
83
84#define IDINT(a)    ((a)->data.i)
85#define IDDATA(a)   ((a)->data.ustring)
86#define IDRING(a)   ((a)->data.uring)
87#define IDINTVEC(a) ((a)->data.iv)
88#define IDPOLY(a)   ((a)->data.p)
89#define IDNUMBER(a) ((a)->data.n)
90#define IDIDEAL(a)  (((a)->data).uideal)
91#define IDMATRIX(a) (((a)->data).umatrix)
92#define IDMAP(a)    (((a)->data).umap)
93#define IDSTRING(a) ((a)->data.ustring)
94#define IDLIST(a)   ((a)->data.l)
95#define IDLINK(a)   ((a)->data.li)
96#define IDPACKAGE(a) ((a)->data.pack)
97#define IDPROC(a)   ((a)->data.pinf)
98
99  idrec() { memset(this,0,sizeof(*this)); }
100  idhdl get(const char * s, int lev);
101  idhdl set(char * s, int lev, idtyp t, BOOLEAN init=TRUE);
102  char * String();
103//  ~idrec();
104};
105
106class proclevel {
107  public:
108  proclevel * next;
109  idhdl      currRingHdl;
110  ring       currRing;
111  #ifdef HAVE_NS
112  idhdl      currPackHdl;
113  package    currPack;
114  #endif
115  char      * name;
116  proclevel()  { memset(this,0,sizeof(*this)); }
117  void    push(char *);
118  void    pop();
119};
120extern proclevel *procstack;
121
122#ifndef HAVE_NS
123extern idhdl      idroot;
124#define IDROOT idroot
125#endif /* HAVE_NS */
126
127#ifdef HAVE_NS
128extern idhdl currPackHdl;
129extern idhdl basePackHdl;
130extern package currPack;
131extern package basePack;
132#define IDROOT (currPack->idroot)
133#endif /* HAVE_NS */
134
135extern idhdl      currRingHdl;
136/*extern ring     currRing;  in structs.h */
137extern ideal      currQuotient;
138
139char *idhdl2id(idhdl pck, idhdl h);
140void  iiname2hdl(const char *name, idhdl *pck, idhdl *id);
141idhdl enterid(char * a, int lev, idtyp t, idhdl* root, BOOLEAN init=TRUE);
142idhdl ggetid(const char *n, BOOLEAN local = FALSE);
143idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
144void  killid(char * a, idhdl * i);
145void  killhdl(idhdl h);
146void  killhdl2(idhdl h, idhdl * ih, ring r);
147lists ipNameList(idhdl root);
148void  ipMoveId(idhdl h);
149BOOLEAN checkPackage(package pack);
150#ifdef HAVE_NS
151idhdl packFindHdl(package r);
152#endif
153
154#define FLAG_STD   0
155#define FLAG_DRING 1
156#define FLAG_DOPERATOR 2
157#define hasFlag(A,F) Sy_inset((F),(A)->flag)
158#define setFlag(A,F) (A)->flag|=Sy_bit(F)
159#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
160void ipListFlag(idhdl h);
161
162#ifndef OM_ALLOC_H
163struct omBin_s;
164#endif
165
166extern omBin_s* sip_command_bin;
167extern omBin_s* ip_command_bin;
168extern omBin_s* sip_package_bin;
169extern omBin_s* ip_package_bin;
170extern omBin_s* idrec_bin;
171extern omBin_s* namerec_bin;
172#endif
173
174
Note: See TracBrowser for help on using the repository browser.