My Project
Loading...
Searching...
No Matches
blackbox.cc File Reference
#include "kernel/mod2.h"
#include "Singular/tok.h"
#include "Singular/subexpr.h"
#include "Singular/ipshell.h"
#include "Singular/ipid.h"
#include "Singular/blackbox.h"

Go to the source code of this file.

Macros

#define MAX_BB_TYPES   256
 
#define BLACKBOX_OFFSET   (MAX_TOK+1)
 

Functions

blackbox * getBlackboxStuff (const int t)
 return the structure to the type given by t
 
void blackbox_default_destroy (blackbox *, void *)
 
char * blackbox_default_String (blackbox *, void *)
 
void * blackbox_default_Copy (blackbox *, void *)
 
BOOLEAN blackbox_default_Assign (leftv l, leftv r)
 
void blackbox_default_Print (blackbox *b, void *d)
 default procedure blackbox_default_Print: print the string
 
void * blackbox_default_Init (blackbox *)
 
BOOLEAN blackbox_default_serialize (blackbox *, void *, si_link)
 
BOOLEAN blackbox_default_deserialize (blackbox **, void **, si_link)
 
BOOLEAN blackboxDefaultOp1 (int op, leftv l, leftv r)
 default procedure blackboxDefaultOp1, to be called as "default:" branch
 
BOOLEAN blackboxDefaultOp2 (int, leftv, leftv, leftv)
 default procedure blackboxDefaultOp2, to be called as "default:" branch
 
BOOLEAN blackboxDefaultOp3 (int, leftv, leftv, leftv, leftv)
 default procedure blackboxDefaultOp3, to be called as "default:" branch
 
BOOLEAN blackboxDefaultOpM (int op, leftv res, leftv args)
 default procedure blackboxDefaultOpM, to be called as "default:" branch
 
BOOLEAN blackbox_default_Check (blackbox *, leftv, leftv)
 
int setBlackboxStuff (blackbox *bb, const char *n)
 define a new type
 
void removeBlackboxStuff (const int rt)
 
const char * getBlackboxName (const int t)
 return the name to the type given by t (r/o)
 
int blackboxIsCmd (const char *n, int &tok)
 used by scanner: returns ROOT_DECL for known types (and the type number in tok)
 
void printBlackboxTypes ()
 list all defined type (for debugging)
 
struct blackbox_listgetBlackboxTypes ()
 return array of all define types.
 

Variables

static GLOBAL_VAR blackbox * blackboxTable [MAX_BB_TYPES]
 
static GLOBAL_VAR char * blackboxName [MAX_BB_TYPES]
 
static GLOBAL_VAR int blackboxTableCnt =0
 

Macro Definition Documentation

◆ BLACKBOX_OFFSET

#define BLACKBOX_OFFSET   (MAX_TOK+1)

Definition at line 16 of file blackbox.cc.

◆ MAX_BB_TYPES

#define MAX_BB_TYPES   256

Definition at line 10 of file blackbox.cc.

Function Documentation

◆ blackbox_default_Assign()

BOOLEAN blackbox_default_Assign ( leftv l,
leftv r )

Definition at line 40 of file blackbox.cc.

41{
42 int lt=l->Typ();
43 blackbox* b=getBlackboxStuff(lt);
44 if ((lt==r->Typ())
45 && (l->Data()!=r->Data()))
46 {
47 b->blackbox_destroy(b,(void*)l->Data());
48 if (l->rtyp==IDHDL)
49 IDDATA((idhdl)l->data)=(char*)b->blackbox_Copy(b,r->Data());
50 else
51 l->data=b->blackbox_Copy(b,r->Data());
52 }
53 return FALSE;
54}
#define FALSE
Definition auxiliary.h:97
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
Definition blackbox.cc:17
int l
Definition cfEzgcd.cc:100
CanonicalForm b
Definition cfModGcd.cc:4111
int Typ()
Definition subexpr.cc:1048
void * Data()
Definition subexpr.cc:1192
#define IDDATA(a)
Definition ipid.h:126
idrec * idhdl
Definition ring.h:22
#define IDHDL
Definition tok.h:31

◆ blackbox_default_Check()

BOOLEAN blackbox_default_Check ( blackbox * ,
leftv ,
leftv  )

Definition at line 139 of file blackbox.cc.

140{
141 return FALSE;
142}

◆ blackbox_default_Copy()

void * blackbox_default_Copy ( blackbox * ,
void *  )

Definition at line 35 of file blackbox.cc.

36{
37 WerrorS("missing blackbox_Copy");
38 return NULL;
39}
void WerrorS(const char *s)
Definition feFopen.cc:24
#define NULL
Definition omList.c:12

◆ blackbox_default_deserialize()

BOOLEAN blackbox_default_deserialize ( blackbox ** ,
void ** ,
si_link  )

Definition at line 72 of file blackbox.cc.

73{
74 WerrorS("blackbox_deserialize is not implemented");
75 return TRUE;
76}
#define TRUE
Definition auxiliary.h:101

◆ blackbox_default_destroy()

void blackbox_default_destroy ( blackbox * ,
void *  )

Definition at line 26 of file blackbox.cc.

27{
28 WerrorS("missing blackbox_destroy");
29}

◆ blackbox_default_Init()

void * blackbox_default_Init ( blackbox * )

Definition at line 61 of file blackbox.cc.

62{
63 return NULL;
64}

◆ blackbox_default_Print()

void blackbox_default_Print ( blackbox * b,
void * d )

default procedure blackbox_default_Print: print the string

Definition at line 55 of file blackbox.cc.

56{
57 char *s=b->blackbox_String(b,d);
58 PrintS(s);
59 omFree(s);
60}
const CanonicalForm int s
Definition facAbsFact.cc:51
#define omFree(addr)
void PrintS(const char *s)
Definition reporter.cc:284

◆ blackbox_default_serialize()

BOOLEAN blackbox_default_serialize ( blackbox * ,
void * ,
si_link  )

Definition at line 66 of file blackbox.cc.

67{
68 WerrorS("blackbox_serialize is not implemented");
69 return TRUE;
70}

◆ blackbox_default_String()

char * blackbox_default_String ( blackbox * ,
void *  )

Definition at line 30 of file blackbox.cc.

31{
32 WerrorS("missing blackbox_String");
33 return omStrDup("");
34}
#define omStrDup(s)

◆ blackboxDefaultOp1()

BOOLEAN blackboxDefaultOp1 ( int op,
leftv l,
leftv r )

default procedure blackboxDefaultOp1, to be called as "default:" branch

Definition at line 78 of file blackbox.cc.

79{
80 if (op==TYPEOF_CMD)
81 {
82 l->data=omStrDup(getBlackboxName(r->Typ()));
83 l->rtyp=STRING_CMD;
84 return FALSE;
85 }
86 else if (op==NAMEOF_CMD)
87 {
88 if (r->name==NULL) l->data=omStrDup("");
89 else l->data=omStrDup(r->name);
90 l->rtyp=STRING_CMD;
91 return FALSE;
92 }
93
94 return TRUE;
95}
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
Definition blackbox.cc:213
const char * name
Definition subexpr.h:87
@ NAMEOF_CMD
Definition tok.h:135
@ TYPEOF_CMD
Definition tok.h:196
@ STRING_CMD
Definition tok.h:187

◆ blackboxDefaultOp2()

BOOLEAN blackboxDefaultOp2 ( int op,
leftv l,
leftv r1,
leftv r2 )

default procedure blackboxDefaultOp2, to be called as "default:" branch

Definition at line 97 of file blackbox.cc.

98{
99 return TRUE;
100}

◆ blackboxDefaultOp3()

BOOLEAN blackboxDefaultOp3 ( int op,
leftv l,
leftv r1,
leftv r2,
leftv r3 )

default procedure blackboxDefaultOp3, to be called as "default:" branch

Definition at line 102 of file blackbox.cc.

103{
104 return TRUE;
105}

◆ blackboxDefaultOpM()

BOOLEAN blackboxDefaultOpM ( int op,
leftv res,
leftv args )

default procedure blackboxDefaultOpM, to be called as "default:" branch

Definition at line 107 of file blackbox.cc.

108{
109 if (op==LIST_CMD)
110 {
111 res->rtyp=LIST_CMD;
112 BOOLEAN bo=jjLIST_PL(res,args);
113 args->CleanUp();
114 return bo;
115 }
116 else if(op==STRING_CMD)
117 {
118 blackbox *b=getBlackboxStuff(args->Typ());
119 res->data=b->blackbox_String(b,args->Data());
120 res->rtyp=STRING_CMD;
121 args=args->next;
122 if(args!=NULL)
123 {
124 sleftv res2;
125 int ret=iiExprArithM(&res2,args,op);
126 if (ret) return TRUE;
127 size_t len=strlen((char*)res->data)+strlen((char*)res2.data)+1;
128 char *s2=(char*)omAlloc(len);
129 snprintf(s2,len,"%s%s",(char*)res->data,(char*)res2.data);
130 omFree(res2.data);
131 omFree(res->data);
132 res->data=s2;
133 }
134 return FALSE;
135 }
136 return TRUE;
137}
int BOOLEAN
Definition auxiliary.h:88
Class used for (list of) interpreter objects.
Definition subexpr.h:83
leftv next
Definition subexpr.h:86
void * data
Definition subexpr.h:88
void CleanUp(ring r=currRing)
Definition subexpr.cc:351
CanonicalForm res
Definition facAbsFact.cc:60
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
Definition iparith.cc:9631
BOOLEAN jjLIST_PL(leftv res, leftv v)
Definition iparith.cc:8216
#define omAlloc(size)
@ LIST_CMD
Definition tok.h:118

◆ blackboxIsCmd()

int blackboxIsCmd ( const char * n,
int & tok )

used by scanner: returns ROOT_DECL for known types (and the type number in tok)

Definition at line 219 of file blackbox.cc.

220{
221 for(int i=blackboxTableCnt-1;i>=0;i--)
222 {
223 if(strcmp(n,blackboxName[i])==0)
224 {
225#ifdef BLACKBOX_DEVEL
226 Print("blackboxIsCmd: found bb:%s:%d (table:%d)\n",n,i+BLACKBOX_OFFSET,i);
227#endif
228 tok=i+BLACKBOX_OFFSET;
229 return ROOT_DECL;
230 }
231 }
232 tok=0;
233 return 0;
234}
static GLOBAL_VAR char * blackboxName[MAX_BB_TYPES]
Definition blackbox.cc:14
static GLOBAL_VAR int blackboxTableCnt
Definition blackbox.cc:15
#define BLACKBOX_OFFSET
Definition blackbox.cc:16
int i
Definition cfEzgcd.cc:132
#define Print
Definition emacs.cc:80
@ ROOT_DECL
Definition grammar.cc:320

◆ getBlackboxName()

const char * getBlackboxName ( const int t)

return the name to the type given by t (r/o)

Definition at line 213 of file blackbox.cc.

214{
216 if (b!=NULL) return b;
217 else return "";
218}

◆ getBlackboxStuff()

blackbox * getBlackboxStuff ( const int t)

return the structure to the type given by t

Definition at line 17 of file blackbox.cc.

18{
19 if (t>MAX_TOK) /*MAX_TOK+1 is BLACKBOX_OFFSET*/
21 else
22 return NULL;
23}
static GLOBAL_VAR blackbox * blackboxTable[MAX_BB_TYPES]
Definition blackbox.cc:13
@ MAX_TOK
Definition tok.h:220

◆ getBlackboxTypes()

struct blackbox_list * getBlackboxTypes ( )

return array of all define types.

Definition at line 245 of file blackbox.cc.

246{
247 int i = 0;
248 void **l = (void **)omalloc0(blackboxTableCnt * sizeof(void *));
249 struct blackbox_list *list_struct = (struct blackbox_list *) omAlloc0(sizeof(struct blackbox_list));
250 list_struct->count = blackboxTableCnt;
251 list_struct->list = l;
252
253 for (i = blackboxTableCnt-1; i >= 0 ;i--)
254 {
255 if (blackboxName[i]!=NULL) {
256 l[i] = (void *)omStrDup(blackboxName[i]);
257 //Print("type %d: %s\n",i,blackboxName[i]);
258 } else {
259 l[i] = NULL;
260 }
261 }
262 return list_struct;
263}
void ** list
Definition blackbox.h:86
struct for containing list of blackbox names and the number of them.
Definition blackbox.h:84
#define omalloc0(size)
#define omAlloc0(size)

◆ printBlackboxTypes()

void printBlackboxTypes ( )

list all defined type (for debugging)

Definition at line 236 of file blackbox.cc.

237{
238 for(int i=blackboxTableCnt-1;i>=0;i--)
239 {
240 if (blackboxName[i]!=NULL)
241 Print("type %d: %s\n",i+BLACKBOX_OFFSET,blackboxName[i]);
242 }
243}

◆ removeBlackboxStuff()

void removeBlackboxStuff ( const int rt)

Definition at line 206 of file blackbox.cc.

◆ setBlackboxStuff()

int setBlackboxStuff ( blackbox * bb,
const char * n )

define a new type

Definition at line 143 of file blackbox.cc.

144{
145 int where = -1;
146 for (int i=0;i<MAX_BB_TYPES;i++)
147 {
148 if (blackboxTable[i]!=NULL && strcmp(blackboxName[i],n)==0) {
149 where = i;
150 break;
151 }
152 }
153 if (where < 0) {
155 {
156 // second try, find empty slot from removed bb:
157 for (int i=0;i<MAX_BB_TYPES;i++)
158 {
159 if (blackboxTable[i]==NULL) { where=i; break; }
160 }
161 }
162 else
163 {
164 where=blackboxTableCnt;
166 }
167 }
168 if (where==-1)
169 {
170 WerrorS("too many bb types defined");
171 return 0;
172 }
173 else
174 {
175 // check for alreday defined bb:
176 for (int i=0;i<MAX_BB_TYPES;i++)
177 {
178 if ((blackboxName[i]!=NULL) && (strcmp(blackboxName[i],n)==0))
179 {
180 Warn("not redefining blackbox type %s (%d)",n,i+BLACKBOX_OFFSET);
181 return 0;
182 }
183 }
184 blackboxTable[where]=bb;
185 blackboxName[where]=omStrDup(n);
186#ifdef BLACKBOX_DEVEL
187 Print("setBlackboxStuff: define bb:name=%s:rt=%d (table:cnt=%d)\n",blackboxName[where],where+BLACKBOX_OFFSET,where);
188#endif
189 if (bb->blackbox_destroy==NULL) bb->blackbox_destroy=blackbox_default_destroy;
190 if (bb->blackbox_String==NULL) bb->blackbox_String=blackbox_default_String;
191 if (bb->blackbox_Print==NULL) bb->blackbox_Print=blackbox_default_Print;
192 if (bb->blackbox_Init==NULL) bb->blackbox_Init=blackbox_default_Init;
193 if (bb->blackbox_Copy==NULL) bb->blackbox_Copy=blackbox_default_Copy;
194 if (bb->blackbox_Assign==NULL) bb->blackbox_Assign=blackbox_default_Assign;
195 if (bb->blackbox_Op1==NULL) bb->blackbox_Op1=blackboxDefaultOp1;
196 if (bb->blackbox_Op2==NULL) bb->blackbox_Op2=blackboxDefaultOp2;
197 if (bb->blackbox_Op3==NULL) bb->blackbox_Op3=blackboxDefaultOp3;
198 if (bb->blackbox_OpM==NULL) bb->blackbox_OpM=blackboxDefaultOpM;
199 if (bb->blackbox_CheckAssign==NULL) bb->blackbox_CheckAssign=blackbox_default_Check;
200 if (bb->blackbox_serialize==NULL) bb->blackbox_serialize=blackbox_default_serialize;
201 if (bb->blackbox_deserialize==NULL) bb->blackbox_deserialize=blackbox_default_deserialize;
202 return where+BLACKBOX_OFFSET;
203 }
204}
BOOLEAN blackboxDefaultOp2(int, leftv, leftv, leftv)
default procedure blackboxDefaultOp2, to be called as "default:" branch
Definition blackbox.cc:97
void * blackbox_default_Copy(blackbox *, void *)
Definition blackbox.cc:35
char * blackbox_default_String(blackbox *, void *)
Definition blackbox.cc:30
BOOLEAN blackbox_default_serialize(blackbox *, void *, si_link)
Definition blackbox.cc:66
BOOLEAN blackboxDefaultOp3(int, leftv, leftv, leftv, leftv)
default procedure blackboxDefaultOp3, to be called as "default:" branch
Definition blackbox.cc:102
BOOLEAN blackbox_default_Check(blackbox *, leftv, leftv)
Definition blackbox.cc:139
BOOLEAN blackbox_default_Assign(leftv l, leftv r)
Definition blackbox.cc:40
void blackbox_default_Print(blackbox *b, void *d)
default procedure blackbox_default_Print: print the string
Definition blackbox.cc:55
void * blackbox_default_Init(blackbox *)
Definition blackbox.cc:61
BOOLEAN blackbox_default_deserialize(blackbox **, void **, si_link)
Definition blackbox.cc:72
void blackbox_default_destroy(blackbox *, void *)
Definition blackbox.cc:26
BOOLEAN blackboxDefaultOpM(int op, leftv res, leftv args)
default procedure blackboxDefaultOpM, to be called as "default:" branch
Definition blackbox.cc:107
BOOLEAN blackboxDefaultOp1(int op, leftv l, leftv r)
default procedure blackboxDefaultOp1, to be called as "default:" branch
Definition blackbox.cc:78
#define MAX_BB_TYPES
Definition blackbox.cc:10
#define Warn
Definition emacs.cc:77

Variable Documentation

◆ blackboxName

GLOBAL_VAR char* blackboxName[MAX_BB_TYPES]
static

Definition at line 14 of file blackbox.cc.

◆ blackboxTable

GLOBAL_VAR blackbox* blackboxTable[MAX_BB_TYPES]
static

Definition at line 13 of file blackbox.cc.

◆ blackboxTableCnt

GLOBAL_VAR int blackboxTableCnt =0
static

Definition at line 15 of file blackbox.cc.