My Project
Loading...
Searching...
No Matches
subexpr.h
Go to the documentation of this file.
1#ifndef SUBEXPR_H
2#define SUBEXPR_H
3/****************************************
4* Computer Algebra System SINGULAR *
5****************************************/
6/*
7* ABSTRACT: handling of leftv
8*/
9
10#include <string.h>
11
13
14//#include "Singular/ipid.h"
15
16#include "kernel/mod2.h"
17#include "Singular/grammar.h"
18#include "Singular/tok.h"
19#include "Singular/attrib.h"
20#include "Singular/fevoices.h" /* for sNoName_fe*/
21
24{
25public:
26 long proc_start; // position where proc is starting
27 long proc_end; // position where proc is ending
28 long def_end; // position where proc header is ending
29 long help_start; // position where help is starting
30 long help_end; // position where help is starting
31 long body_start; // position where proc-body is starting
32 long body_end; // position where proc-body is ending
33 long example_start; // position where example is starting
36 char *body;
38};
40{
41//public:
43};
44
46{
47public:
48 proc_singular s; // data of Singular-procedure
49 struct proc_object o; // pointer to binary-function
50};
51typedef union uprocinfodata procinfodata;
52
54{
55public:
56 char *libname;
57 char *procname;
58 package pack;
60 short ref;
61 char is_static; // if set, proc not accessible for user
63 procinfodata data;
64};
65
67
69{
70 struct _ssubexpr * next;
71 int start;
72};
73
74typedef struct _ssubexpr *Subexpr;
75
77
78class sleftv;
79typedef sleftv * leftv;
80
81/// Class used for (list of) interpreter objects
82class sleftv
83{
84 public:
85 /* !! do not change the first 6 entries !! (see ipid.h: idrec) */
87 const char *name;
88 void * data;
91 int rtyp;
92 /* the type of the expression, describes the data field
93 * (E) marks the type field in iparith
94 * (S) marks the rtyp in sleftv
95 * ANY_TYPE: data is int: real type or 0 (E)
96 * DEF_CMD: all types, no change in sleftv (E)
97 * IDHDL: existing variable (E)
98 * IDHDL: variable, data is idhdl (S)
99 * COMMAND: data is command (S)
100 * INT_CMD: int constant, data is int (E,S)
101 * INTVEC_CMD: intvec constant, data is intvec * (E,S)
102 * POLY_CMD: poly constant, data is poly (E,S)
103 * ....
104 */
105 Subexpr e; /* holds the indices for indexed values */
106 package req_packhdl;
107 inline void Init() { memset(this,0,sizeof(*this)); }
108 void CleanUp(ring r=currRing);
109
110 /// Called by type_cmd (e.g. "r;") or as default in jPRINT
111 void Print(leftv store=NULL,int spaces=0);
112
113 /// Called for conversion to string (used by string(..), write(..),..)
114 char * String(void *d=NULL, BOOLEAN typed = FALSE, int dim = 1);
115
116 void Copy(leftv e);
117 attr CopyA();
118 void * CopyD(int t);
119 void * CopyD() { return CopyD(Typ()); }
120 inline const char * Name()
121 {
122 if ((name!=NULL) && (e==NULL)) return name;
123 else return sNoName_fe;
124 }
125 inline const char * Fullname()
126 {
127 if ((name!=NULL) && (e==NULL)) return(this->name);
128 else return sNoName_fe;
129 }
130 int Typ();
131 int LTyp(); /* returns LIST_CMD for l[i], otherwise returns Typ() */
132 void * Data();
133 leftv LData(); /* returns &(l[i]) for l[i], otherwise returns this */
134 //leftv LHdl();
135 attr * Attribute();
136 inline leftv Next() { return next; }
137 int listLength();
138 int Eval(); /*replace a COMMAND by its result otherwise by CopyD*/
140};
141
142inline BOOLEAN RingDependend(int t) { return (BEGIN_RING<t)&&(t<END_RING); }
144
145void syMake(leftv v,const char * name, package pa = NULL);
146void syMakeMonom(leftv v,const char * name);
148
150{
151 pi->ref++;
152 return pi;
153}
155const char *piProcinfo(procinfov pi, const char *request);
156void piShowProcinfo(procinfov pi, char *txt);
157#ifdef HAVE_LIBPARSER
158class libstack;
160
162{
163 public:
165 char *libname;
167 int cnt;
168 void push(const char *p, char * libname);
169 libstackv pop(const char *p);
170 inline char *get() { return(libname); }
171};
172#endif /* HAVE_LIBPARSER */
173
177
178void s_internalDelete(const int t, void *d, const ring r);
179
180#endif
sattr * attr
Definition attrib.h:16
#define BITSET
Definition auxiliary.h:85
int BOOLEAN
Definition auxiliary.h:88
#define FALSE
Definition auxiliary.h:97
int l
Definition cfEzgcd.cc:100
int p
Definition cfModGcd.cc:4086
void push(const char *p, char *libname)
Definition iplib.cc:1510
char * get()
Definition subexpr.h:170
libstackv next
Definition subexpr.h:164
libstackv pop(const char *p)
Definition iplib.cc:1531
int cnt
Definition subexpr.h:167
char * libname
Definition subexpr.h:165
BOOLEAN to_be_done
Definition subexpr.h:166
Class used for (list of) interpreter objects.
Definition subexpr.h:83
int Typ()
Definition subexpr.cc:1048
const char * name
Definition subexpr.h:87
int rtyp
Definition subexpr.h:91
void Init()
Definition subexpr.h:107
leftv next
Definition subexpr.h:86
void * CopyD()
Definition subexpr.h:119
const char * Name()
Definition subexpr.h:120
void * data
Definition subexpr.h:88
leftv Next()
Definition subexpr.h:136
BITSET flag
Definition subexpr.h:90
const char * Fullname()
Definition subexpr.h:125
Subexpr e
Definition subexpr.h:105
attr attribute
Definition subexpr.h:89
static BOOLEAN pa(leftv res, leftv args)
Definition cohomo.cc:3770
#define Print
Definition emacs.cc:80
CanonicalForm res
Definition facAbsFact.cc:60
const Variable & v
< [in] a sqrfree bivariate poly
Definition facBivar.h:39
const char sNoName_fe[]
Definition fevoices.cc:57
static number Copy(number a, const coeffs)
Definition flintcf_Q.cc:215
static int RingDependend(int t)
Definition gentable.cc:23
#define EXTERN_INST_VAR
Definition globaldefs.h:9
#define EXTERN_VAR
Definition globaldefs.h:6
@ END_RING
Definition grammar.cc:311
@ BEGIN_RING
Definition grammar.cc:283
BOOLEAN piKill(procinfov pi)
Definition ipid.cc:724
const char * piProcinfo(procinfov pi, const char *request)
Definition ipid.cc:700
STATIC_VAR Poly * h
Definition janet.cc:971
#define pi
Definition libparse.cc:1145
#define NULL
Definition omList.c:12
omBin_t * omBin
Definition omStructs.h:12
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition polys.cc:13
ip_package * package
Definition structs.h:39
sleftv * leftv
Definition structs.h:53
procinfo * procinfov
Definition structs.h:56
VAR omBin sSubexpr_bin
Definition subexpr.cc:40
VAR omBin procinfo_bin
Definition subexpr.cc:42
void syMake(leftv v, const char *id, package pa)
Definition subexpr.cc:1613
VAR omBin libstack_bin
Definition subexpr.cc:43
void s_internalDelete(const int t, void *d, const ring r)
Definition subexpr.cc:518
INST_VAR sleftv sLastPrinted
Definition subexpr.cc:46
VAR BOOLEAN siq
Definition subexpr.cc:48
BOOLEAN assumeStdFlag(leftv h)
Definition subexpr.cc:1587
void syMakeMonom(leftv v, const char *id)
Definition subexpr.cc:1917
char * libname
Definition subexpr.h:56
language_defs language
Definition subexpr.h:59
int start
Definition subexpr.h:71
procinfov piCopy(procinfov pi)
Definition subexpr.h:149
char * body
Definition subexpr.h:36
long help_start
Definition subexpr.h:29
int example_lineno
Definition subexpr.h:35
procinfodata data
Definition subexpr.h:63
char * procname
Definition subexpr.h:57
long def_end
Definition subexpr.h:28
sleftv * leftv
Definition subexpr.h:79
long help_end
Definition subexpr.h:30
long proc_end
Definition subexpr.h:27
long example_start
Definition subexpr.h:33
char trace_flag
Definition subexpr.h:62
struct _ssubexpr * next
Definition subexpr.h:70
long help_chksum
Definition subexpr.h:37
void piShowProcinfo(procinfov pi, char *txt)
proc_singular s
Definition subexpr.h:48
char is_static
Definition subexpr.h:61
long proc_start
Definition subexpr.h:26
language_defs
Definition subexpr.h:22
@ LANG_MAX
Definition subexpr.h:22
@ LANG_SINGULAR
Definition subexpr.h:22
@ LANG_NONE
Definition subexpr.h:22
@ LANG_MIX
Definition subexpr.h:22
@ LANG_C
Definition subexpr.h:22
@ LANG_TOP
Definition subexpr.h:22
long body_start
Definition subexpr.h:31
short ref
Definition subexpr.h:60
struct proc_object o
Definition subexpr.h:49
long body_end
Definition subexpr.h:32
int body_lineno
Definition subexpr.h:34
libstack * libstackv
Definition subexpr.h:159
BOOLEAN(* function)(leftv res, leftv v)
Definition subexpr.h:42
int name
New type name for int.
int dim(ideal I, ring r)