source: git/Singular/ipid.h @ 995a6a

spielwiese
Last change on this file since 995a6a was 995a6a, checked in by Hans Schönemann <hannes@…>, 14 years ago
clean up structs.h, part ... git-svn-id: file:///usr/local/Singular/svn/trunk@12436 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.3 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
14extern idhdl currPackHdl;
15extern idhdl basePackHdl;
16extern package currPack;
17extern package basePack;
18#define IDROOT (currPack->idroot)
19
20struct sip_command
21{
22  sleftv arg1; /*arg1 to build_in, proc to proc_call*/
23  sleftv arg2; /*NULL or arg2 to build_in, args to proc_call*/
24  sleftv arg3; /*NULL or arg3*/
25  short argc; /*0,1,2,3 to build_in, -1 otherwise*/
26  short op;   /* build_in or PROC_CMD*/
27};
28
29struct sip_package
30{
31  idhdl         idroot; /* local objects */
32  char          *libname;
33  short         ref;
34  language_defs language;
35  BOOLEAN       loaded;
36  void          *handle;
37};
38
39inline package paCopy(package pack)
40{
41  pack->ref++;
42  return pack;
43}
44
45inline void paKill(package pack)
46{
47  pack->ref--;
48}
49
50class proclevel
51{
52  public:
53  proclevel * next;
54  idhdl      cRingHdl;
55  ring       cRing;
56  idhdl      cPackHdl;
57  package    cPack;
58  char      * name;
59  proclevel()  { memset(this,0,sizeof(*this)); }
60  void    push(char *);
61  void    pop();
62};
63extern proclevel *procstack;
64
65typedef struct
66{
67  int (*iiAddCproc)(char *libname, char *procname, BOOLEAN pstatic,
68                    BOOLEAN(*func)(leftv res, leftv v));
69  int (*iiArithAddCmd)(const char *szName, short nAlias, short nTokval,
70                       short nToktype, short nPos);
71
72} SModulFunctions;
73
74
75/*extern idhdl      currRingHdl; in ring.h */
76/*extern ring     currRing;  in ring.h */
77/*extern ideal      currQuotient; in structs.h */
78
79char *idhdl2id(idhdl pck, idhdl h);
80void  iiname2hdl(const char *name, idhdl *pck, idhdl *id);
81idhdl enterid(const char * a, int lev, idtyp t, idhdl* root, BOOLEAN init=TRUE);
82idhdl ggetid(const char *n, BOOLEAN local = FALSE);
83idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
84void  killid(const char * a, idhdl * i);
85void killhdl(idhdl h, package prooti=currPack);
86void  killhdl2(idhdl h, idhdl * ih, ring r);
87lists ipNameList(idhdl root);
88void  ipMoveId(idhdl h);
89BOOLEAN checkPackage(package pack);
90idhdl packFindHdl(package r);
91
92#define FLAG_STD   0
93#define FLAG_TWOSTD  3
94#define hasFlag(A,F) Sy_inset((F),(A)->flag)
95#define setFlag(A,F) (A)->flag|=Sy_bit(F)
96#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
97void ipListFlag(idhdl h);
98
99
100#define IDNEXT(a)    ((a)->next)
101#define IDTYP(a)     ((a)->typ)
102#define IDFLAG(a)    ((a)->flag)
103#define IDLEV(a)     ((a)->lev)
104#define IDID(a)      ((a)->id)
105#define IDATTR(a)    ((a)->attribute)
106
107#define IDINT(a)    ((int)(long)((a)->data.ustring))
108#define IDDATA(a)   ((a)->data.ustring)
109#define IDRING(a)   ((a)->data.uring)
110#define IDINTVEC(a) ((a)->data.iv)
111#define IDPOLY(a)   ((a)->data.p)
112#define IDBIGINT(a) ((a)->data.n)
113#define IDNUMBER(a) ((a)->data.n)
114#define IDIDEAL(a)  ((a)->data.uideal)
115#define IDMATRIX(a) ((a)->data.umatrix)
116#define IDMAP(a)    ((a)->data.umap)
117#define IDSTRING(a) ((a)->data.ustring)
118#define IDLIST(a)   ((a)->data.l)
119#define IDLINK(a)   ((a)->data.li)
120#define IDPACKAGE(a) ((a)->data.pack)
121#define IDPROC(a)   ((a)->data.pinf)
122
123#ifndef OM_ALLOC_H
124struct omBin_s;
125#endif
126
127extern omBin_s* sip_command_bin;
128extern omBin_s* ip_command_bin;
129extern omBin_s* sip_package_bin;
130//extern omBin_s* ip_package_bin;
131extern omBin_s* idrec_bin;
132#endif
133
134
Note: See TracBrowser for help on using the repository browser.