source: git/Singular/ipid.h @ e2202ee

spielwiese
Last change on this file since e2202ee was e2202ee, checked in by Hans Schoenemann <hannes@…>, 10 years ago
fix: compiler warnings (64bit/const char*)
  • Property mode set to 100644
File size: 4.0 KB
RevLine 
[0e1846]1#ifndef IPID_H
2#define IPID_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
[d5add65]6
[0e1846]7/*
[6ae4f5]8* ABSTRACT: identfier handling
[0e1846]9*/
10#include <string.h>
[3ec6bba]11//#include <kernel/structs.h>
[79ea48]12#include <Singular/idrec.h>
[599326]13#include <Singular/subexpr.h>
[3ec6bba]14#include <Singular/lists.h>
[0e1846]15
[995a6a]16extern idhdl currPackHdl;
17extern idhdl basePackHdl;
18extern package currPack;
19extern package basePack;
20#define IDROOT (currPack->idroot)
21
[0e051f]22struct sip_command;
23typedef struct sip_command ip_command;
24typedef ip_command *       command;
25
[0e1846]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{
[daeb6d]37  idhdl         idroot; /* local objects */
38  char          *libname;
39  short         ref;
[0a3ddd]40  language_defs language;
[a8213b0]41  BOOLEAN       loaded;
[cd6b45]42  void          *handle;
[0e1846]43};
44
[daeb6d]45inline package paCopy(package pack)
46{
47  pack->ref++;
48  return pack;
49}
50
[a3bc95e]51inline void paKill(package pack)
52{
53  pack->ref--;
54}
55
[eaf66f]56class proclevel
57{
[bd4cb92]58  public:
59  proclevel * next;
[573da6]60  idhdl      cRingHdl;
61  ring       cRing;
62  idhdl      cPackHdl;
63  package    cPack;
[bd4cb92]64  char      * name;
65  proclevel()  { memset(this,0,sizeof(*this)); }
[a3bc95e]66  void    push(char *);
67  void    pop();
68};
[bd4cb92]69extern proclevel *procstack;
70
[46e47be]71typedef struct
72{
[ce0ca7]73  int (*iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic,
[46e47be]74                    BOOLEAN(*func)(leftv res, leftv v));
[85e68dd]75  int (*iiArithAddCmd)(const char *szName, short nAlias, short nTokval,
[46e47be]76                       short nToktype, short nPos);
77
78} SModulFunctions;
79
80
[9b01b1]81extern idhdl      currRingHdl;
[801d2b]82/* ================================================================== */
83/* module support */
84typedef int (*SModulFunc_t)(SModulFunctions*);
[e2202ee]85BOOLEAN load_builtin(const char *newlib, BOOLEAN autoexport, SModulFunc_t init);
[36d920]86void module_help_main(const char *newlib,const char *help);
87void module_help_proc(const char *newlib,const char *p, const char *help);
[801d2b]88
89/* ================================================================== */
90
[eaf66f]91/*extern ring     currRing;  in ring.h */
[938688]92/*extern ideal      currQuotient; in structs.h */
[0e1846]93
[a53ae5]94idhdl enterid(const char * a, int lev, int t, idhdl* root, BOOLEAN init=TRUE, BOOLEAN serach=TRUE);
[d2c80d]95idhdl ggetid(const char *n);
[6d281ac]96idhdl ggetid(const char *n, BOOLEAN local, idhdl *packhdl);
[85e68dd]97void  killid(const char * a, idhdl * i);
[b4f04e]98void killhdl(idhdl h, package prooti=currPack);
[16acb0]99void  killhdl2(idhdl h, idhdl * ih, ring r);
[0e1846]100lists ipNameList(idhdl root);
[d5add65]101lists ipNameListLev(idhdl root, int lev);
[0e1846]102void  ipMoveId(idhdl h);
[0a3ddd]103BOOLEAN checkPackage(package pack);
[a3bc95e]104idhdl packFindHdl(package r);
[6c4db17]105void jjNormalizeQRingId(leftv I);
106void jjNormalizeQRingP(leftv I);
[5816c3]107void *idrecDataInit(int t);
[0e1846]108
109#define FLAG_STD   0
[30adb7]110#define FLAG_TWOSTD  3
[6c4db17]111#define FLAG_QRING   4
[0e1846]112#define hasFlag(A,F) Sy_inset((F),(A)->flag)
113#define setFlag(A,F) (A)->flag|=Sy_bit(F)
114#define resetFlag(A,F) (A)->flag&=~Sy_bit(F)
115void ipListFlag(idhdl h);
[b7b08c]116
[eaf66f]117
118#define IDNEXT(a)    ((a)->next)
119#define IDTYP(a)     ((a)->typ)
120#define IDFLAG(a)    ((a)->flag)
121#define IDLEV(a)     ((a)->lev)
122#define IDID(a)      ((a)->id)
123#define IDATTR(a)    ((a)->attribute)
124
125#define IDINT(a)    ((int)(long)((a)->data.ustring))
126#define IDDATA(a)   ((a)->data.ustring)
127#define IDRING(a)   ((a)->data.uring)
128#define IDINTVEC(a) ((a)->data.iv)
[9127cc]129#define IDBIMAT(a)  ((a)->data.bim)
[eaf66f]130#define IDPOLY(a)   ((a)->data.p)
131#define IDBIGINT(a) ((a)->data.n)
132#define IDNUMBER(a) ((a)->data.n)
133#define IDIDEAL(a)  ((a)->data.uideal)
134#define IDMATRIX(a) ((a)->data.umatrix)
135#define IDMAP(a)    ((a)->data.umap)
136#define IDSTRING(a) ((a)->data.ustring)
137#define IDLIST(a)   ((a)->data.l)
138#define IDLINK(a)   ((a)->data.li)
139#define IDPACKAGE(a) ((a)->data.pack)
140#define IDPROC(a)   ((a)->data.pinf)
141
[020ef9]142extern omBin sip_command_bin;
143extern omBin sip_package_bin;
144extern omBin idrec_bin;
[db45a2]145extern omBin sleftv_bin;
146
147extern coeffs coeffs_BIGINT;
148
149extern FILE   *feFilePending; /*temp. storage for grammar.y */
[0e1846]150#endif
[47faf56]151
152
Note: See TracBrowser for help on using the repository browser.