source: git/Singular/ipid.h @ 1ce62fa

spielwiese
Last change on this file since 1ce62fa was ce9c2d, checked in by Hans Schönemann <hannes@…>, 25 years ago
*hannes: aligne structures git-svn-id: file:///usr/local/Singular/svn/trunk@2874 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.8 KB
Line 
1#ifndef IPID_H
2#define IPID_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: ipid.h,v 1.25 1999-02-26 15:32:05 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
39union uutypes;
40
41union uutypes
42{
43  int           i;
44  ring          uring;
45  poly          p;
46  number        n;
47  ideal         uideal;
48  map           umap;
49  matrix        umatrix;
50  char *        ustring;
51  intvec *      iv;
52  lists         l;
53  si_link       li;
54  package       pack;
55  procinfo *    pinf;
56};
57
58class idrec
59{
60  public:
61  /* !! do not change the first 6 entries !! (see subexpr.h: sleftv) */
62  idhdl      next;
63  char *     id;
64  utypes     data;
65  BITSET     flag;
66  attr       attribute;
67  idtyp      typ;
68
69  short      lev;
70  short      ref;
71
72#define IDNEXT(a)    ((a)->next)
73#define IDTYP(a)     ((a)->typ)
74#define IDFLAG(a)    ((a)->flag)
75#define IDLEV(a)     ((a)->lev)
76#define IDID(a)      ((a)->id)
77#define IDATTR(a)    ((a)->attribute)
78
79#define IDINT(a)    ((a)->data.i)
80#define IDDATA(a)   ((a)->data.ustring)
81#define IDRING(a)   ((a)->data.uring)
82#define IDINTVEC(a) ((a)->data.iv)
83#define IDPOLY(a)   ((a)->data.p)
84#define IDNUMBER(a) ((a)->data.n)
85#define IDIDEAL(a)  (((a)->data).uideal)
86#define IDMATRIX(a) (((a)->data).umatrix)
87#define IDMAP(a)    (((a)->data).umap)
88#define IDSTRING(a) ((a)->data.ustring)
89#define IDLIST(a)   ((a)->data.l)
90#define IDLINK(a)   ((a)->data.li)
91#define IDPACKAGE(a) ((a)->data.pack)
92#define IDPROC(a)   ((a)->data.pinf)
93
94  idrec() { memset(this,0,sizeof(*this)); }
95  idhdl get(const char * s, int lev);
96  idhdl set(char * s, int lev, idtyp t, BOOLEAN init=TRUE);
97//  ~idrec();
98};
99
100class namerec {
101  public:
102  namehdl    next;
103  namehdl    root;
104  package    pack;
105  char *     name;
106  int        lev;
107  BOOLEAN    isroot;
108#define NSROOT(a) ((a)->pack->idroot)
109#define NSPACK(a) ((a)->pack)
110
111  int        myynest;
112  idhdl      currRingHdl;
113  ring       currRing;
114
115 namerec()  { memset(this,0,sizeof(*this)); }
116  //namehdl    Set(idhdl root);
117  namehdl    pop(BOOLEAN change_nesting=FALSE);
118  namehdl    push(package pack, char *name, int nesting=-1, BOOLEAN init=FALSE);
119  idhdl      get(const char * s, int lev, BOOLEAN root=FALSE);
120};
121
122extern namehdl namespaceroot;
123#ifdef HAVE_NAMESPACES
124#  define IDROOT (NSROOT(namespaceroot))
125#else /* HAVE_NAMESPACES */
126extern idhdl      idroot;
127#  define IDROOT idroot
128#endif /* HAVE_NAMESPACES */
129
130extern idhdl      currRingHdl;
131/*extern ring     currRing;  in structs.h */
132extern ideal      currQuotient;
133
134char *idhdl2id(idhdl pck, idhdl h);
135void  iiname2hdl(const char *name, idhdl *pck, idhdl *id);
136idhdl enterid(char * a, int lev, idtyp t, idhdl* root, BOOLEAN init=TRUE);
137idhdl ggetid(const char *n, BOOLEAN local = FALSE);
138idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
139void  killid(char * a, idhdl * i);
140void  killhdl(idhdl h);
141void  killhdl(idhdl h, idhdl * ih);
142lists ipNameList(idhdl root);
143void  ipMoveId(idhdl h);
144BOOLEAN checkPackage(package pack);
145
146#define FLAG_STD   0
147#define FLAG_DRING 1
148#define FLAG_DOPERATOR 2
149#define hasFlag(A,F) Sy_inset((F),(A)->flag)
150#define setFlag(A,F) (A)->flag|=Sy_bit(F)
151#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
152void ipListFlag(idhdl h);
153#endif
154
155
Note: See TracBrowser for help on using the repository browser.