Macros | Functions | Variables
blackbox.cc File Reference
#include <kernel/mod2.h>
#include <misc/auxiliary.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 op, leftv, leftv r1, leftv)
 default procedure blackboxDefaultOp2, to be called as "default:" branch More...
 
BOOLEAN blackboxDefaultOp3 (int op, leftv, leftv r1, 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

#define BLACKBOX_OFFSET   (MAX_TOK+1)

Definition at line 19 of file blackbox.cc.

#define MAX_BB_TYPES   256

Definition at line 13 of file blackbox.cc.

Function Documentation

BOOLEAN blackbox_default_Check ( blackbox *  ,
leftv  ,
leftv   
)

Definition at line 124 of file blackbox.cc.

125 {
126  return FALSE;
127 }
#define FALSE
Definition: auxiliary.h:140
void* blackbox_default_Copy ( blackbox *  ,
void *   
)

Definition at line 38 of file blackbox.cc.

39 {
40  WerrorS("missing blackbox_Copy");
41  return NULL;
42 }
void WerrorS(const char *s)
Definition: feFopen.cc:24
#define NULL
Definition: omList.c:10
BOOLEAN blackbox_default_deserialize ( blackbox **  ,
void **  ,
si_link   
)

Definition at line 60 of file blackbox.cc.

61 {
62  WerrorS("blackbox_deserialize is not implemented");
63  return TRUE;
64 }
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:24
void blackbox_default_destroy ( blackbox *  ,
void *   
)

Definition at line 29 of file blackbox.cc.

30 {
31  WerrorS("missing blackbox_destroy");
32 }
void WerrorS(const char *s)
Definition: feFopen.cc:24
void* blackbox_default_Init ( blackbox *  )

Definition at line 49 of file blackbox.cc.

50 {
51  return NULL;
52 }
#define NULL
Definition: omList.c:10
void blackbox_default_Print ( blackbox *  b,
void *  d 
)

default procedure blackbox_default_Print: print the string

Definition at line 43 of file blackbox.cc.

44 {
45  char *s=b->blackbox_String(b,d);
46  PrintS(s);
47  omFree(s);
48 }
const CanonicalForm int s
Definition: facAbsFact.cc:55
#define omFree(addr)
Definition: omAllocDecl.h:261
void PrintS(const char *s)
Definition: reporter.cc:294
const poly b
Definition: syzextra.cc:213
BOOLEAN blackbox_default_serialize ( blackbox *  ,
void *  ,
si_link   
)

Definition at line 54 of file blackbox.cc.

55 {
56  WerrorS("blackbox_serialize is not implemented");
57  return TRUE;
58 }
#define TRUE
Definition: auxiliary.h:144
void WerrorS(const char *s)
Definition: feFopen.cc:24
char* blackbox_default_String ( blackbox *  ,
void *   
)

Definition at line 33 of file blackbox.cc.

34 {
35  WerrorS("missing blackbox_String");
36  return omStrDup("");
37 }
void WerrorS(const char *s)
Definition: feFopen.cc:24
#define omStrDup(s)
Definition: omAllocDecl.h:263
BOOLEAN blackboxDefaultOp1 ( int  op,
leftv  l,
leftv  r 
)

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

Definition at line 66 of file blackbox.cc.

67 {
68  if (op==TYPEOF_CMD)
69  {
70  l->data=omStrDup(getBlackboxName(r->Typ()));
71  l->rtyp=STRING_CMD;
72  return FALSE;
73  }
74  else if (op==NAMEOF_CMD)
75  {
76  if (r->name==NULL) l->data=omStrDup("");
77  else l->data=omStrDup(r->name);
78  l->rtyp=STRING_CMD;
79  return FALSE;
80  }
81 
82  return TRUE;
83 }
#define FALSE
Definition: auxiliary.h:140
#define TRUE
Definition: auxiliary.h:144
int Typ()
Definition: subexpr.cc:976
void * data
Definition: subexpr.h:89
const char * name
Definition: subexpr.h:88
#define NULL
Definition: omList.c:10
int rtyp
Definition: subexpr.h:92
const char * getBlackboxName(const int t)
return the name to the type given by t (r/o)
Definition: blackbox.cc:187
#define omStrDup(s)
Definition: omAllocDecl.h:263
BOOLEAN blackboxDefaultOp2 ( int  op,
leftv  ,
leftv  r1,
leftv   
)

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

Definition at line 85 of file blackbox.cc.

86 {
87  return TRUE;
88 }
#define TRUE
Definition: auxiliary.h:144
BOOLEAN blackboxDefaultOp3 ( int  op,
leftv  ,
leftv  r1,
leftv  ,
leftv   
)

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

Definition at line 90 of file blackbox.cc.

91 {
92  return TRUE;
93 }
#define TRUE
Definition: auxiliary.h:144
BOOLEAN blackboxDefaultOpM ( int  op,
leftv  res,
leftv  args 
)

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

Definition at line 95 of file blackbox.cc.

96 {
97  if (op==LIST_CMD)
98  {
99  res->rtyp=LIST_CMD;
100  return jjLIST_PL(res,args);
101  }
102  else if(op==STRING_CMD)
103  {
104  blackbox *b=getBlackboxStuff(args->Typ());
105  res->data=b->blackbox_String(b,args->Data());
106  res->rtyp=STRING_CMD;
107  args=args->next;
108  if(args!=NULL)
109  {
110  sleftv res2;
111  int ret=iiExprArithM(&res2,args,op);
112  if (ret) return TRUE;
113  char *s2=(char*)omAlloc(strlen((char*)res->data)+strlen((char*)res2.data)+1);
114  sprintf(s2,"%s%s",(char*)res->data,(char*)res2.data);
115  omFree(res2.data);
116  omFree(res->data);
117  res->data=s2;
118  }
119  return FALSE;
120  }
121  return TRUE;
122 }
Class used for (list of) interpreter objects.
Definition: subexpr.h:83
#define FALSE
Definition: auxiliary.h:140
#define TRUE
Definition: auxiliary.h:144
BOOLEAN iiExprArithM(leftv res, leftv a, int op)
Definition: iparith.cc:8714
int Typ()
Definition: subexpr.cc:976
#define omAlloc(size)
Definition: omAllocDecl.h:210
void * data
Definition: subexpr.h:89
#define omFree(addr)
Definition: omAllocDecl.h:261
leftv next
Definition: subexpr.h:87
BOOLEAN jjLIST_PL(leftv res, leftv v)
Definition: iparith.cc:7495
#define NULL
Definition: omList.c:10
int rtyp
Definition: subexpr.h:92
void * Data()
Definition: subexpr.cc:1118
Definition: tok.h:120
const poly b
Definition: syzextra.cc:213
blackbox * getBlackboxStuff(const int t)
return the structure to the type given by t
Definition: blackbox.cc:20
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 193 of file blackbox.cc.

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

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

Definition at line 187 of file blackbox.cc.

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

return the structure to the type given by t

Definition at line 20 of file blackbox.cc.

21 {
22  if (t>MAX_TOK) /*MAX_TOK+1 is BLACKBOX_OFFSET*/
23  return (blackboxTable[t-BLACKBOX_OFFSET]);
24  else
25  return NULL;
26 }
static blackbox * blackboxTable[MAX_BB_TYPES]
Definition: blackbox.cc:16
Definition: tok.h:217
#define BLACKBOX_OFFSET
Definition: blackbox.cc:19
#define NULL
Definition: omList.c:10
void printBlackboxTypes ( )

list all defined type (for debugging)

Definition at line 210 of file blackbox.cc.

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

Definition at line 180 of file blackbox.cc.

181 {
186 }
static blackbox * blackboxTable[MAX_BB_TYPES]
Definition: blackbox.cc:16
#define BLACKBOX_OFFSET
Definition: blackbox.cc:19
#define omfree(addr)
Definition: omAllocDecl.h:237
static char * blackboxName[MAX_BB_TYPES]
Definition: blackbox.cc:17
#define NULL
Definition: omList.c:10
int setBlackboxStuff ( blackbox *  bb,
const char *  n 
)

define a new type

Definition at line 128 of file blackbox.cc.

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

Variable Documentation

char* blackboxName[MAX_BB_TYPES]
static

Definition at line 17 of file blackbox.cc.

blackbox* blackboxTable[MAX_BB_TYPES]
static

Definition at line 16 of file blackbox.cc.

int blackboxTableCnt =0
static

Definition at line 18 of file blackbox.cc.