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) markes the type field in iparith
94 * (S) markes 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
int BOOLEAN
Definition: auxiliary.h:87
#define FALSE
Definition: auxiliary.h:96
int l
Definition: cfEzgcd.cc:100
int p
Definition: cfModGcd.cc:4078
char * get()
Definition: subexpr.h:170
libstackv next
Definition: subexpr.h:164
int cnt
Definition: subexpr.h:167
char * libname
Definition: subexpr.h:165
BOOLEAN to_be_done
Definition: subexpr.h:166
Definition: attrib.h:21
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
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:3723
#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:202
static int RingDependend(int t)
Definition: gentable.cc:28
#define EXTERN_INST_VAR
Definition: globaldefs.h:9
#define EXTERN_VAR
Definition: globaldefs.h:6
@ END_RING
Definition: grammar.cc:310
@ BEGIN_RING
Definition: grammar.cc:282
BOOLEAN piKill(procinfov pi)
Definition: ipid.cc:747
const char * piProcinfo(procinfov pi, const char *request)
Definition: ipid.cc:723
STATIC_VAR Poly * h
Definition: janet.cc:971
ListNode * next
Definition: janet.h:31
#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
BOOLEAN(* function)(leftv res, leftv v)
Definition: subexpr.h:42
ip_package * package
Definition: structs.h:43
#define BITSET
Definition: structs.h:16
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:1570
VAR omBin libstack_bin
Definition: subexpr.cc:43
void s_internalDelete(const int t, void *d, const ring r)
Definition: subexpr.cc:514
INST_VAR sleftv sLastPrinted
Definition: subexpr.cc:46
BOOLEAN assumeStdFlag(leftv h)
Definition: subexpr.cc:1544
void syMakeMonom(leftv v, const char *id)
Definition: subexpr.cc:1862
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
EXTERN_VAR BOOLEAN siq
Definition: subexpr.h:76
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
procinfo * procinfov
Definition: subexpr.h:66
long body_end
Definition: subexpr.h:32
int body_lineno
Definition: subexpr.h:34
libstack * libstackv
Definition: subexpr.h:159
int name
New type name for int.
Definition: templateForC.h:21
int dim(ideal I, ring r)