ipid.h
Go to the documentation of this file.
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 
16 extern idhdl currPackHdl;
17 extern idhdl basePackHdl;
18 extern package currPack;
19 extern package basePack;
20 #define IDROOT (currPack->idroot)
21 
22 struct sip_command;
23 typedef struct sip_command ip_command;
24 typedef ip_command * command;
25 
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 
36 {
37  idhdl idroot; /* local objects */
38  char *libname;
39  short ref;
42  void *handle;
43 };
44 
45 inline package paCopy(package pack)
46 {
47  pack->ref++;
48  return pack;
49 }
50 
51 inline void paKill(package pack)
52 {
53  pack->ref--;
54 }
55 
56 class proclevel
57 {
58  public:
61  package cPack;
62  char * name;
63  proclevel() { memset(this,0,sizeof(*this)); }
64  void push(char *);
65  void pop();
66 };
67 extern proclevel *procstack;
68 
69 typedef 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 
77 
78 
79 extern idhdl currRingHdl;
80 /* ================================================================== */
81 /* module support */
82 typedef int (*SModulFunc_t)(SModulFunctions*);
83 BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init);
84 void module_help_main(const char *newlib,const char *help);
85 void module_help_proc(const char *newlib,const char *p, const char *help);
86 
87 /* ================================================================== */
88 
89 /*extern ring currRing; in ring.h */
90 
91 idhdl enterid(const char * a, int lev, int t, idhdl* root, BOOLEAN init=TRUE, BOOLEAN serach=TRUE);
92 idhdl ggetid(const char *n);
93 idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
94 void killid(const char * a, idhdl * i);
95 void killhdl(idhdl h, package prooti=currPack);
96 void killhdl2(idhdl h, idhdl * ih, ring r);
97 lists ipNameList(idhdl root);
98 lists ipNameListLev(idhdl root, int lev);
99 void ipMoveId(idhdl h);
102 void jjNormalizeQRingP(poly &p);
103 void jjNormalizeQRingId(leftv I);
104 void *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)
112 void 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 
139 extern omBin sip_command_bin;
140 extern omBin sip_package_bin;
141 extern omBin idrec_bin;
142 extern omBin sleftv_bin;
143 
144 extern coeffs coeffs_BIGINT;
145 
146 extern FILE *feFilePending; /*temp. storage for grammar.y */
147 
148 /* options */
150 {
151  const char * name;
152  unsigned setval;
153  unsigned resetval;
154 };
155 
156 extern const struct soptionStruct optionStruct[];
157 extern const struct soptionStruct verboseStruct[];
158 
159 #endif
160 
161 
proclevel()
Definition: ipid.h:63
FILE * feFilePending
Definition: ipid.cc:56
coeffs coeffs_BIGINT
Definition: ipid.cc:54
ip_package * package
Definition: structs.h:46
const struct soptionStruct optionStruct[]
Definition: misc_ip.cc:516
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
ip_command * command
Definition: ipid.h:24
const poly a
Definition: syzextra.cc:212
omBin_t * omBin
Definition: omStructs.h:12
omBin sip_command_bin
Definition: ipid.cc:49
Definition: lists.h:22
char * libname
Definition: ipid.h:38
const char * name
Definition: ipid.h:151
void ipMoveId(idhdl h)
Definition: ipid.cc:610
return P p
Definition: myNF.cc:203
idhdl basePackHdl
Definition: ipid.cc:62
sleftv arg2
Definition: ipid.h:29
void killid(const char *a, idhdl *i)
Definition: ipid.cc:351
omBin idrec_bin
Definition: ipid.cc:52
BOOLEAN checkPackage(package pack)
short op
Definition: ipid.h:32
#define TRUE
Definition: auxiliary.h:98
void killhdl2(idhdl h, idhdl *ih, ring r)
Definition: ipid.cc:409
language_defs language
Definition: ipid.h:40
unsigned setval
Definition: ipid.h:152
unsigned resetval
Definition: ipid.h:153
char * name
Definition: ipid.h:62
idhdl packFindHdl(package r)
Definition: ipid.cc:739
short argc
Definition: ipid.h:31
void paKill(package pack)
Definition: ipid.h:51
Definition: idrec.h:34
void jjNormalizeQRingId(leftv I)
Definition: ipassign.cc:2138
poly res
Definition: myNF.cc:322
const ring r
Definition: syzextra.cc:208
short ref
Definition: ipid.h:39
idhdl cPackHdl
Definition: ipid.h:60
Definition: ipid.h:56
The main handler for Singular numbers which are suitable for Singular polynomials.
omBin sip_package_bin
Definition: ipid.cc:50
package currPack
Definition: ipid.cc:63
void module_help_proc(const char *newlib, const char *p, const char *help)
Definition: iplib.cc:1147
proclevel * next
Definition: ipid.h:59
omBin sleftv_bin
Definition: subexpr.cc:50
int i
Definition: cfEzgcd.cc:123
void jjNormalizeQRingP(poly &p)
Definition: ipassign.cc:2173
sleftv arg1
Definition: ipid.h:28
int iiArithAddCmd(const char *szName, short nAlias, short nTokval, short nToktype, short nPos=-1)
Definition: iparith.cc:9084
BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init)
Definition: iplib.cc:1080
lists ipNameListLev(idhdl root, int lev)
Definition: ipid.cc:556
void ipListFlag(idhdl h)
Definition: ipid.cc:525
#define help
Definition: libparse.cc:1228
BOOLEAN loaded
Definition: ipid.h:41
void module_help_main(const char *newlib, const char *help)
Definition: iplib.cc:1132
idhdl ggetid(const char *n)
Definition: ipid.cc:509
language_defs
Definition: subexpr.h:21
const Variable & v
< [in] a sqrfree bivariate poly
Definition: facBivar.h:37
idhdl idroot
Definition: ipid.h:37
void * idrecDataInit(int t)
Definition: ipid.cc:132
idhdl currPackHdl
Definition: ipid.cc:61
int(* SModulFunc_t)(SModulFunctions *)
Definition: ipid.h:82
idhdl currRingHdl
Definition: ipid.cc:65
void killhdl(idhdl h, package prooti=currPack)
Definition: ipid.cc:378
const struct soptionStruct verboseStruct[]
Definition: misc_ip.cc:546
int iiAddCproc(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
Definition: iplib.cc:897
polyrec * poly
Definition: hilb.h:10
lists ipNameList(idhdl root)
Definition: ipid.cc:533
proclevel * procstack
Definition: ipid.cc:58
static Poly * h
Definition: janet.cc:978
int BOOLEAN
Definition: auxiliary.h:85
idhdl enterid(const char *a, int lev, int t, idhdl *root, BOOLEAN init=TRUE, BOOLEAN serach=TRUE)
Definition: ipid.cc:259
sleftv arg3
Definition: ipid.h:30
void * handle
Definition: ipid.h:42