source: git/Singular/ipid.h @ e9aafc7

fieker-DuValspielwiese
Last change on this file since e9aafc7 was 4811126, checked in by Hans Schoenemann <hannes@…>, 8 years ago
removed procstack->cRing
  • Property mode set to 100644
File size: 4.1 KB
Line 
1#ifndef IPID_H
2#define IPID_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6
7/*
8* ABSTRACT: identfier handling
9*/
10#include <string.h>
11//#include <kernel/structs.h>
12#include <Singular/idrec.h>
13#include <Singular/subexpr.h>
14#include <Singular/lists.h>
15
16extern idhdl currPackHdl;
17extern idhdl basePackHdl;
18extern package currPack;
19extern package basePack;
20#define IDROOT (currPack->idroot)
21
22struct sip_command;
23typedef struct sip_command ip_command;
24typedef ip_command *       command;
25
26struct sip_command
27{
28  sleftv arg1; /*arg1 to build_in, proc to proc_call*/
29  sleftv arg2; /*NULL or arg2 to build_in, args to proc_call*/
30  sleftv arg3; /*NULL or arg3*/
31  short argc; /*0,1,2,3 to build_in, -1 otherwise*/
32  short op;   /* build_in or PROC_CMD*/
33};
34
35struct sip_package
36{
37  idhdl         idroot; /* local objects */
38  char          *libname;
39  short         ref;
40  language_defs language;
41  BOOLEAN       loaded;
42  void          *handle;
43};
44
45inline package paCopy(package pack)
46{
47  pack->ref++;
48  return pack;
49}
50
51inline void paKill(package pack)
52{
53  pack->ref--;
54}
55
56class proclevel
57{
58  public:
59  proclevel * next;
60  idhdl      cPackHdl;
61  package    cPack;
62  char      * name;
63  proclevel()  { memset(this,0,sizeof(*this)); }
64  void    push(char *);
65  void    pop();
66};
67extern proclevel *procstack;
68
69typedef struct
70{
71  int (*iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic,
72                    BOOLEAN(*func)(leftv res, leftv v));
73  int (*iiArithAddCmd)(const char *szName, short nAlias, short nTokval,
74                       short nToktype, short nPos);
75
76} SModulFunctions;
77
78
79extern idhdl      currRingHdl;
80/* ================================================================== */
81/* module support */
82typedef int (*SModulFunc_t)(SModulFunctions*);
83BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init);
84void module_help_main(const char *newlib,const char *help);
85void module_help_proc(const char *newlib,const char *p, const char *help);
86
87/* ================================================================== */
88
89/*extern ring     currRing;  in ring.h */
90
91idhdl enterid(const char * a, int lev, int t, idhdl* root, BOOLEAN init=TRUE, BOOLEAN serach=TRUE);
92idhdl ggetid(const char *n);
93idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
94void  killid(const char * a, idhdl * i);
95void killhdl(idhdl h, package prooti=currPack);
96void  killhdl2(idhdl h, idhdl * ih, ring r);
97lists ipNameList(idhdl root);
98lists ipNameListLev(idhdl root, int lev);
99void  ipMoveId(idhdl h);
100BOOLEAN checkPackage(package pack);
101idhdl packFindHdl(package r);
102void jjNormalizeQRingP(poly &p);
103void jjNormalizeQRingId(leftv I);
104void *idrecDataInit(int t);
105
106#define FLAG_STD   0
107#define FLAG_TWOSTD  3
108#define FLAG_QRING   4
109#define hasFlag(A,F) Sy_inset((F),(A)->flag)
110#define setFlag(A,F) (A)->flag|=Sy_bit(F)
111#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
112void ipListFlag(idhdl h);
113
114
115#define IDNEXT(a)    ((a)->next)
116#define IDTYP(a)     ((a)->typ)
117#define IDFLAG(a)    ((a)->flag)
118#define IDLEV(a)     ((a)->lev)
119#define IDID(a)      ((a)->id)
120#define IDATTR(a)    ((a)->attribute)
121
122#define IDINT(a)    ((int)(long)((a)->data.ustring))
123#define IDDATA(a)   ((a)->data.ustring)
124#define IDRING(a)   ((a)->data.uring)
125#define IDINTVEC(a) ((a)->data.iv)
126#define IDBIMAT(a)  ((a)->data.bim)
127#define IDPOLY(a)   ((a)->data.p)
128#define IDBIGINT(a) ((a)->data.n)
129#define IDNUMBER(a) ((a)->data.n)
130#define IDIDEAL(a)  ((a)->data.uideal)
131#define IDMATRIX(a) ((a)->data.umatrix)
132#define IDMAP(a)    ((a)->data.umap)
133#define IDSTRING(a) ((a)->data.ustring)
134#define IDLIST(a)   ((a)->data.l)
135#define IDLINK(a)   ((a)->data.li)
136#define IDPACKAGE(a) ((a)->data.pack)
137#define IDPROC(a)   ((a)->data.pinf)
138
139extern omBin sip_command_bin;
140extern omBin sip_package_bin;
141extern omBin idrec_bin;
142extern omBin sleftv_bin;
143
144extern coeffs coeffs_BIGINT;
145
146extern FILE   *feFilePending; /*temp. storage for grammar.y */
147
148/* options */
149struct soptionStruct
150{
151  const char * name;
152  unsigned   setval;
153  unsigned   resetval;
154};
155
156extern const struct soptionStruct optionStruct[];
157extern const struct soptionStruct verboseStruct[];
158
159#endif
160
161
Note: See TracBrowser for help on using the repository browser.