source: git/Singular/ipid.h @ e813875

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