source: git/Singular/ipid.h @ 6f25ae

fieker-DuValspielwiese
Last change on this file since 6f25ae was 6f25ae, checked in by Hans Schoenemann <hannes@…>, 4 years ago
add: jj_NormalizeQRingP
  • 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 "Singular/idrec.h"
11#include "Singular/subexpr.h"
12#include "Singular/lists.h"
13
14EXTERN_VAR idhdl currPackHdl;
15EXTERN_VAR idhdl basePackHdl;
16EXTERN_VAR package currPack;
17EXTERN_VAR package basePack;
18#define IDROOT (currPack->idroot)
19
20struct sip_command;
21typedef struct sip_command ip_command;
22typedef ip_command *       command;
23
24struct sip_command
25{
26  sleftv arg1; /*arg1 to build_in, proc to proc_call*/
27  sleftv arg2; /*NULL or arg2 to build_in, args to proc_call*/
28  sleftv arg3; /*NULL or arg3*/
29  short argc; /*0,1,2,3 to build_in, -1 otherwise*/
30  short op;   /* build_in or PROC_CMD*/
31};
32
33struct sip_package
34{
35  idhdl         idroot; /* local objects */
36  char          *libname;
37  short         ref;
38  language_defs language;
39  BOOLEAN       loaded;
40  void          *handle;
41};
42
43inline package paCopy(package pack)
44{
45  pack->ref++;
46  return pack;
47}
48
49inline void paKill(package pack)
50{
51  pack->ref--;
52}
53
54class proclevel
55{
56  public:
57  proclevel * next;
58  idhdl      cPackHdl;
59  package    cPack;
60  char      * name;
61  proclevel()  { memset(this,0,sizeof(*this)); }
62  void    push(char *);
63  void    pop();
64};
65EXTERN_VAR proclevel *procstack;
66
67typedef struct
68{
69  int (*iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic,
70                    BOOLEAN(*func)(leftv res, leftv v));
71  int (*iiArithAddCmd)(const char *szName, short nAlias, short nTokval,
72                       short nToktype, short nPos);
73
74} SModulFunctions;
75
76
77EXTERN_VAR idhdl      currRingHdl;
78/* ================================================================== */
79/* module support */
80typedef int (*SModulFunc_t)(SModulFunctions*);
81BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init);
82void module_help_main(const char *newlib,const char *help);
83void module_help_proc(const char *newlib,const char *p, const char *help);
84
85/* ================================================================== */
86
87/*extern ring     currRing;  in ring.h */
88
89idhdl enterid(const char * a, int lev, int t, idhdl* root, BOOLEAN init=TRUE, BOOLEAN search=TRUE);
90idhdl ggetid(const char *n);
91//idhdl ggetid(const char *n, idhdl *packhdl);
92void  killid(const char * a, idhdl * i);
93void killhdl(idhdl h, package prooti=currPack);
94void  killhdl2(idhdl h, idhdl * ih, ring r);
95lists ipNameList(idhdl root);
96lists ipNameListLev(idhdl root, int lev);
97void  ipMoveId(idhdl h);
98BOOLEAN checkPackage(package pack);
99idhdl packFindHdl(package r);
100poly jj_NormalizeQRingP(poly p, const ring r);
101void jjNormalizeQRingId(leftv I);
102#define jjNormalizeQRingP(p) jj_NormalizeQRingP(p,currRing)
103void *idrecDataInit(int t);
104
105#define FLAG_STD       0
106#define FLAG_TWOSTD    3
107#define FLAG_QRING     4
108#define FLAG_QRING_DEF 5
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_VAR omBin sip_command_bin;
140EXTERN_VAR omBin sip_package_bin;
141EXTERN_VAR omBin idrec_bin;
142EXTERN_VAR omBin sleftv_bin;
143
144EXTERN_VAR coeffs coeffs_BIGINT;
145
146/* options */
147struct soptionStruct
148{
149  const char * name;
150  unsigned   setval;
151  unsigned   resetval;
152};
153
154extern const struct soptionStruct optionStruct[];
155extern const struct soptionStruct verboseStruct[];
156
157#endif
158
159
Note: See TracBrowser for help on using the repository browser.