source: git/Singular/ipid.h @ 801d2b

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