Macros | Functions | Variables
blackbox.cc File Reference
#include <kernel/mod2.h>
#include "tok.h"
#include "subexpr.h"
#include "ipshell.h"
#include "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 More...
 
void blackbox_default_destroy (blackbox *, void *)
 
char * blackbox_default_String (blackbox *, void *)
 
void * blackbox_default_Copy (blackbox *, void *)
 
void blackbox_default_Print (blackbox *b, void *d)
 default procedure blackbox_default_Print: print the string More...
 
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 More...
 
BOOLEAN blackboxDefaultOp2 (int, leftv, leftv, leftv)
 default procedure blackboxDefaultOp2, to be called as "default:" branch More...
 
BOOLEAN blackboxDefaultOp3 (int, leftv, leftv, leftv, leftv)
 default procedure blackboxDefaultOp3, to be called as "default:" branch More...
 
BOOLEAN blackboxDefaultOpM (int op, leftv res, leftv args)
 default procedure blackboxDefaultOpM, to be called as "default:" branch More...
 
BOOLEAN blackbox_default_Check (blackbox *, leftv, leftv)
 
int setBlackboxStuff (blackbox *bb, const char *n)
 define a new type More...
 
void removeBlackboxStuff (const int rt)
 
const char * getBlackboxName (const int t)
 return the name to the type given by t (r/o) More...
 
int blackboxIsCmd (const char *n, int &tok)
 used by scanner: returns ROOT_DECL for known types (and the type number in tok) More...
 
void printBlackboxTypes ()
 list all defined type (for debugging) More...
 

Variables

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

Macro Definition Documentation

◆ BLACKBOX_OFFSET

#define BLACKBOX_OFFSET   (MAX_TOK+1)

Definition at line 15 of file blackbox.cc.

◆ MAX_BB_TYPES

#define MAX_BB_TYPES   256

Definition at line 9 of file blackbox.cc.

Function Documentation

◆ blackbox_default_Check()

BOOLEAN blackbox_default_Check ( blackbox *  ,
leftv  ,
leftv   
)

Definition at line 122 of file blackbox.cc.

123 {
124  return FALSE;
125 }
#define FALSE
Definition: auxiliary.h:94

◆ blackbox_default_Copy()

void* blackbox_default_Copy ( blackbox *  ,
void *   
)

Definition at line 34 of file blackbox.cc.

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

◆ blackbox_default_deserialize()

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

Definition at line 56 of file blackbox.cc.

57 {
58  WerrorS("blackbox_deserialize is not implemented");
59  return TRUE;
60 }
#define TRUE
Definition: auxiliary.h:98
void WerrorS(const char *s)
Definition: feFopen.cc:24

◆ blackbox_default_destroy()

void blackbox_default_destroy ( blackbox *  ,
void *   
)

Definition at line 25 of file blackbox.cc.

26 {
27  WerrorS("missing blackbox_destroy");
28 }
void WerrorS(const char *s)
Definition: feFopen.cc:24

◆ blackbox_default_Init()

void* blackbox_default_Init ( blackbox *  )

Definition at line 45 of file blackbox.cc.

46 {
47  return NULL;
48 }
#define NULL
Definition: omList.c:10

◆ blackbox_default_Print()

void blackbox_default_Print ( blackbox *  b,
void *  d 
)

default procedure blackbox_default_Print: print the string

Definition at line 39 of file blackbox.cc.

40 {
41  char *s=b->blackbox_String(b,d);
42  PrintS(s);
43  omFree(s);
44 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
#define omFree(addr)
Definition: omAllocDecl.h:261
void PrintS(const char *s)
Definition: reporter.cc:284
const poly b
Definition: syzextra.cc:213

◆ blackbox_default_serialize()

BOOLEAN blackbox_default_serialize ( blackbox *  ,
void *  ,
si_link   
)

Definition at line 50 of file blackbox.cc.

51 {
52  WerrorS("blackbox_serialize is not implemented");
53  return TRUE;
54 }
#define TRUE
Definition: auxiliary.h:98
void WerrorS(const char *s)
Definition: feFopen.cc:24

◆ blackbox_default_String()

char* blackbox_default_String ( blackbox *  ,
void *   
)

Definition at line 29 of file blackbox.cc.

30 {
31  WerrorS("missing blackbox_String");
32  return omStrDup("");
33 }
void WerrorS(const char *s)
Definition: feFopen.cc:24
#define omStrDup(s)
Definition: omAllocDecl.h:263

◆ blackboxDefaultOp1()

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

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

Definition at line 62 of file blackbox.cc.

63 {
64  if (op==TYPEOF_CMD)
65  {
66  l->data=omStrDup(getBlackboxName(r->Typ()));
67  l->rtyp=STRING_CMD;
68  return FALSE;
69  }
70  else if (op==NAMEOF_CMD)
71  {
72  if (r->name==NULL) l->data=omStrDup("");
73  else l->data=omStrDup(r->name);
74  l->rtyp=STRING_CMD;
75  return FALSE;
76  }
77 
78  return TRUE;
79 }
#define FALSE
Definition: auxiliary.h:94
#define TRUE
Definition: auxiliary.h:98
const ring r
Definition: syzextra.cc:208
#define NULL
Definition: omList.c:10
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
Definition: blackbox.cc:185
int l
Definition: cfEzgcd.cc:94
#define omStrDup(s)
Definition: omAllocDecl.h:263

◆ blackboxDefaultOp2()

BOOLEAN blackboxDefaultOp2 ( int  ,
leftv  ,
leftv  ,
leftv   
)

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

Definition at line 81 of file blackbox.cc.

82 {
83  return TRUE;
84 }
#define TRUE
Definition: auxiliary.h:98

◆ blackboxDefaultOp3()

BOOLEAN blackboxDefaultOp3 ( int  ,
leftv  ,
leftv  ,
leftv  ,
leftv   
)

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

Definition at line 86 of file blackbox.cc.

87 {
88  return TRUE;
89 }
#define TRUE
Definition: auxiliary.h:98

◆ blackboxDefaultOpM()

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

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

Definition at line 91 of file blackbox.cc.

92 {
93  if (op==LIST_CMD)
94  {
95  res->rtyp=LIST_CMD;
96  BOOLEAN bo=jjLIST_PL(res,args);
97  args->CleanUp();
98  return bo;
99  }
100  else if(op==STRING_CMD)
101  {
102  blackbox *b=getBlackboxStuff(args->Typ());
103  res->data=b->blackbox_String(b,args->Data());
104  res->rtyp=STRING_CMD;
105  args=args->next;
106  if(args!=NULL)
107  {
108  sleftv res2;
109  int ret=iiExprArithM(&res2,args,op);
110  if (ret) return TRUE;
111  char *s2=(char*)omAlloc(strlen((char*)res->data)+strlen((char*)res2.data)+1);
112  sprintf(s2,"%s%s",(char*)res->data,(char*)res2.data);
113  omFree(res2.data);
114  omFree(res->data);
115  res->data=s2;
116  }
117  return FALSE;
118  }
119  return TRUE;
120 }
Class used for (list of) interpreter objects.
Definition: subexpr.h:82
#define FALSE
Definition: auxiliary.h:94
#define TRUE
Definition: auxiliary.h:98
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
Definition: iparith.cc:8621
int Typ()
Definition: subexpr.cc:995
#define omAlloc(size)
Definition: omAllocDecl.h:210
void * data
Definition: subexpr.h:88
poly res
Definition: myNF.cc:322
#define omFree(addr)
Definition: omAllocDecl.h:261
leftv next
Definition: subexpr.h:86
BOOLEAN jjLIST_PL(leftv res, leftv v)
Definition: iparith.cc:7374
#define NULL
Definition: omList.c:10
void CleanUp(ring r=currRing)
Definition: subexpr.cc:332
void * Data()
Definition: subexpr.cc:1137
Definition: tok.h:117
int BOOLEAN
Definition: auxiliary.h:85
const poly b
Definition: syzextra.cc:213
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
Definition: blackbox.cc:16

◆ 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 191 of file blackbox.cc.

192 {
193  for(int i=blackboxTableCnt-1;i>=0;i--)
194  {
195  if(strcmp(n,blackboxName[i])==0)
196  {
197 #ifdef BLACKBOX_DEVEL
198  Print("blackboxIsCmd: found bb:%s:%d (table:%d)\n",n,i+BLACKBOX_OFFSET,i);
199 #endif
200  tok=i+BLACKBOX_OFFSET;
201  return ROOT_DECL;
202  }
203  }
204  tok=0;
205  return 0;
206 }
#define Print
Definition: emacs.cc:83
static int blackboxTableCnt
Definition: blackbox.cc:14
#define BLACKBOX_OFFSET
Definition: blackbox.cc:15
int i
Definition: cfEzgcd.cc:123
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:13

◆ getBlackboxName()

const char* getBlackboxName ( const int  t)

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

Definition at line 185 of file blackbox.cc.

186 {
187  char *b=blackboxName[t-BLACKBOX_OFFSET];
188  if (b!=NULL) return b;
189  else return "";
190 }
#define BLACKBOX_OFFSET
Definition: blackbox.cc:15
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:13
#define NULL
Definition: omList.c:10
const poly b
Definition: syzextra.cc:213

◆ getBlackboxStuff()

blackbox* getBlackboxStuff ( const int  t)

return the structure to the type given by t

Definition at line 16 of file blackbox.cc.

17 {
18  if (t>MAX_TOK) /*MAX_TOK+1 is BLACKBOX_OFFSET*/
19  return (blackboxTable[t-BLACKBOX_OFFSET]);
20  else
21  return NULL;
22 }
static blackbox * blackboxTable[MAX_BB_TYPES]
Definition: blackbox.cc:12
Definition: tok.h:213
#define BLACKBOX_OFFSET
Definition: blackbox.cc:15
#define NULL
Definition: omList.c:10

◆ printBlackboxTypes()

void printBlackboxTypes ( )

list all defined type (for debugging)

Definition at line 208 of file blackbox.cc.

209 {
210  for(int i=blackboxTableCnt-1;i>=0;i--)
211  {
212  if (blackboxName[i]!=NULL)
213  Print("type %d: %s\n",i,blackboxName[i]);
214  }
215 }
#define Print
Definition: emacs.cc:83
static int blackboxTableCnt
Definition: blackbox.cc:14
int i
Definition: cfEzgcd.cc:123
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:13
#define NULL
Definition: omList.c:10

◆ removeBlackboxStuff()

void removeBlackboxStuff ( const int  rt)

Definition at line 178 of file blackbox.cc.

179 {
184 }
static blackbox * blackboxTable[MAX_BB_TYPES]
Definition: blackbox.cc:12
#define BLACKBOX_OFFSET
Definition: blackbox.cc:15
#define omfree(addr)
Definition: omAllocDecl.h:237
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:13
#define NULL
Definition: omList.c:10

◆ setBlackboxStuff()

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

define a new type

Definition at line 126 of file blackbox.cc.

127 {
128  int where=-1;
130  {
131  // second try, find empty slot from removed bb:
132  for (int i=0;i<MAX_BB_TYPES;i++)
133  {
134  if (blackboxTable[i]==NULL) { where=i; break; }
135  }
136  }
137  else
138  {
139  where=blackboxTableCnt;
141  }
142  if (where==-1)
143  {
144  WerrorS("too many bb types defined");
145  return 0;
146  }
147  else
148  {
149  // check for alreday defined bb:
150  for (int i=0;i<MAX_BB_TYPES;i++)
151  {
152  if ((blackboxName[i]!=NULL) && (strcmp(blackboxName[i],n)==0))
153  {
154  Warn("redefining blackbox type %s (%d -> %d)",n,i+BLACKBOX_OFFSET,where+BLACKBOX_OFFSET);
155  }
156  }
157  blackboxTable[where]=bb;
158  blackboxName[where]=omStrDup(n);
159 #ifdef BLACKBOX_DEVEL
160  Print("setBlackboxStuff: define bb:name=%s:rt=%d (table:cnt=%d)\n",blackboxName[where],where+BLACKBOX_OFFSET,where);
161 #endif
162  if (bb->blackbox_destroy==NULL) bb->blackbox_destroy=blackbox_default_destroy;
163  if (bb->blackbox_String==NULL) bb->blackbox_String=blackbox_default_String;
164  if (bb->blackbox_Print==NULL) bb->blackbox_Print=blackbox_default_Print;
165  if (bb->blackbox_Init==NULL) bb->blackbox_Init=blackbox_default_Init;
166  if (bb->blackbox_Copy==NULL) bb->blackbox_Copy=blackbox_default_Copy;
167  if (bb->blackbox_Op1==NULL) bb->blackbox_Op1=blackboxDefaultOp1;
168  if (bb->blackbox_Op2==NULL) bb->blackbox_Op2=blackboxDefaultOp2;
169  if (bb->blackbox_Op3==NULL) bb->blackbox_Op3=blackboxDefaultOp3;
170  if (bb->blackbox_OpM==NULL) bb->blackbox_OpM=blackboxDefaultOpM;
171  if (bb->blackbox_CheckAssign==NULL) bb->blackbox_CheckAssign=blackbox_default_Check;
172  if (bb->blackbox_serialize==NULL) bb->blackbox_serialize=blackbox_default_serialize;
173  if (bb->blackbox_deserialize==NULL) bb->blackbox_deserialize=blackbox_default_deserialize;
174  return where+BLACKBOX_OFFSET;
175  }
176 }
void blackbox_default_Print(blackbox *b, void *d)
default procedure blackbox_default_Print: print the string
Definition: blackbox.cc:39
char * blackbox_default_String(blackbox *, void *)
Definition: blackbox.cc:29
BOOLEAN blackbox_default_Check(blackbox *, leftv, leftv)
Definition: blackbox.cc:122
#define Print
Definition: emacs.cc:83
BOOLEAN blackbox_default_serialize(blackbox *, void *, si_link)
Definition: blackbox.cc:50
static int blackboxTableCnt
Definition: blackbox.cc:14
static blackbox * blackboxTable[MAX_BB_TYPES]
Definition: blackbox.cc:12
void WerrorS(const char *s)
Definition: feFopen.cc:24
BOOLEAN blackboxDefaultOp2(int, leftv, leftv, leftv)
default procedure blackboxDefaultOp2, to be called as "default:" branch
Definition: blackbox.cc:81
#define BLACKBOX_OFFSET
Definition: blackbox.cc:15
BOOLEAN blackboxDefaultOp3(int, leftv, leftv, leftv, leftv)
default procedure blackboxDefaultOp3, to be called as "default:" branch
Definition: blackbox.cc:86
BOOLEAN blackbox_default_deserialize(blackbox **, void **, si_link)
Definition: blackbox.cc:56
BOOLEAN blackboxDefaultOp1(int op, leftv l, leftv r)
default procedure blackboxDefaultOp1, to be called as "default:" branch
Definition: blackbox.cc:62
int i
Definition: cfEzgcd.cc:123
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:13
#define NULL
Definition: omList.c:10
void * blackbox_default_Init(blackbox *)
Definition: blackbox.cc:45
void * blackbox_default_Copy(blackbox *, void *)
Definition: blackbox.cc:34
BOOLEAN blackboxDefaultOpM(int op, leftv res, leftv args)
default procedure blackboxDefaultOpM, to be called as "default:" branch
Definition: blackbox.cc:91
#define MAX_BB_TYPES
Definition: blackbox.cc:9
void blackbox_default_destroy(blackbox *, void *)
Definition: blackbox.cc:25
#define Warn
Definition: emacs.cc:80
#define omStrDup(s)
Definition: omAllocDecl.h:263

Variable Documentation

◆ blackboxName

char* blackboxName[MAX_BB_TYPES]
static

Definition at line 13 of file blackbox.cc.

◆ blackboxTable

blackbox* blackboxTable[MAX_BB_TYPES]
static

Definition at line 12 of file blackbox.cc.

◆ blackboxTableCnt

int blackboxTableCnt =0
static

Definition at line 14 of file blackbox.cc.