source: git/Singular/ipid.h @ eaf66f

spielwiese
Last change on this file since eaf66f was eaf66f, checked in by Hans Schönemann <hannes@…>, 14 years ago
IDTYP etc -> ipid.h git-svn-id: file:///usr/local/Singular/svn/trunk@12410 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.2 KB
Line 
1#ifndef IPID_H
2#define IPID_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id$ */
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
44class proclevel
45{
46  public:
47  proclevel * next;
48  idhdl      cRingHdl;
49  ring       cRing;
50  idhdl      cPackHdl;
51  package    cPack;
52  char      * name;
53  proclevel()  { memset(this,0,sizeof(*this)); }
54  void    push(char *);
55  void    pop();
56};
57extern proclevel *procstack;
58
59typedef struct
60{
61  int (*iiAddCproc)(char *libname, char *procname, BOOLEAN pstatic,
62                    BOOLEAN(*func)(leftv res, leftv v));
63  int (*iiArithAddCmd)(const char *szName, short nAlias, short nTokval,
64                       short nToktype, short nPos);
65
66} SModulFunctions;
67
68
69/*extern idhdl      currRingHdl; in ring.h */
70/*extern ring     currRing;  in ring.h */
71/*extern ideal      currQuotient; in structs.h */
72
73char *idhdl2id(idhdl pck, idhdl h);
74void  iiname2hdl(const char *name, idhdl *pck, idhdl *id);
75idhdl enterid(const char * a, int lev, idtyp t, idhdl* root, BOOLEAN init=TRUE);
76idhdl ggetid(const char *n, BOOLEAN local = FALSE);
77idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
78void  killid(const char * a, idhdl * i);
79void killhdl(idhdl h, package prooti=currPack);
80void  killhdl2(idhdl h, idhdl * ih, ring r);
81lists ipNameList(idhdl root);
82void  ipMoveId(idhdl h);
83BOOLEAN checkPackage(package pack);
84idhdl packFindHdl(package r);
85
86#define FLAG_STD   0
87#define FLAG_TWOSTD  3
88#define hasFlag(A,F) Sy_inset((F),(A)->flag)
89#define setFlag(A,F) (A)->flag|=Sy_bit(F)
90#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
91void ipListFlag(idhdl h);
92
93
94#define IDNEXT(a)    ((a)->next)
95#define IDTYP(a)     ((a)->typ)
96#define IDFLAG(a)    ((a)->flag)
97#define IDLEV(a)     ((a)->lev)
98#define IDID(a)      ((a)->id)
99#define IDATTR(a)    ((a)->attribute)
100
101#define IDINT(a)    ((int)(long)((a)->data.ustring))
102#define IDDATA(a)   ((a)->data.ustring)
103#define IDRING(a)   ((a)->data.uring)
104#define IDINTVEC(a) ((a)->data.iv)
105#define IDPOLY(a)   ((a)->data.p)
106#define IDBIGINT(a) ((a)->data.n)
107#define IDNUMBER(a) ((a)->data.n)
108#define IDIDEAL(a)  ((a)->data.uideal)
109#define IDMATRIX(a) ((a)->data.umatrix)
110#define IDMAP(a)    ((a)->data.umap)
111#define IDSTRING(a) ((a)->data.ustring)
112#define IDLIST(a)   ((a)->data.l)
113#define IDLINK(a)   ((a)->data.li)
114#define IDPACKAGE(a) ((a)->data.pack)
115#define IDPROC(a)   ((a)->data.pinf)
116
117#ifndef OM_ALLOC_H
118struct omBin_s;
119#endif
120
121extern omBin_s* sip_command_bin;
122extern omBin_s* ip_command_bin;
123extern omBin_s* sip_package_bin;
124//extern omBin_s* ip_package_bin;
125extern omBin_s* idrec_bin;
126#endif
127
128
Note: See TracBrowser for help on using the repository browser.